<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Immanuel Gabriel</title>
    <description>The latest articles on DEV Community by Immanuel Gabriel (@immanuel_gabriel_341393bf).</description>
    <link>https://dev.to/immanuel_gabriel_341393bf</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3925833%2F70ffd687-29d3-4439-9c7f-20750f1b958f.png</url>
      <title>DEV Community: Immanuel Gabriel</title>
      <link>https://dev.to/immanuel_gabriel_341393bf</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/immanuel_gabriel_341393bf"/>
    <language>en</language>
    <item>
      <title>Temporal ranking finally gaining fruit.</title>
      <dc:creator>Immanuel Gabriel</dc:creator>
      <pubDate>Sun, 21 Jun 2026 05:35:59 +0000</pubDate>
      <link>https://dev.to/immanuel_gabriel_341393bf/temporal-ranking-finally-gaining-fruit-1h8e</link>
      <guid>https://dev.to/immanuel_gabriel_341393bf/temporal-ranking-finally-gaining-fruit-1h8e</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/immanuel_gabriel_341393bf/im-trying-to-teach-my-agents-what-now-means-heres-how-far-ive-gotten-6f8" class="crayons-story__hidden-navigation-link"&gt;I'm trying to teach my agents what "now" means. Here's how far I've gotten.&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/immanuel_gabriel_341393bf" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3925833%2F70ffd687-29d3-4439-9c7f-20750f1b958f.png" alt="immanuel_gabriel_341393bf profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/immanuel_gabriel_341393bf" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Immanuel Gabriel
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Immanuel Gabriel
                
              
              &lt;div id="story-author-preview-content-3949338" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/immanuel_gabriel_341393bf" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3925833%2F70ffd687-29d3-4439-9c7f-20750f1b958f.png" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Immanuel Gabriel&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/immanuel_gabriel_341393bf/im-trying-to-teach-my-agents-what-now-means-heres-how-far-ive-gotten-6f8" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jun 20&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/immanuel_gabriel_341393bf/im-trying-to-teach-my-agents-what-now-means-heres-how-far-ive-gotten-6f8" id="article-link-3949338"&gt;
          I'm trying to teach my agents what "now" means. Here's how far I've gotten.
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/architecture"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;architecture&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/agents"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;agents&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/immanuel_gabriel_341393bf/im-trying-to-teach-my-agents-what-now-means-heres-how-far-ive-gotten-6f8" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/immanuel_gabriel_341393bf/im-trying-to-teach-my-agents-what-now-means-heres-how-far-ive-gotten-6f8#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>agents</category>
      <category>ai</category>
      <category>algorithms</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>I'm trying to teach my agents what "now" means. Here's how far I've gotten.</title>
      <dc:creator>Immanuel Gabriel</dc:creator>
      <pubDate>Sat, 20 Jun 2026 13:39:30 +0000</pubDate>
      <link>https://dev.to/immanuel_gabriel_341393bf/im-trying-to-teach-my-agents-what-now-means-heres-how-far-ive-gotten-6f8</link>
      <guid>https://dev.to/immanuel_gabriel_341393bf/im-trying-to-teach-my-agents-what-now-means-heres-how-far-ive-gotten-6f8</guid>
      <description>&lt;p&gt;This is a builder's log, not a launch. I'm in the middle of a problem and I want to think out loud about it, because the people who replied to my last post moved my thinking more than a month of solo work did.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The moment it clicked&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Last week Copilot told me a match scheduled for June 12 was still going to happen. Confident, future tense. I was reading it on June 20. The match was over.&lt;/p&gt;

&lt;p&gt;The data wasn't wrong when it was retrieved. It went stale in the gap between retrieval and the moment it reached me, and nothing in the pipeline noticed. The agent had no sense of "now." It treated a fact from eight days ago exactly like a fact from eight seconds ago.&lt;/p&gt;

&lt;p&gt;That's the thing I keep running into. We've taught agents to retrieve and to reason. We haven't taught them what time it is.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Background: what I've been building&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I work on FreshContext, a judgment layer that sits between retrieval and reasoning. Any retriever (vector DB, web search, RAG, a tool call) hands it candidate context. It returns a verdict: use this, refresh it, verify it, exclude it, before the context reaches the model. It doesn't fetch anything itself. That boundary is on purpose, and it matters later in this post.&lt;/p&gt;

&lt;p&gt;For a while the verdict included a &lt;code&gt;safe_for_agent_handoff&lt;/code&gt; boolean. Felt solid. It wasn't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The comment that broke my assumption&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A commenter, ANP2 Network, made a point I couldn't argue with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"An annotation, however structured, is something the next agent is trusted to respect. Infrastructure is something the next agent cannot route around without leaving a trace."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A boolean is a field on an object. Any step downstream can flip &lt;code&gt;needs_verification&lt;/code&gt; into &lt;code&gt;safe_to_cite&lt;/code&gt; and leave no fingerprint. A structured verdict raises the cost of ignoring it, but it doesn't make tampering visible. ANP2 was describing the same disease as the Copilot match, from the other end: a judgment that was true once and gets trusted forever, with nothing recording when it was made or whether it still holds.&lt;/p&gt;

&lt;p&gt;Two symptoms, one illness. The verdict has no sense of time and no proof of origin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where I've landed (and the part I'm least sure about)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I weighed two fixes.&lt;/p&gt;

&lt;p&gt;One: let the judgment layer itself become the verifier. Every pipeline routes through it for a yes or no.&lt;/p&gt;

&lt;p&gt;Two: keep the layer pure. It produces a verdict, signs it (HMAC, secret stays server-side), and stamps &lt;code&gt;evaluated_at&lt;/code&gt; so the verdict carries its own age. A thin wrapper around the agent checks the signature and enforces. Any downstream agent can hit a verify endpoint to confirm the verdict really came from the layer and the content hasn't changed.&lt;/p&gt;

&lt;p&gt;I went with two. The reasoning: the second the judgment layer starts adjudicating instead of judging, it becomes a gatekeeper every pipeline has to pass through. Bigger attack surface, harder to adopt, and honestly a worse product. The no-fetch, no-enforce boundary is what lets other people drop this into their own stack instead of handing control to mine.&lt;/p&gt;

&lt;p&gt;Against the two failures that started this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The silent flip: rewriting the verdict breaks the signature. Verify says no. The omission stops being invisible.&lt;/li&gt;
&lt;li&gt;The stale match: &lt;code&gt;evaluated_at&lt;/code&gt; means the verdict knows how old it is. A downstream step can refuse a verdict that's aged out instead of trusting it on faith.&lt;/li&gt;
&lt;li&gt;And the multi-agent case (someone raised this directly under the last post): Agent B stops trusting a verdict just because Agent A handed it over. B verifies the signature. One agent faking a score doesn't infect the next.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's what I'm still not sure about, and where I'd want a sharper eye than mine:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The wrapper is opt-in. Skip it and you're back to advisory. Is "provable, enforced only if you choose to" real enforcement, or annotation with a receipt?&lt;/li&gt;
&lt;li&gt;Stateless verify is a network call at every real decision point. Cheap, not free. Where's the line where the latency isn't worth it?&lt;/li&gt;
&lt;li&gt;Signing proves origin and integrity. It doesn't prove the verdict was &lt;em&gt;right&lt;/em&gt;. A perfectly signed bad judgment is still bad. Am I solving the trust problem or just moving it somewhere quieter?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;If you want to look&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's running. I'd rather you test it than believe me.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run locally: &lt;code&gt;npx -y freshcontext-mcp@latest&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Live MCP endpoint: &lt;a href="https://freshcontext-mcp.gimmanuel73.workers.dev/mcp" rel="noopener noreferrer"&gt;https://freshcontext-mcp.gimmanuel73.workers.dev/mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The full approach, the boundary, and what's live vs roadmap: &lt;a href="https://freshcontext-site.pages.dev/context-integrity" rel="noopener noreferrer"&gt;https://freshcontext-site.pages.dev/context-integrity&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source and the verdict shape: &lt;a href="https://github.com/PrinceGabriel-lgtm/freshcontext-mcp" rel="noopener noreferrer"&gt;https://github.com/PrinceGabriel-lgtm/freshcontext-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Throw stale context at it. Try to make it bless something old. Tell me where it falls over.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Credit where it's due&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ANP2 Network's comment is the reason this post exists. A good critique from a stranger is worth more than agreement from a hundred. If you've pushed on this in the threads and I haven't named you here, that's an oversight, not a snub, say so and I'll fix it. I read everything.&lt;/p&gt;

