AI · News · Prediction Markets
Crowdtells
A news feed driven by the money — prediction markets as an assignment desk.

The idea
Crowdtells reads Polymarket and Kalshi as a signal of what the world actually cares about, then turns that signal into a newsroom. The money flags the story; Crowdtells briefs it from many outlets and keeps a living, timestamped record of how the crowd’s belief moves over time.
The thesis: prediction markets are the fastest, least-biased assignment desk in the world. If you let them pick the stories and keep the prose honest to the numbers, you get news that’s both timely and falsifiable.
What makes it interesting
Newsworthiness ranking with MMR diversity
Every market is scored on volume, 24-hour surge, odds movement, comments and contestedness — then a maximal-marginal-relevance penalty per repeated category and platform keeps the feed multi-source instead of one leaderboard.
Hallucination-proof briefings
LLM summaries (Groq, JSON mode) are grounded strictly in retrieved headlines and resolution rules. The model never sees live numbers — odds, volume and gaps are hydrated at render time, so the prose can’t contradict the market.
Cross-platform canonical matching
The same real-world question on Polymarket and Kalshi collapses into one briefing that carries both prices and a computed divergence between them.
Zero-cost, GitHub-native pipeline
A market-aware cron Action dedupes, ranks, fetches news, briefs, and writes OG cards, RSS and sitemaps — persisting durable state to a data branch and deploying via wrangler.
SSG + progressive enhancement
Every story is a crawlable /s/<id> page; the bold Pretext visual layer loads client-side only, so crawlers and no-JS readers always get real text — zero SEO or accessibility cost.
How it’s built
React 19 + TypeScript (strict) and Vite on the front; the data pipeline is TypeScript run via tsx, pulling Polymarket, Kalshi, Google News and roughly ten event APIs. Briefings come from Groq with key/model rotation on rate limits. It ships as a static site on Cloudflare Pages with optional Supabase for accounts — and 794 Vitest cases guarding the ranking and matching logic.
Crowdtells is also where I fell for Pretext — text measured and laid out live so the writing becomes the chart. This very portfolio’s display type is fitted the same way.