All work

AI · News · Prediction Markets

Crowdtells

A news feed driven by the money — prediction markets as an assignment desk.

Solo · design & engineering· 2025–26· Live · crowdtells.com
The Crowdtells home page: a large serif CROWDTELLS masthead over a ranked list of top stories, each tagged with its prediction-market source.
crowdtells.com — stories ranked by newsworthiness, briefed from many outlets.
01

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.

02

What makes it interesting

01

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.

02

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.

03

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.

04

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.

05

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.

03

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.