&lt;p&gt;I'm building this from Grootfontein, Namibia, solo. Thinking in public is the only way I've found to think well. So: tell me where I'm wrong.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>agents</category>
      <category>webdev</category>
    </item>
    <item>
      <title>FreshContext in agent workflows: judgment at the context handoff</title>
      <dc:creator>Immanuel Gabriel</dc:creator>
      <pubDate>Tue, 09 Jun 2026 05:23:27 +0000</pubDate>
      <link>https://dev.to/immanuel_gabriel_341393bf/freshcontext-in-agent-workflows-judgment-at-the-context-handoff-jg8</link>
      <guid>https://dev.to/immanuel_gabriel_341393bf/freshcontext-in-agent-workflows-judgment-at-the-context-handoff-jg8</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi78ge6mmoo9x2z7ur84a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi78ge6mmoo9x2z7ur84a.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  FreshContext in agent workflows: judgment at the context handoff
&lt;/h1&gt;

&lt;p&gt;After sharing FreshContext publicly, a few comments helped me sharpen where it fits.&lt;/p&gt;

&lt;p&gt;One person asked whether I had tested it on larger datasets or production workloads.&lt;/p&gt;

&lt;p&gt;Another pointed out something important about ingestion: if a table loses its headers, or a clause gets split in the wrong place, the context is already damaged before any judgment layer sees it.&lt;/p&gt;

&lt;p&gt;That gave me a better way to think about the product boundary.&lt;/p&gt;

&lt;p&gt;FreshContext is useful at the context handoff.&lt;/p&gt;

&lt;p&gt;The simple shape is still:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```txt id="gpav98"&lt;br&gt;
candidate context in&lt;br&gt;
decision-ready context out&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


A caller provides candidate context. FreshContext evaluates it using signals like freshness, provenance, confidence, utility, and source profile. Then it returns a decision about how that context should be treated.

Examples:



```txt id="tvgx8u"
cite this
verify this
refresh this
use as background
watch this
exclude this
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That is the part I want to keep clear.&lt;/p&gt;
&lt;h2&gt;
  
  
  The handoff problem
&lt;/h2&gt;

&lt;p&gt;Agent workflows pass context around.&lt;/p&gt;

&lt;p&gt;A retrieval step finds sources.&lt;br&gt;
A planning step uses them.&lt;br&gt;
A writing step turns them into text.&lt;br&gt;
A review step checks the result.&lt;/p&gt;

&lt;p&gt;Somewhere in that chain, source quality can disappear.&lt;/p&gt;

&lt;p&gt;A source may begin as “relevant, but needs verification.”&lt;/p&gt;

&lt;p&gt;After one summary, that warning is gone.&lt;/p&gt;

&lt;p&gt;The next agent receives a clean paragraph and treats it as reliable.&lt;/p&gt;

&lt;p&gt;That is the kind of problem FreshContext is trying to reduce.&lt;/p&gt;

&lt;p&gt;The point is not to make the system more complicated. The point is to keep useful context judgment attached before another step uses it.&lt;/p&gt;

&lt;p&gt;A simple flow could look like this:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```txt id="ly3xqz"&lt;br&gt;
retrieval&lt;br&gt;
-&amp;gt; candidate context&lt;br&gt;
-&amp;gt; FreshContext judgment&lt;br&gt;
-&amp;gt; agent reasoning&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


For larger workflows, the same idea can sit between agents:



```txt id="csh0xg"
research agent
-&amp;gt; FreshContext judgment
-&amp;gt; planning agent
-&amp;gt; writing agent
-&amp;gt; review agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Not every step needs a judgment call. Some handoffs are low risk.&lt;/p&gt;

&lt;p&gt;The useful question is:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```txt id="olec7s"&lt;br&gt;
Before this context moves forward, do we know how much trust to place in it?&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


## Retrieval gives candidates. Judgment gives treatment.

Retrieval answers:



```txt id="pc4tou"
What might be relevant?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;FreshContext asks:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```txt id="8tpxx7"&lt;br&gt;
How should this context be treated?&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


A relevant source can still be stale.

A recent source can still be weak.

A useful source may only be good as background.

An official page may still need a date check.

A forum post may be useful signal, not proof.

This is why the output should be more than a relevance score.

A score can rank context.

A decision can guide the next step.

For example:



```txt id="50kg3l"
Decision: needs_verification
Reason: Relevant, but provenance is weak and the source date is unclear.
Action: Do not cite as primary until checked.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That kind of output is more useful to an agent than raw text alone.&lt;/p&gt;
&lt;h2&gt;
  
  
  Ingestion still matters
&lt;/h2&gt;

&lt;p&gt;One community comment made this point well: judgment works better when ingestion preserves structure.&lt;/p&gt;

&lt;p&gt;That means keeping things like:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```txt id="q0xnnt"&lt;br&gt;
table headers&lt;br&gt;
page numbers&lt;br&gt;
section titles&lt;br&gt;
source URLs&lt;br&gt;
timestamps&lt;br&gt;
author names&lt;br&gt;
schema context&lt;br&gt;
document boundaries&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


If that structure gets stripped away, FreshContext can still flag uncertainty, but it has less to work with.

A better pipeline is:



```txt id="t688h7"
structure-preserving ingest
-&amp;gt; context judgment
-&amp;gt; reasoning
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That is a useful architecture because each layer has a job.&lt;/p&gt;

&lt;p&gt;Ingestion keeps the source material intact.&lt;/p&gt;

&lt;p&gt;FreshContext judges the candidate context.&lt;/p&gt;

&lt;p&gt;The model or agent reasons with cleaner input.&lt;/p&gt;

&lt;p&gt;That is also why I am trying not to rush the product into every adjacent category at once. The current value is in the judgment step.&lt;/p&gt;
&lt;h2&gt;
  
  
  Multi-data systems need different judgment rules
&lt;/h2&gt;

&lt;p&gt;This becomes more important when a system uses many kinds of data.&lt;/p&gt;

&lt;p&gt;A real workflow might pull from:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```txt id="eo5rwl"&lt;br&gt;
PDFs&lt;br&gt;
web pages&lt;br&gt;
research papers&lt;br&gt;
support tickets&lt;br&gt;
GitHub issues&lt;br&gt;
database rows&lt;br&gt;
official docs&lt;br&gt;
forum posts&lt;br&gt;
internal notes&lt;br&gt;
market signals&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


These sources should not all be treated the same way.

A research paper does not decay like a job post.

A support ticket does not carry the same evidence weight as official documentation.

A database row may look precise, while still missing the surrounding schema or business meaning.

A forum post may show useful community signal, while still being weak evidence.

FreshContext uses source profiles to handle that difference.

The goal is simple: judge different source types with different expectations.

Examples:



```txt id="9cn6tr"
academic_research
official_docs
jobs_opportunities
market_finance
social_pulse
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The user-facing output should stay plain.&lt;/p&gt;

&lt;p&gt;The internal rules can become more specific over time.&lt;/p&gt;
&lt;h2&gt;
  
  
  Where this can grow
&lt;/h2&gt;

&lt;p&gt;The current public version is early.&lt;/p&gt;

&lt;p&gt;It has a working &lt;code&gt;evaluate_context&lt;/code&gt; path, source profiles, decision outputs, demos, arXiv proof work, reference adapters, and trust gates.&lt;/p&gt;

&lt;p&gt;That is enough to test the shape of the idea.&lt;/p&gt;

&lt;p&gt;It is not enough to claim large-scale production validation.&lt;/p&gt;

