LIVE
OPUS 4.7$15 / $75per Mtok
SONNET 4.6$3 / $15per Mtok
GPT-5.5$10 / $30per Mtok
GEMINI 3.1$3.50 / $10.50per Mtok
SWE-BENCHleader Claude Opus 4.772.1%
MMLU-PROleader Opus 4.788.4
VALS FINANCEleader Opus 4.764.4%
AFTAv1.0 whitepaper live at /whitepaper
OPUS 4.7$15 / $75per Mtok
SONNET 4.6$3 / $15per Mtok
GPT-5.5$10 / $30per Mtok
GEMINI 3.1$3.50 / $10.50per Mtok
SWE-BENCHleader Claude Opus 4.772.1%
MMLU-PROleader Opus 4.788.4
VALS FINANCEleader Opus 4.764.4%
AFTAv1.0 whitepaper live at /whitepaper
All systems operational0 AI providers monitored, polled every 2 minutes
Live status
Back to Originals
Analysis · Trust Infrastructure

The Verified Feed Is Live: Cross-Source Story Corroboration for AI Agents

Marcus Chen··6 min read

Most discourse about AI safety in 2026 is focused on the wrong failure mode. People keep talking about hallucinations. Agents make up facts. That problem is real but bounded; modern frontier models hallucinate at single-digit rates on well-grounded queries, and improving steadily. The actual failure mode that's about to bite the autonomous economy is uglier and underappreciated: agents acting on a single source.

When a finance agent reads a news headline that turns out to be fabricated and executes a trade on it, the model didn't hallucinate. The model read the source faithfully. The source was wrong. The agent had no way to know. That's a different problem and it requires a different fix, and tonight we shipped that fix.

What we shipped

As of tonight, TensorFeed has a working verification layer on top of its news aggregation. The mechanic is simple to describe and not simple to build:

  1. We poll 12 distinct AI news sources hourly. The list lives at /api/history/news/sources. Anthropic's blog, OpenAI's blog, Google AI, Meta AI, HuggingFace, Hacker News, TechCrunch, The Verge, Ars Technica, VentureBeat, NVIDIA, ZDNet.
  2. Every UTC night at 07:30, the daily cluster cron embeds yesterday's news (title plus snippet) via Cloudflare Workers AI on the@cf/baai/bge-base-en-v1.5model.
  3. Articles are clustered by cosine similarity at threshold 0.82 using single-link grouping. Stories about the same event from different sources collapse into one cluster regardless of phrasing.
  4. Each cluster is tagged with a corroboration band: single (1 source, default skeptical), limited (2 to 3 sources), broad (4 or more independent sources). The hero article (earliest publishedAt) gets surfaced; the contributing article IDs all stay in the payload so an agent can cross-reference.
  5. Two new endpoints expose the result. Free at /api/history/news/clusters with a 25-cluster cap and an optional ?min_sources= filter, and premium at /api/premium/history/news/verified for the unfiltered "cleared the trust threshold" feed. $0.02 USDC per call. Same AFTA-certified, x402-billable rail as the rest of the premium catalog.

Concretely, an agent asking "was the FDA approval news this morning actually reported by major outlets, or did it surface in one place" now hits a single endpoint that returns either a cluster with source_count=5 (act on it) or source_count=1 (do not). That decision previously required either parallel calls to multiple news APIs or a custom NLP pipeline the agent's developer didn't want to maintain.

Why this is harder than it looks

The naive version of cross-source verification is URL-based dedup. Two articles with the same URL collapse. That misses 90% of real-world corroboration because Reuters and Bloomberg and Anthropic's own blog all have different URLs even when they're reporting the same event.

The next-naive version is title-similarity matching via Jaccard or n-gram overlap. Better, still wrong. It fails on rephrasing ("Anthropic ships Mythos" vs "Mythos: Inside Anthropic's Latest Model") which IS the cross-source signal we're trying to catch. Different newsrooms phrase the same story differently. That's not noise; that's the data.

The right version is semantic. You embed the title and snippet into a dense vector space and cluster by cosine similarity. The bge-base-en-v1.5 model has been around for two years; it's small, fast, free on Cloudflare Workers AI, and adequate for our scale (roughly 200 articles per day). The whole nightly clustering pass fits inside the free Workers AI tier of 10,000 neurons per day with comfortable headroom. The infrastructure is genuinely cheap; what was hard was committing to which architecture and tuning the threshold.

Threshold 0.82 is what we shipped after sketching the trade-off space. Anything above 0.85 is too tight (rephrasings get split apart); anything below 0.78 is too loose (unrelated stories from the same newsroom collide because they share boilerplate). 0.82 sits in the sweet spot for English news headlines plus snippets. We expect to tune this empirically over the next two weeks of real production data.

Why TensorFeed could ship it

The verification product structurally requires the cross-source view at scale. A publisher that aggregates one or two sources can't generate meaningful corroboration counts; the math demands a wide input distribution. That's why this product was always going to live with someone like TensorFeed rather than a model vendor. We aggregate from 12 distinct AI-relevant sources hourly and have been doing it long enough to ship the cluster cron without rebuilding the underlying ingest layer.

The Agent Fair-Trade Agreement plays into this directly. As the AFTA federation grows beyond TensorFeed and TerminalFeed.io, the corroboration math composes across publishers. A future state where five federation members publish their own news streams means "verified across N sources" can include cross-publisher consensus, which is a strictly stronger trust signal than intra-publisher consensus alone. The schema we shipped tonight reserves the array shape for that future without committing to it today.

What this is not

It is not a fact-check. We do not validate the underlying claim, only that multiple independent sources reported the same story. When five sources all repeat a press release verbatim, the verified feed will tag the story as broadly corroborated even if the press release itself is misleading. That's a known limitation. Adding a fact-check layer is a separate product that requires a different input pipeline.

It is also not a real-time signal. Stories that break inside the last hour have not had time for other sources to react. Tonight's verification model is end-of-UTC-day; the cluster is computed against everything we polled up to the day's last hourly RSS run. Real-time clustering is a future iteration if usage demands it.

What's queued

Phase B.1 captured the foundation: per-source RSS reliability scores and daily news snapshots, persisting from May 8. Phase B.2 (this ship) adds clustering and the verified feed. Phase B.3 layers an anomaly detector on top of the source-health series, flagging days where a source went silent or spiked or where the corroboration distribution shifted unusually. That detector needs roughly 14 days of source-health baseline before it produces useful output, which lands us around May 22, 2026.

Beyond Phase B, the longer-term plays are cross-publisher verification (when the AFTA federation grows past two members) and a per-source tier system that scores T1 first-party vendor blogs differently from T3 aggregator wires. The data foundation we shipped tonight makes both of those a forward-only build.

Try it

The first cron runs at 07:30 UTC tomorrow morning, embedding today's news. By tomorrow afternoon both endpoints return real cluster data. Until then, the endpoints respond with empty cluster arrays, which is the correct behavior for a not-yet-populated date.

The autonomous economy is going to grow up the same way every other economy grew up: trust infrastructure compounds with the volume of transactions running through it. We just shipped the trust layer for one specific surface. There's a long road of building others.