The Verified Feed
Cross-source story corroboration for AI agents. Embedding-based clustering across 12+ AI-relevant news sources. Every cluster carries a corroboration_band tag and an explicit source_count.
The shape of the problem: most AI-safety discourse in 2026 obsesses over hallucinations. Real failure mode of the autonomous economy is uglier and underappreciated: agents acting on a single source. When a finance agent reads a fabricated news headline and executes a trade, the model did not hallucinate. The model read the source faithfully. The source was wrong. The agent had no way to know. Verification across multiple independent sources is the fix, and it requires the cross-source view at scale.
How it works
1. Hourly multi-source ingestion
TensorFeed polls 12 AI-relevant news sources every hour and persists the deduped article archive plus per-source health counters. Sources currently include: Anthropic Blog, OpenAI Blog, Google AI Blog, Meta AI, HuggingFace, Hacker News (AI-filtered), TechCrunch AI, The Verge AI, Ars Technica, VentureBeat AI, NVIDIA AI, ZDNet AI.
2. Nightly embedding pass
Every UTC night at 07:30 the cluster cron embeds yesterday's articles via Cloudflare Workers AI on the @cf/baai/bge-base-en-v1.5 model. 768-dim float32 vectors per article, batched at 50 per call. Stored under news:embeddings:{date} with a 30-day TTL.
3. Single-link cosine clustering at threshold 0.82
Articles are grouped by cosine similarity at threshold 0.82. URL dedup misses 90% of real-world corroboration; semantic embeddings catch rephrasings across newsrooms. Threshold 0.82 is the empirical sweet spot: tighter splits rephrasings apart, looser collapses unrelated stories that share boilerplate.
4. Corroboration band tagged on every cluster
Each cluster carries: source_count, sources (list of contributing publishers), article_ids, hero article (earliest publishedAt), and a corroboration_band tag: single (1 source), limited (2-3), broad (4+).
Endpoints
GET /api/history/news/clustersfreeStory clusters for a single UTC date. Top 25 clusters returned with optional ?min_sources= filter.
curl 'https://tensorfeed.ai/api/history/news/clusters?date=2026-05-09&min_sources=2'
GET /api/premium/history/news/verified$0.02 USDCThe verified feed. Filtered to clusters with N+ independent sources (default min_sources=4). Single-date or 30-day range. Agents asking "do not act on a single source" get a clean stream of stories that cleared the threshold.
curl -H 'Authorization: Bearer tf_live_...' \ 'https://tensorfeed.ai/api/premium/history/news/verified?date=2026-05-09&min_sources=4'
GET /api/premium/history/news/clusters/full$0.02 USDCFull untruncated cluster set. Single-date or 30-day range. Removes the 25-cluster cap on the free endpoint.
curl -H 'Authorization: Bearer tf_live_...' \ 'https://tensorfeed.ai/api/premium/history/news/clusters/full?from=2026-05-01&to=2026-05-09'
GET /api/history/news/clusters/datesfreeIndex of UTC dates with cluster data captured. Pair with the lookup endpoints to page the archive backward from today.
Sample cluster shape
{
"cluster_id": "k3mn8q",
"date": "2026-05-09",
"article_count": 6,
"source_count": 5,
"sources": [
"anthropic.com",
"techcrunch.com",
"theverge.com",
"reuters.com",
"bloomberg.com"
],
"article_ids": ["a1", "a2", "a3", "a4", "a5", "a6"],
"hero": {
"id": "a1",
"title": "Anthropic Ships Mythos to Defenders First",
"url": "https://www.anthropic.com/news/mythos",
"source": "Anthropic Blog",
"publishedAt": "2026-05-07T18:30:00Z"
},
"first_seen_at": "2026-05-07T18:30:00Z",
"corroboration_band": "broad"
}What the verified feed is NOT
- Not a fact-check. We verify multiple sources reported the same story, not that the underlying claim is true. Five outlets repeating a misleading press release will all cluster together and get a broad-corroboration tag.
- Not real-time. Clusters are computed end-of-UTC-day. Stories breaking in the last hour have not had time for other sources to react.
- Not a substitute for editorial judgment. A verified-broadly story with a misleading angle is still misleading. Agents should treat corroboration as a necessary but not sufficient signal.