&lt;p&gt;The next useful tests are practical:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```txt id="3prv3t"&lt;br&gt;
larger candidate-context batches&lt;br&gt;
more source profiles&lt;br&gt;
latency and throughput checks&lt;br&gt;
multi-agent pilot workflows&lt;br&gt;
ingestion quality signals&lt;br&gt;
decision benchmark sets&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


I do not want to add features just to make the system look bigger.

The better question is:



```txt id="65iw2l"
Does the judgment improve the next step?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;If yes, the engine deserves to grow.&lt;/p&gt;

&lt;p&gt;If no, more surface area will not help.&lt;/p&gt;
&lt;h2&gt;
  
  
  The current product boundary
&lt;/h2&gt;

&lt;p&gt;For now, I am keeping the boundary simple.&lt;/p&gt;

&lt;p&gt;FreshContext receives candidate context.&lt;/p&gt;

&lt;p&gt;It evaluates the context.&lt;/p&gt;

&lt;p&gt;It returns a decision-ready output.&lt;/p&gt;

&lt;p&gt;That makes it useful as a checkpoint in RAG systems, agent workflows, and multi-data pipelines.&lt;/p&gt;

&lt;p&gt;The most relevant use case I see right now is this:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```txt id="3kg0wn"&lt;br&gt;
Keep agents honest about the sources they pass to each other.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


If one agent hands context to another, the receiving agent should know whether that context is fresh, provenanced, citation-grade, uncertain, background-only, or in need of verification.

That is the job FreshContext is built around.



```txt id="xsbzp8"
candidate context in
decision-ready context out
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the product identity I am keeping.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>rag</category>
      <category>agents</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Why RAG needs context judgment, not just better retrieval</title>
      <dc:creator>Immanuel Gabriel</dc:creator>
      <pubDate>Sun, 07 Jun 2026 09:25:14 +0000</pubDate>
      <link>https://dev.to/immanuel_gabriel_341393bf/why-rag-needs-context-judgment-not-just-better-retrieval-2j9f</link>
      <guid>https://dev.to/immanuel_gabriel_341393bf/why-rag-needs-context-judgment-not-just-better-retrieval-2j9f</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgiw0612c69ub13a2jlm9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgiw0612c69ub13a2jlm9.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Why RAG needs context judgment, not just better retrieval
&lt;/h1&gt;

&lt;p&gt;Most RAG systems optimize for retrieval.&lt;/p&gt;

&lt;p&gt;That makes sense.&lt;/p&gt;

&lt;p&gt;Search better.&lt;br&gt;
Embed better.&lt;br&gt;
Chunk better.&lt;br&gt;
Rank better.&lt;br&gt;
Fetch more sources.&lt;/p&gt;

&lt;p&gt;All of that matters.&lt;/p&gt;

&lt;p&gt;But retrieval alone does not answer a different question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Should this context actually influence the model?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is the problem FreshContext is built around.&lt;/p&gt;

&lt;p&gt;FreshContext is context judgment infrastructure for AI agents, RAG systems, and retrieval workflows.&lt;/p&gt;

&lt;p&gt;The simple version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;candidate context in
decision-ready context out
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Retrieval is not judgment
&lt;/h2&gt;

&lt;p&gt;A retriever usually answers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What might be relevant?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A context judgment layer asks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What should happen to this context before it reaches the model?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Those are different problems.&lt;/p&gt;

&lt;p&gt;A source can be relevant but stale.&lt;/p&gt;

&lt;p&gt;A source can be recent but low-confidence.&lt;/p&gt;

&lt;p&gt;A source can be useful as background but not strong enough to cite.&lt;/p&gt;

&lt;p&gt;A source can have no reliable date.&lt;/p&gt;

&lt;p&gt;A source can be a duplicate.&lt;/p&gt;

&lt;p&gt;A source can need verification before it should influence an answer.&lt;/p&gt;

&lt;p&gt;A normal RAG pipeline can retrieve all of that and still pass it straight into the prompt.&lt;/p&gt;

&lt;p&gt;That is where things get messy.&lt;/p&gt;

&lt;p&gt;The model may reason fluently from weak context, and the final answer can look confident even when the input material was stale, uncertain, or not citation-grade.&lt;/p&gt;

&lt;h2&gt;
  
  
  The missing layer between retrieval and reasoning
&lt;/h2&gt;

&lt;p&gt;FreshContext sits after retrieval and before reasoning.&lt;/p&gt;

&lt;p&gt;It does not try to replace search, vector databases, RAG frameworks, or agent frameworks.&lt;/p&gt;

&lt;p&gt;It focuses on the boundary between them and the model.&lt;/p&gt;

&lt;p&gt;The product spine looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;candidate context
-&amp;gt; FreshContext Core
-&amp;gt; freshness / provenance / confidence / utility / source profile
-&amp;gt; decision helper
-&amp;gt; decision-ready output
-&amp;gt; model / agent / app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal is not just to produce another score.&lt;/p&gt;

&lt;p&gt;The goal is to turn candidate context into a decision.&lt;/p&gt;

&lt;p&gt;Example decisions include:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cite_as_primary
cite_as_supporting
use_as_background
needs_refresh
needs_verification
watch_only
exclude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That output is much more useful than only saying:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;relevance: 0.84
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Relevance is only one part of the story.&lt;/p&gt;

&lt;h2&gt;
  
  
  Freshness is not truth
&lt;/h2&gt;

&lt;p&gt;One important boundary:&lt;/p&gt;

&lt;p&gt;FreshContext does not claim that freshness equals truth.&lt;/p&gt;

&lt;p&gt;A fresh source can be wrong.&lt;/p&gt;

&lt;p&gt;An old source can still be valid.&lt;/p&gt;

&lt;p&gt;An undated source can be risky.&lt;/p&gt;

&lt;p&gt;A historical source may be useful, but not for a current claim.&lt;/p&gt;

&lt;p&gt;So freshness should not be treated as a magic truth signal.&lt;/p&gt;

&lt;p&gt;It should be one part of a broader context judgment process.&lt;/p&gt;

&lt;p&gt;FreshContext evaluates candidate context with signals like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;source&lt;/li&gt;
&lt;li&gt;published time&lt;/li&gt;
&lt;li&gt;retrieved time&lt;/li&gt;
&lt;li&gt;source type&lt;/li&gt;
&lt;li&gt;semantic score&lt;/li&gt;
&lt;li&gt;source profile&lt;/li&gt;
&lt;li&gt;freshness&lt;/li&gt;
&lt;li&gt;provenance&lt;/li&gt;
&lt;li&gt;confidence&lt;/li&gt;
&lt;li&gt;utility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then it helps decide whether the source should be used, cited, refreshed, verified, backgrounded, watched, or excluded.&lt;/p&gt;

&lt;h2&gt;
  
  
  Source profiles matter
&lt;/h2&gt;

&lt;p&gt;Different kinds of context decay differently.&lt;/p&gt;

&lt;p&gt;A job post does not behave like a research paper.&lt;/p&gt;

&lt;p&gt;A finance signal does not behave like official documentation.&lt;/p&gt;

&lt;p&gt;A social pulse signal does not behave like an academic citation.&lt;/p&gt;

&lt;p&gt;That is why FreshContext uses Source Profiles.&lt;/p&gt;

&lt;p&gt;Examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;academic_research
jobs_opportunities
market_finance
official_docs
social_pulse
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The profile helps define how the system should treat freshness, confidence, provenance, and risk for that kind of source.&lt;/p&gt;

&lt;p&gt;This keeps the interface simple while allowing the internal judgment to be more specific.&lt;/p&gt;

&lt;h2&gt;
  
  
  The current front door: evaluate_context
&lt;/h2&gt;

&lt;p&gt;The current practical front door is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;evaluate_context
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The caller brings candidate context.&lt;/p&gt;

&lt;p&gt;FreshContext evaluates it.&lt;/p&gt;

&lt;p&gt;That boundary is intentional.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;evaluate_context&lt;/code&gt; does not fetch, crawl, browse, scrape, read folders, or retrieve by itself.&lt;/p&gt;

&lt;p&gt;It evaluates caller-provided candidate context and returns decision-ready output.&lt;/p&gt;

&lt;p&gt;A simplified input shape looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"profile"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"academic_research"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"intent"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"citation_check"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"signals"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Example source"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Candidate context text..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"source"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://example.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"source_type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"official_docs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"published_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-06-01T00:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"retrieved_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-06-07T00:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"semantic_score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.92&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part is the output.&lt;/p&gt;

&lt;p&gt;Instead of only returning raw retrieved material, FreshContext can return something closer to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Decision: cite_as_supporting
Meaning: Useful supporting context, but not the primary source.
Action: Use with citation and keep stronger sources ahead of it.
Warnings: Date confidence is limited.
Why: Relevant, recent enough, but weaker provenance than official documentation.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the layer I think RAG and agent systems need more of.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference adapters are not the product
&lt;/h2&gt;

&lt;p&gt;FreshContext includes reference adapters and proof surfaces.&lt;/p&gt;

&lt;p&gt;Those matter.&lt;/p&gt;

&lt;p&gt;But they are not the product identity.&lt;/p&gt;

&lt;p&gt;The product is not “a pile of tools.”&lt;/p&gt;

&lt;p&gt;The product is the judgment layer.&lt;/p&gt;

&lt;p&gt;The stronger framing is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FreshContext decides what context deserves to reach the model.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the category I am trying to clarify.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters for agents
&lt;/h2&gt;

&lt;p&gt;Agents often pass information between steps.&lt;/p&gt;

&lt;p&gt;One step retrieves.&lt;/p&gt;

&lt;p&gt;Another summarizes.&lt;/p&gt;

&lt;p&gt;Another decides.&lt;/p&gt;

&lt;p&gt;Another writes.&lt;/p&gt;

&lt;p&gt;Another acts.&lt;/p&gt;

&lt;p&gt;If weak context enters early, the error can travel through the whole chain.&lt;/p&gt;

&lt;p&gt;A context judgment layer gives the system a checkpoint before the next reasoning step.&lt;/p&gt;

&lt;p&gt;It asks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Should this be cited?&lt;/li&gt;
&lt;li&gt;Should this be refreshed?&lt;/li&gt;
&lt;li&gt;Should this be verified?&lt;/li&gt;
&lt;li&gt;Should this only be background?&lt;/li&gt;
&lt;li&gt;Should this be excluded?&lt;/li&gt;
&lt;li&gt;Is the date reliable?&lt;/li&gt;
&lt;li&gt;Is the provenance strong enough?&lt;/li&gt;
&lt;li&gt;Is the source useful for this specific intent?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is different from retrieval.&lt;/p&gt;

&lt;p&gt;And it is different from final-answer evaluation.&lt;/p&gt;

&lt;p&gt;It is judgment over the context before reasoning happens.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is live now
&lt;/h2&gt;

&lt;p&gt;FreshContext currently includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;evaluate_context&lt;/code&gt; as the generic front door&lt;/li&gt;
&lt;li&gt;Source Profiles&lt;/li&gt;
&lt;li&gt;Core evaluation pipeline&lt;/li&gt;
&lt;li&gt;Decision Helper&lt;/li&gt;
&lt;li&gt;freshness, provenance, confidence, and utility evaluation&lt;/li&gt;
&lt;li&gt;BYOC demos&lt;/li&gt;
&lt;li&gt;arXiv signal-to-decision proof&lt;/li&gt;
&lt;li&gt;trust/release gates&lt;/li&gt;
&lt;li&gt;reference adapters as proof surfaces&lt;/li&gt;
&lt;li&gt;public website&lt;/li&gt;
&lt;li&gt;npm package&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The simple use case is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Bring candidate context.
Apply a source profile.
Evaluate the signals.
Return decision-ready context.
Let the model reason with cleaner input.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Product Hunt launch
&lt;/h2&gt;

&lt;p&gt;FreshContext is scheduled for Product Hunt on Monday, June 8.&lt;/p&gt;

&lt;p&gt;Product Hunt:&lt;br&gt;
&lt;a href="https://www.producthunt.com/products/freshcontext?launch=freshcontext" rel="noopener noreferrer"&gt;https://www.producthunt.com/products/freshcontext?launch=freshcontext&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Website:&lt;br&gt;
&lt;a href="https://freshcontext-site.pages.dev/" rel="noopener noreferrer"&gt;https://freshcontext-site.pages.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/PrinceGabriel-lgtm/freshcontext-mcp" rel="noopener noreferrer"&gt;https://github.com/PrinceGabriel-lgtm/freshcontext-mcp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;npm:&lt;br&gt;
&lt;a href="https://www.npmjs.com/package/freshcontext-mcp" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/freshcontext-mcp&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;RAG does not only need better retrieval.&lt;/p&gt;

&lt;p&gt;It needs a stronger boundary between retrieval and reasoning.&lt;/p&gt;

&lt;p&gt;That boundary should not blindly pass everything forward.&lt;/p&gt;

&lt;p&gt;It should judge the context first.&lt;/p&gt;

&lt;p&gt;FreshContext is my attempt to make that layer explicit, testable, and useful.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;candidate context in
decision-ready context out
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;FreshContext decides what context deserves to reach the model.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>rag</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>FreshContext is becoming a context judgment layer, not a toolbox</title>
      <dc:creator>Immanuel Gabriel</dc:creator>
      <pubDate>Tue, 02 Jun 2026 11:14:19 +0000</pubDate>
      <link>https://dev.to/immanuel_gabriel_341393bf/freshcontext-is-becoming-a-context-judgment-layer-not-a-toolbox-4a8a</link>
      <guid>https://dev.to/immanuel_gabriel_341393bf/freshcontext-is-becoming-a-context-judgment-layer-not-a-toolbox-4a8a</guid>
      <description>&lt;p&gt;A few weeks ago, FreshContext was easy to describe badly.&lt;/p&gt;

&lt;p&gt;I could say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;FreshContext is an MCP server with 21 tools.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That was technically true.&lt;/p&gt;

&lt;p&gt;It was also the wrong headline.&lt;/p&gt;

&lt;p&gt;The more I kept building, testing, and trying to explain it to people, the more obvious the problem became: nobody really cares that a project has “21 tools” unless they already understand what those tools solve.&lt;/p&gt;

&lt;p&gt;A user does not wake up thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I need 21 MCP tools.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;They think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can I trust this source?&lt;br&gt;
Is this information still current?&lt;br&gt;
Is this thing worth citing?&lt;br&gt;
Is this job still fresh?&lt;br&gt;
Is this package active or abandoned?&lt;br&gt;
Is this study useful, or just old background?&lt;br&gt;
Which context should my agent read first?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the product.&lt;/p&gt;

&lt;p&gt;Not the tool count.&lt;/p&gt;

&lt;p&gt;Here is the short visual explainer:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/Z41tnZ8BXu8" rel="noopener noreferrer"&gt;https://youtu.be/Z41tnZ8BXu8&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The old framing
&lt;/h2&gt;

&lt;p&gt;The old FreshContext shape was:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;21 MCP tools
→ fetch different kinds of information
→ stamp freshness metadata
→ return ranked context
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Useful, but too implementation-shaped.&lt;/p&gt;

&lt;p&gt;It made FreshContext sound like a plugin pack.&lt;/p&gt;

&lt;p&gt;That creates the wrong questions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Which tool do I use?
Why 21?
Do I need all of them?
Is this only for Claude?
Is this only MCP?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Those questions are a smell.&lt;/p&gt;

&lt;p&gt;FreshContext should not be understood as a bag of tools. The tools are reference adapters. They prove the engine can handle different information classes: GitHub activity, social signals, academic papers, finance data, jobs, government records, company intelligence, and composite landscapes.&lt;/p&gt;

&lt;p&gt;But they are not the product identity.&lt;/p&gt;

&lt;h2&gt;
  
  
  The new framing
&lt;/h2&gt;

&lt;p&gt;FreshContext is becoming a context judgment layer.&lt;/p&gt;

&lt;p&gt;The cleaner sentence is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;FreshContext turns raw retrieved information into freshness-ranked, explained, provenance-aware context.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The sharper sentence is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;FreshContext tells you whether a source deserves to be used, cited, refreshed, or ignored.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the actual lane.&lt;/p&gt;

&lt;p&gt;The current architecture is moving toward this shape:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Raw candidate context
  → Source Profile
  → Core evaluation
  → ranked explanation
  → decision-ready context
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key phrase is &lt;strong&gt;decision-ready&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A raw score is not enough.&lt;/p&gt;

&lt;p&gt;If FreshContext says:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Freshness: 16
Final score: 0.664
Utility: 14.006
Confidence: high
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;a normal person can fairly ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So what?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the next layer I am working toward.&lt;/p&gt;

&lt;p&gt;The output should become more like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Decision: Use as background
Meaning: This source is relevant and credible, but older than newer work.
Action: Use it for foundation, not as the latest evidence.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is what makes it useful outside developer circles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Source Profiles
&lt;/h2&gt;

&lt;p&gt;The first step was separating source types from tools.&lt;/p&gt;

&lt;p&gt;Different information ages differently.&lt;/p&gt;

&lt;p&gt;A stock quote can go stale in hours.&lt;br&gt;
A social launch signal can go stale in days.&lt;br&gt;
A job listing can expire quickly.&lt;br&gt;
An academic paper can remain useful for years.&lt;br&gt;
Official documentation can be older than a blog post and still be more authoritative.&lt;/p&gt;

&lt;p&gt;So FreshContext now has the idea of Source Profiles.&lt;/p&gt;

&lt;p&gt;Examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;official_docs
code_activity
social_pulse
academic_research
market_finance
jobs_opportunities
government_regulatory
company_intel
composite_landscape
local_custom
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A Source Profile describes how a class of information should age, fail, rank, and explain.&lt;/p&gt;

&lt;p&gt;That means the question is no longer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which of the 21 tools did this come from?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The question becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What kind of source is this, and how should FreshContext judge it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a better abstraction.&lt;/p&gt;

&lt;h2&gt;
  
  
  The first visible demo
&lt;/h2&gt;

&lt;p&gt;There is now a local demo command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run demo:evaluate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It takes hardcoded academic-style candidate sources and evaluates them through an academic research profile.&lt;/p&gt;

&lt;p&gt;The current flow is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;raw candidate context
→ source profile policy
→ Core evaluation
→ ranked output
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The demo shows a few important behaviors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a fresh, relevant academic source ranks first&lt;/li&gt;
&lt;li&gt;an older but still useful source remains usable&lt;/li&gt;
&lt;li&gt;a missing-date source is warned&lt;/li&gt;
&lt;li&gt;a failed or blocked source does not get treated as fresh&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last part matters.&lt;/p&gt;

&lt;p&gt;A bad signal should not be dressed up as good context just because an agent needs an answer.&lt;/p&gt;

&lt;p&gt;FreshContext is trying to be honest about uncertainty.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this is not
&lt;/h2&gt;

&lt;p&gt;FreshContext is not trying to become a legal advisor, medical advisor, tax advisor, or investment advisor.&lt;/p&gt;

&lt;p&gt;That is not the promise.&lt;/p&gt;

&lt;p&gt;The promise is smaller and more useful:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;This source is current.
This source is stale.
This source is traceable.
This source has missing dates.
This source looks failed.
This source is worth reading first.
This source should be used only as background.
This source should be refreshed before being trusted.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is citation and context judgment.&lt;/p&gt;

&lt;p&gt;For example, in a research workflow, FreshContext should not say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This medical conclusion is correct.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It should say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This study may be relevant, but verify it against recent reviews, guidelines, and stronger evidence before relying on it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That boundary matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters for agents
&lt;/h2&gt;

&lt;p&gt;Most AI systems are limited by the quality of the context they receive.&lt;/p&gt;

&lt;p&gt;If an agent receives stale, failed, irrelevant, or weakly sourced material, it can reason confidently from bad input.&lt;/p&gt;

&lt;p&gt;FreshContext is meant to sit before that step.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;retrieval results
tool outputs
notes
papers
docs
logs
links
        ↓
FreshContext
        ↓
ranked, explained, citation-ready context
        ↓
agent or human
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is why I am moving away from “tools marketing.”&lt;/p&gt;

&lt;p&gt;MCP remains important. REST matters. SDK and CLI paths matter too.&lt;/p&gt;

&lt;p&gt;But those are surfaces.&lt;/p&gt;

&lt;p&gt;The center is Core.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this is going
&lt;/h2&gt;

&lt;p&gt;The next layer is a decision layer.&lt;/p&gt;

&lt;p&gt;Source Profiles answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What kind of source is this?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Intent Profiles will answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What is the user trying to decide?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A student asks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Can I cite this?
Is this study still useful?
Is it background or current evidence?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A developer asks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Is this package active?
Is the community responding well?
Is it worth testing?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A job hunter asks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Is this job fresh?
Does it fit me?
Can I still apply?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A business user asks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Is this market signal recent?
Is adoption visible?
Is this hype or substance?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same Core.&lt;/p&gt;

&lt;p&gt;Different intent.&lt;/p&gt;

&lt;p&gt;The output should eventually become:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Decision: Cite as supporting
Decision: Use first
Decision: Needs verification
Decision: Refresh before using
Decision: Exclude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the practical layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bigger shift
&lt;/h2&gt;

&lt;p&gt;FreshContext started as an MCP project.&lt;/p&gt;

&lt;p&gt;It is becoming a context infrastructure project.&lt;/p&gt;

&lt;p&gt;The 21 tools are still useful, but they are no longer the headline.&lt;/p&gt;

&lt;p&gt;They are proof surfaces.&lt;/p&gt;

&lt;p&gt;The more durable product is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;standard input
standard evidence envelope
standard source profiles
standard decision labels
standard reasons and warnings
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That can plug into agents, research workflows, student study tools, developer tooling, business analysis, and eventually larger systems that need context integrity before reasoning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Current status
&lt;/h2&gt;

&lt;p&gt;The latest clean milestone:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Core evaluation pipeline: working
Source Profile presets: working
Local REST handler: working
Local demo: working
MCP tools: still live
Worker runtime: untouched
No REST deployment yet
No npm publish change yet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The project is still early.&lt;/p&gt;

&lt;p&gt;But the direction is clearer now:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;FreshContext decides what context deserves to reach the model.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the product I am building toward.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>mcp</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>Making Ops Pulse less project-specific and more useful for Cloudflare builders</title>
      <dc:creator>Immanuel Gabriel</dc:creator>
      <pubDate>Tue, 19 May 2026 16:04:16 +0000</pubDate>
      <link>https://dev.to/immanuel_gabriel_341393bf/making-ops-pulse-less-project-specific-and-more-useful-for-cloudflare-builders-4nkl</link>
      <guid>https://dev.to/immanuel_gabriel_341393bf/making-ops-pulse-less-project-specific-and-more-useful-for-cloudflare-builders-4nkl</guid>
      <description>&lt;p&gt;I built Ops Pulse because I needed a calmer way to diagnose my Cloudflare setup.&lt;/p&gt;

&lt;p&gt;When you are running Workers, D1, cron schedules, and logs across a few small services, the hard part is not always “getting metrics.”&lt;/p&gt;

&lt;p&gt;The hard part is knowing what the metrics mean.&lt;/p&gt;

&lt;p&gt;A Worker can look scary because an old error is still inside a long report window.&lt;/p&gt;

&lt;p&gt;A cron job can look broken when it simply was not expected to run yet.&lt;/p&gt;

&lt;p&gt;A service can be idle without being unhealthy.&lt;/p&gt;

&lt;p&gt;A feed can be healthy but quiet.&lt;/p&gt;

&lt;p&gt;And sometimes the thing you are about to edit is not the thing that is actually failing.&lt;/p&gt;

&lt;p&gt;That is the loop Ops Pulse is meant to reduce.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cloudflare metrics in.
Plain-English diagnosis out.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What Ops Pulse does
&lt;/h2&gt;

&lt;p&gt;Ops Pulse is a local-first CLI for diagnosing Cloudflare Workers, D1, cron schedules, and Workers Observability logs.&lt;/p&gt;

&lt;p&gt;It runs on your machine, uses your own Cloudflare token, and produces readable reports about what looks healthy, degraded, idle, noisy, or unknown.&lt;/p&gt;

&lt;p&gt;You can run it with npx:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx freshcontext-ops-pulse &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or install it globally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; freshcontext-ops-pulse
freshops &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The tool is designed for people who want a quick operational read before they start changing code.&lt;/p&gt;

&lt;p&gt;It can help inspect things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Worker request counts&lt;/li&gt;
&lt;li&gt;error rates&lt;/li&gt;
&lt;li&gt;invocation status&lt;/li&gt;
&lt;li&gt;runtime exceptions&lt;/li&gt;
&lt;li&gt;client disconnects&lt;/li&gt;
&lt;li&gt;CPU and wall time&lt;/li&gt;
&lt;li&gt;subrequests&lt;/li&gt;
&lt;li&gt;D1 reads and writes&lt;/li&gt;
&lt;li&gt;D1 latency&lt;/li&gt;
&lt;li&gt;cron behavior&lt;/li&gt;
&lt;li&gt;Workers Observability events&lt;/li&gt;
&lt;li&gt;recent logs for a specific Worker&lt;/li&gt;
&lt;li&gt;plain-English recommendations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;freshcontext-ops-pulse report &lt;span class="nt"&gt;--hours&lt;/span&gt; 1
freshcontext-ops-pulse report &lt;span class="nt"&gt;--hours&lt;/span&gt; 6
freshcontext-ops-pulse logs &lt;span class="nt"&gt;--worker&lt;/span&gt; my-worker &lt;span class="nt"&gt;--hours&lt;/span&gt; 1
freshcontext-ops-pulse errors &lt;span class="nt"&gt;--worker&lt;/span&gt; my-worker &lt;span class="nt"&gt;--hours&lt;/span&gt; 24
freshcontext-ops-pulse assays
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal is not to replace Cloudflare Observability.&lt;/p&gt;

&lt;p&gt;The goal is to sit one layer above the raw signals and help answer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What is actually broken?
What is healthy?
What is idle?
What is old noise?
What should I inspect first?
What should I avoid touching?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That last question matters a lot.&lt;/p&gt;

&lt;p&gt;A surprising amount of debugging time is wasted changing healthy systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Local-first setup
&lt;/h2&gt;

&lt;p&gt;Ops Pulse does not require a hosted dashboard.&lt;/p&gt;

&lt;p&gt;It does not require an account with FreshContext.&lt;/p&gt;

&lt;p&gt;It does not send your Cloudflare metrics to my server.&lt;/p&gt;

&lt;p&gt;It reads from Cloudflare using the credentials you provide locally.&lt;/p&gt;

&lt;p&gt;Required environment variables:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CLOUDFLARE_ACCOUNT_ID=
CLOUDFLARE_API_TOKEN=
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The token should be read-only where possible.&lt;/p&gt;

&lt;p&gt;The current docs explain recommended Cloudflare token permissions, but the basic principle is simple: only give Ops Pulse access to the Cloudflare resources you want it to inspect.&lt;/p&gt;

&lt;p&gt;For example, if you only want it to inspect Worker analytics and logs, scope the token around that.&lt;/p&gt;

&lt;p&gt;If you want it to inspect D1-related signals, include the relevant D1 read permissions.&lt;/p&gt;

&lt;p&gt;Do not commit your &lt;code&gt;.env&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Do not paste your token into issues, chats, or support threads.&lt;/p&gt;

&lt;p&gt;That privacy boundary is now documented more clearly in &lt;code&gt;PRIVACY.md&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Diagnostic assays
&lt;/h2&gt;

&lt;p&gt;I also cleaned up the diagnostic assay documentation.&lt;/p&gt;

&lt;p&gt;An assay is just a focused check that asks one operational question.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Do public/runtime versions agree?
Do MCP clients see the expected tools?
Is cache behavior visible enough to trust?
Was cron expected in this time window?
Is the Worker actually throwing runtime errors?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each assay should return a simple shape:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;status&lt;/li&gt;
&lt;li&gt;reason&lt;/li&gt;
&lt;li&gt;evidence&lt;/li&gt;
&lt;li&gt;recommendation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The statuses are intentionally boring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;healthy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;warning&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;degraded&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;unknown&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;code&gt;unknown&lt;/code&gt; state is important.&lt;/p&gt;

&lt;p&gt;A diagnosis tool should not fake certainty.&lt;/p&gt;

&lt;p&gt;If Ops Pulse cannot see enough evidence, it should say that clearly instead of pretending everything is fine.&lt;/p&gt;

&lt;p&gt;For example, a cache correctness check should not claim the cache is healthy if cache metadata is not visible in logs. It should explain what is missing and what visibility would be needed to make the call.&lt;/p&gt;

&lt;p&gt;That is the kind of behavior I want from the tool generally.&lt;/p&gt;

&lt;p&gt;Not dramatic.&lt;/p&gt;

&lt;p&gt;Not magical.&lt;/p&gt;

&lt;p&gt;Just honest.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changed in this patch
&lt;/h2&gt;

&lt;p&gt;This was a documentation and onboarding patch, not a feature rewrite.&lt;/p&gt;

&lt;p&gt;The latest cleanup added or improved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a clearer README&lt;/li&gt;
&lt;li&gt;generic setup for non-FreshContext users&lt;/li&gt;
&lt;li&gt;better quickstart examples&lt;/li&gt;
&lt;li&gt;environment variable guidance&lt;/li&gt;
&lt;li&gt;recommended token-permission notes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PRIVACY.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs/ASSAYS.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;safer &lt;code&gt;.env.example&lt;/code&gt; comments&lt;/li&gt;
&lt;li&gt;clearer CLI help text&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The README now frames Ops Pulse as a local Cloudflare diagnosis CLI first.&lt;/p&gt;

&lt;p&gt;My own systems are just the first place I used it seriously.&lt;/p&gt;

&lt;p&gt;That matters because the tool should be useful to someone running their own Worker, API, cron job, D1-backed app, feed service, or MCP server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who this is for
&lt;/h2&gt;

&lt;p&gt;Ops Pulse is probably useful if you are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;running Cloudflare Workers&lt;/li&gt;
&lt;li&gt;using D1&lt;/li&gt;
&lt;li&gt;relying on cron schedules&lt;/li&gt;
&lt;li&gt;checking Workers Observability logs&lt;/li&gt;
&lt;li&gt;maintaining a small API or feed&lt;/li&gt;
&lt;li&gt;building an MCP server on Cloudflare&lt;/li&gt;
&lt;li&gt;debugging alone without a full observability stack&lt;/li&gt;
&lt;li&gt;trying to tell fresh failures from stale noise&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is especially useful when you want a quick answer before touching code.&lt;/p&gt;

&lt;p&gt;Sometimes the right answer is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Do not edit this Worker.
The errors are old.
Cron was not expected in this window.
This other service is the one to inspect.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That kind of answer can save more time than another graph.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is not
&lt;/h2&gt;

&lt;p&gt;Ops Pulse is not auto-remediation.&lt;/p&gt;

&lt;p&gt;It does not patch your Workers.&lt;/p&gt;

&lt;p&gt;It does not deploy anything.&lt;/p&gt;

&lt;p&gt;It does not mutate Cloudflare resources.&lt;/p&gt;

&lt;p&gt;It does not replace Cloudflare’s own dashboards.&lt;/p&gt;

&lt;p&gt;It is also not trying to be a full observability platform.&lt;/p&gt;

&lt;p&gt;The current version is intentionally small:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;local CLI
read-only diagnosis
plain-English reports
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is enough for now.&lt;/p&gt;

&lt;h2&gt;
  
  
  Current status
&lt;/h2&gt;

&lt;p&gt;Ops Pulse is live on npm.&lt;/p&gt;

&lt;p&gt;It has crossed a small first signal of interest, with a little over 100 npm downloads at the time I checked.&lt;/p&gt;

&lt;p&gt;That is not product-market fit.&lt;/p&gt;

&lt;p&gt;But it is enough of a signal to keep polishing the setup, docs, and diagnosis flow.&lt;/p&gt;

&lt;p&gt;npm:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/freshcontext-ops-pulse" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/freshcontext-ops-pulse&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/PrinceGabriel-lgtm/freshcontext-ops-pulse" rel="noopener noreferrer"&gt;https://github.com/PrinceGabriel-lgtm/freshcontext-ops-pulse&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Try it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx freshcontext-ops-pulse &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; freshcontext-ops-pulse
freshops &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Next
&lt;/h2&gt;

&lt;p&gt;The next useful work is probably still small:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;better markdown/json output&lt;/li&gt;
&lt;li&gt;clearer resource selection&lt;/li&gt;
&lt;li&gt;more diagnostic assays&lt;/li&gt;
&lt;li&gt;more sample reports&lt;/li&gt;
&lt;li&gt;a simple setup check&lt;/li&gt;
&lt;li&gt;stronger examples for non-FreshContext projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I am trying to keep the direction simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cloudflare metrics in.
Plain-English diagnosis out.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If Ops Pulse helps one other builder avoid chasing stale noise or editing the wrong service, that is already useful.&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>opensource</category>
      <category>devtool</category>
      <category>ops</category>
    </item>
    <item>
      <title>The part after shipping an MCP server: making it fail honestly</title>
      <dc:creator>Immanuel Gabriel</dc:creator>
      <pubDate>Wed, 13 May 2026 11:25:06 +0000</pubDate>
      <link>https://dev.to/immanuel_gabriel_341393bf/the-part-after-shipping-an-mcp-server-making-it-fail-honestly-26fl</link>
      <guid>https://dev.to/immanuel_gabriel_341393bf/the-part-after-shipping-an-mcp-server-making-it-fail-honestly-26fl</guid>
      <description>&lt;p&gt;I thought the hard part was shipping the MCP server.&lt;/p&gt;

&lt;p&gt;It was not.&lt;/p&gt;

&lt;p&gt;The hard part started after the server was public, listed, installable, and testable outside my own machine.&lt;/p&gt;

&lt;p&gt;FreshContext is my MCP project around freshness-aware retrieval. The basic idea is simple: agents should not treat stale information as current truth. Every retrieved signal gets wrapped with source, timestamp, retrieval time, and confidence metadata, then ranked with freshness decay before it reaches the model.&lt;/p&gt;

&lt;p&gt;That was the first public story.&lt;/p&gt;

&lt;p&gt;But once the site, npm package, MCP Registry entry, Agentic Market listing, and feed APIs were live, a different kind of work became more important:&lt;/p&gt;

&lt;p&gt;Making the system fail honestly.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bug that bothered me most
&lt;/h2&gt;

&lt;p&gt;A read-only QA pass found several issues.&lt;/p&gt;

&lt;p&gt;Some were normal integration problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one finance path was failing against Yahoo with a 401&lt;/li&gt;
&lt;li&gt;the Hacker News tool rejected plain text even though the product copy implied search-like behavior&lt;/li&gt;
&lt;li&gt;one HN scrape path produced a malformed timestamp&lt;/li&gt;
&lt;li&gt;the local stdio package reported an old internal version&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Annoying, but fixable.&lt;/p&gt;

&lt;p&gt;The serious issue was different.&lt;/p&gt;

&lt;p&gt;A failed finance call could still be wrapped as high-confidence output.&lt;/p&gt;

&lt;p&gt;That is poisonous for a product about freshness and retrieval trust.&lt;/p&gt;

&lt;p&gt;If a tool fails, it should not come back dressed as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Confidence: high
Score: 100/100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is worse than an obvious crash. A crash tells you something broke. A confident bad envelope quietly teaches the user to distrust the whole system.&lt;/p&gt;

&lt;p&gt;So the next release was not about adding features.&lt;/p&gt;

&lt;p&gt;It was about making failures honest.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 0.3.17 release
&lt;/h2&gt;

&lt;p&gt;The 0.3.17 patch focused only on validated problems.&lt;/p&gt;

&lt;p&gt;No new verticals. No redesign. No “while we are here” expansion.&lt;/p&gt;

&lt;p&gt;The finance adapter moved away from the broken Yahoo path and now uses Stooq as a no-key quote source.&lt;/p&gt;

&lt;p&gt;Failure-looking adapter output is blocked from becoming high-confidence FreshContext output.&lt;/p&gt;

&lt;p&gt;The Hacker News tool now accepts both URLs and plain text queries while keeping the same field name for compatibility.&lt;/p&gt;

&lt;p&gt;HN dates are normalized before freshness scoring.&lt;/p&gt;

&lt;p&gt;The Worker version, npm package, stdio server info, and MCP Registry metadata were aligned to 0.3.17.&lt;/p&gt;

&lt;p&gt;I also added a small stdio smoke test so the package can prove the basics before release:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;initialize works&lt;/li&gt;
&lt;li&gt;server version matches package version&lt;/li&gt;
&lt;li&gt;tools/list returns 21 tools&lt;/li&gt;
&lt;li&gt;key tools exist&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this is glamorous.&lt;/p&gt;

&lt;p&gt;It is the maintenance layer that makes the public product feel less fragile.&lt;/p&gt;

&lt;h2&gt;
  
  
  The release gate became boring on purpose
&lt;/h2&gt;

&lt;p&gt;The release flow became:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;build locally
smoke stdio
check Worker TypeScript
deploy Worker
smoke live MCP endpoint
verify npm registry install
update public metadata
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That order matters.&lt;/p&gt;

&lt;p&gt;I did not want to publish npm and then discover that the deployed Worker path behaved differently. I also did not want the registry, npm package, and website telling three different stories.&lt;/p&gt;

&lt;p&gt;The rule became:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Do not publish or update public surfaces until the live path works.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is obvious in hindsight.&lt;/p&gt;

&lt;p&gt;It is also exactly the kind of obvious thing that gets skipped when you are moving fast.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built Ops Pulse
&lt;/h2&gt;

&lt;p&gt;Around the same time, I built a small tool called FreshContext Ops Pulse.&lt;/p&gt;

&lt;p&gt;It is not a dashboard. It is not a giant observability product. It is a local-first TypeScript CLI that reads Cloudflare metrics and turns them into plain-English diagnosis.&lt;/p&gt;

&lt;p&gt;FreshContext runs across Cloudflare Workers, D1, cron, and a few small feed services.&lt;/p&gt;

&lt;p&gt;That creates a practical debugging problem.&lt;/p&gt;

&lt;p&gt;If the Fresh HN Feed is healthy, I should not touch it while debugging the MCP worker.&lt;/p&gt;

&lt;p&gt;If the Jobs Feed is idle because no cron was expected in that window, that is not an outage.&lt;/p&gt;

&lt;p&gt;If the MCP core has runtime exceptions, I need to focus there instead of randomly changing healthy systems.&lt;/p&gt;

&lt;p&gt;Ops Pulse gives me that separation.&lt;/p&gt;

&lt;p&gt;The pipeline is simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cloudflare metrics -&amp;gt; normalized snapshot -&amp;gt; diagnosis -&amp;gt; recommendation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That helped shift the project from “poke around until something changes” to “debug from evidence.”&lt;/p&gt;

&lt;p&gt;That is a major relief when you are solo-building and every fix can accidentally create two more bugs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real lesson
&lt;/h2&gt;

&lt;p&gt;The biggest lesson was not about MCP specifically.&lt;/p&gt;

&lt;p&gt;It was about consistency.&lt;/p&gt;

&lt;p&gt;If the website says 21 tools, the registry should say 21 tools.&lt;/p&gt;

&lt;p&gt;If npm says 0.3.17, the Worker should report 0.3.17.&lt;/p&gt;

&lt;p&gt;If a source has a timestamp, normalize it before scoring.&lt;/p&gt;

&lt;p&gt;If a tool fails, make the failure visible.&lt;/p&gt;

&lt;p&gt;If one service is healthy, do not disturb it while fixing another service.&lt;/p&gt;

&lt;p&gt;This sounds boring because it is boring.&lt;/p&gt;

&lt;p&gt;But boring is what makes a tool usable.&lt;/p&gt;

&lt;p&gt;A lot of early product work feels like building features. Then the product becomes public and the work changes. Suddenly the important thing is not “can I add one more thing?”&lt;/p&gt;

&lt;p&gt;It is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Can I trust the thing that already shipped?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For FreshContext, that meant stopping feature work for a moment and stabilizing the public surface:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MCP Worker live&lt;/li&gt;
&lt;li&gt;npm package verified&lt;/li&gt;
&lt;li&gt;MCP Registry updated&lt;/li&gt;
&lt;li&gt;Agentic Market listing accepted&lt;/li&gt;
&lt;li&gt;Fresh HN Feed live&lt;/li&gt;
&lt;li&gt;Fresh Jobs Feed live&lt;/li&gt;
&lt;li&gt;Apify actors published&lt;/li&gt;
&lt;li&gt;Ops Pulse available for operational diagnosis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is still plenty to improve.&lt;/p&gt;

&lt;p&gt;But the project is now past the “just an idea” phase. It has install paths, public listings, live feeds, and a small ops loop watching the system.&lt;/p&gt;

&lt;p&gt;That feels like a better foundation than another rushed feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;FreshContext hub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://freshcontext-site.pages.dev/" rel="noopener noreferrer"&gt;https://freshcontext-site.pages.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Live demo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://freshcontext-mcp.gimmanuel73.workers.dev/demo" rel="noopener noreferrer"&gt;https://freshcontext-mcp.gimmanuel73.workers.dev/demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MCP endpoint:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://freshcontext-mcp.gimmanuel73.workers.dev/mcp" rel="noopener noreferrer"&gt;https://freshcontext-mcp.gimmanuel73.workers.dev/mcp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/PrinceGabriel-lgtm/freshcontext-mcp" rel="noopener noreferrer"&gt;https://github.com/PrinceGabriel-lgtm/freshcontext-mcp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agentic Market:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://agenticmarket.dev/princegabriel73/server" rel="noopener noreferrer"&gt;https://agenticmarket.dev/princegabriel73/server&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next step is not more feature sprawl.&lt;/p&gt;

&lt;p&gt;It is better distribution, evidence-led debugging, and watching which surfaces people actually use.&lt;/p&gt;

&lt;p&gt;I’m also testing a few FreshContext reviews this week. If you’re shipping an AI tool, MCP server, repo, launch page, or retrieval workflow, I can check for stale-context risk, broken public surfaces, weak provenance, version mismatches, and failure states that look too confident.&lt;/p&gt;

&lt;p&gt;Email: &lt;a href="mailto:gimmanuel73@gmail.com"&gt;gimmanuel73@gmail.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>startup</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Building FreshContext: Temporal Intelligence Infrastructure for AI Systems</title>
      <dc:creator>Immanuel Gabriel</dc:creator>
      <pubDate>Mon, 11 May 2026 20:59:57 +0000</pubDate>
      <link>https://dev.to/immanuel_gabriel_341393bf/building-freshcontext-temporal-intelligence-infrastructure-for-ai-systems-1lmd</link>
      <guid>https://dev.to/immanuel_gabriel_341393bf/building-freshcontext-temporal-intelligence-infrastructure-for-ai-systems-1lmd</guid>
      <description>&lt;p&gt;I’ve been building something called FreshContext.&lt;/p&gt;

&lt;p&gt;The core idea is simple:&lt;/p&gt;

&lt;p&gt;AI systems often treat fresh and stale retrieved information as equally useful.&lt;/p&gt;

&lt;p&gt;FreshContext is an attempt to fix that.&lt;/p&gt;

&lt;p&gt;Instead of only retrieving information, the system applies temporal scoring before signals reach an LLM or agent workflow.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;source timestamps matter&lt;/li&gt;
&lt;li&gt;decay matters&lt;/li&gt;
&lt;li&gt;provenance matters&lt;/li&gt;
&lt;li&gt;retrieval timing matters&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I built so far
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. FreshContext MCP
&lt;/h3&gt;

&lt;p&gt;A Cloudflare-native MCP server with 21 tools focused on freshness-aware retrieval and live intelligence workflows.&lt;/p&gt;

&lt;p&gt;Current stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloudflare Workers&lt;/li&gt;
&lt;li&gt;D1&lt;/li&gt;
&lt;li&gt;KV&lt;/li&gt;
&lt;li&gt;structured JSON envelopes&lt;/li&gt;
&lt;li&gt;freshness scoring&lt;/li&gt;
&lt;li&gt;observability tooling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/PrinceGabriel-lgtm/freshcontext-mcp" rel="noopener noreferrer"&gt;https://github.com/PrinceGabriel-lgtm/freshcontext-mcp&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Fresh HN Feed
&lt;/h3&gt;

&lt;p&gt;A freshness-ranked Hacker News signal feed.&lt;/p&gt;

&lt;p&gt;Instead of simply listing posts chronologically, the feed scores signals using temporal decay and relevance weighting.&lt;/p&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/PrinceGabriel-lgtm/fresh-hn-feed" rel="noopener noreferrer"&gt;https://github.com/PrinceGabriel-lgtm/fresh-hn-feed&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Fresh Jobs Feed
&lt;/h3&gt;

&lt;p&gt;A freshness-ranked jobs API built on public job sources.&lt;/p&gt;

&lt;p&gt;The current focus is AI/ML-oriented roles, but the architecture is designed for broader signal ingestion later.&lt;/p&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/PrinceGabriel-lgtm/fresh-jobs-feed" rel="noopener noreferrer"&gt;https://github.com/PrinceGabriel-lgtm/fresh-jobs-feed&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Live API:&lt;br&gt;
&lt;a href="https://fresh-jobs-feed.gimmanuel73.workers.dev" rel="noopener noreferrer"&gt;https://fresh-jobs-feed.gimmanuel73.workers.dev&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Ops Pulse
&lt;/h3&gt;

&lt;p&gt;One thing I learned quickly:&lt;br&gt;
observability matters.&lt;/p&gt;

&lt;p&gt;I built a separate operational analysis tool for monitoring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Workers&lt;/li&gt;
&lt;li&gt;D1&lt;/li&gt;
&lt;li&gt;cron ingestion&lt;/li&gt;
&lt;li&gt;runtime failures&lt;/li&gt;
&lt;li&gt;cache behavior&lt;/li&gt;
&lt;li&gt;external API failures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The biggest improvement so far wasn’t a new feature.&lt;/p&gt;

&lt;p&gt;It was finally seeing the actual failure patterns clearly.&lt;/p&gt;




&lt;h2&gt;
  
  
  What surprised me
&lt;/h2&gt;

&lt;p&gt;The hardest part wasn’t generating responses.&lt;/p&gt;

&lt;p&gt;It was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;freshness correctness&lt;/li&gt;
&lt;li&gt;runtime isolation&lt;/li&gt;
&lt;li&gt;cache correctness&lt;/li&gt;
&lt;li&gt;partial failure handling&lt;/li&gt;
&lt;li&gt;observability&lt;/li&gt;
&lt;li&gt;temporal consistency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The infrastructure side of AI systems is much deeper than I expected.&lt;/p&gt;




&lt;h2&gt;
  
  
  Current direction
&lt;/h2&gt;

&lt;p&gt;The long-term goal is turning FreshContext into a broader temporal intelligence platform:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;freshness-aware feeds&lt;/li&gt;
&lt;li&gt;agent retrieval infrastructure&lt;/li&gt;
&lt;li&gt;signal marketplaces&lt;/li&gt;
&lt;li&gt;operational intelligence&lt;/li&gt;
&lt;li&gt;temporal ranking APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Still very early.&lt;br&gt;
But the architecture is finally starting to stabilize.&lt;/p&gt;

&lt;p&gt;If you’re building retrieval systems, agents, MCP tooling, or Cloudflare-native AI infrastructure, I’d genuinely love to connect and learn from others working in this space.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>typescript</category>
      <category>worker</category>
    </item>
  </channel>
</rss>
