I have the problem every AI engineer has: the field moves faster than a human can read. arXiv alone releases 300–600 papers a day across cs.LG, cs.AI, cs.CL, cs.CV and cs.RO, and they land in one batch. Lab blogs and model releases arrive on their own schedule. Skimming a social feed for signal means outsourcing your attention to an engagement algorithm.
What I wanted was to stay current on my commute — no screen, no abstracts, just someone competent telling me what happened yesterday and why it mattered. Nobody was making that show, so I built the thing that makes it.
It runs on a home lab: a used Tesla V100 32 GB and an RTX 3090, one machine, no cloud GPU. Four stages, and the interesting engineering is in what each one refuses to do.
1. Digesting the day
Ingestion is a paged sweep over arXiv's submission order plus 63 curated sources — lab blogs, release feeds, and a discovery service that proposes and validates new ones. A Redis high-water-mark makes quiet cycles nearly free; a lookback floor keeps coverage if the watermark is ever lost. The whole day's batch enters the candidate pool, because a paper you never fetched is a paper you can never rank.
Reading everything is only affordable because of what comes next. Every candidate gets a deterministic triage score — topic relevance, abstract richness, recency, no model involved — and only the top slice is dispatched for expensive analysis. LLM spend is decoupled from scrape volume, so I can add a source any time without touching the bill. In practice that's about 230 items a day fully analysed, out of 13,180 to date.
Whatever survives triage is analysed from its full article body, not the listing snippet — one fetch each, routed by type (arXiv PDF versus HTML), carrying an extraction status so a paywalled or listing-only item is never silently treated as a full read. Ranking a paper from its abstract is ranking the marketing copy.
Each item is then scored on four axes — breakthrough novelty, human impact, field influence, technical maturity — and every score ships with the model's written reason for it. That's what makes the feed usable: a bare number is a verdict you can only accept or ignore; a number with its reasoning is something you can disagree with.
Because the router deliberately uses several LLM providers, and different models score on different scales, each raw score is z-scored against that model's own distribution for that axis and mapped onto a pooled cross-model reference. The transform is affine on purpose — it preserves the spread between items, so the top of the feed stays differentiated instead of collapsing into a wall of tens. Analysis runs at temperature 0, and calibration happens on the way in, so the breakdown you see on an item always matches the ranking you saw in the list.
2. Writing the review: a newsroom of models
The draft isn't one prompt asking for an article. It runs Stanford's STORM, which writes the way a newsroom does: a question-asker interviews an expert about the topic, that conversation surfaces what actually needs covering, the exchange becomes an outline, and only then does a writer generate sections — each one grounded in retrieved evidence. I point the retriever at my own analysed corpus rather than the open web, so the review can only be built from items the pipeline has already read, scored and cited.
The part I like most is who gets which desk. Every provider in the router carries a live benchmark score, and roles are assigned by measured quality — deterministically, not by shuffle:
| desk | assigned to | why |
|---|---|---|
| article_gen article_polish editor | strongest model | writing and judging the prose is where quality shows up |
| outline_gen | second strongest | structure matters, but it's a smaller surface |
| question_asker conv_simulator | weakest model | simulating an interview is volume work, not craft |
Two rules keep that honest. Transports are collapsed by model first, so two endpoints serving the same weights can't occupy two different quality slots and fake a diverse newsroom. And free providers do all the work: paid ones rank after every free one regardless of benchmark score, and sit at the tail of the fallback chain as a true last resort. The newsroom is staffed by whoever is both good and free, today.
The draft then walks six committed stages — English generation, quality gating, English commit, translation, translation commit, published — with one step table driving both the forward path and recovery, so resuming an interrupted run means re-entering the same walk partway rather than running a second code path that can drift from the first. The Chinese edition is a gated stage of its own, not a machine translation bolted on at the end.
Before any of it, an admission gate checks the day is even worth writing about — minimum corpus size, minimum count and share of high-tier sources. A thin day waits and retries rather than burning the slot on a weak edition.
And the finished draft has to clear three checks that measure deliberately different things: source grounding (does it cite enough independent high-tier sources — fail-closed, no override), citation alignment (does every citation number resolve to the right reference), and per-claim entailment (is this sentence actually supported by that evidence, or does it assert a number, causal link or provenance the source never states). Failures become targeted rewrite instructions, and after repair the whole review is re-audited — a partial re-check is how a repaired defect walks past the gate that repaired it.
“Cites a source” and “says what the source says” are different properties. Most pipelines only check the first.
3. The studio: turning a document into something worth hearing
The words first. Written prose reads badly aloud in a long tail of ways no rule set can enumerate — numeric ranges, parentheticals, sentences built for the eye. An LLM pass rewrites the narration into broadcast register and then verifies its own output: every rewritten chunk must preserve the line count, preserve the exact multiset of digits, stay inside a length band, and keep a minimum overlap with the original, or that chunk falls back to the deterministic version. The rewrite may improve a phrase; it may not invent a number.
Then the voice. Synthesis is a cloned voice per language, generated in length-sorted batches on the 3090 — batching is the entire throughput story, measured at 0.223 real-time factor batched against 2.88 sequential. Then every take is transcribed by whisper-large-v3 and scored against the text it was supposed to say, and the first take that passes is the one that ships. The judge runs on the V100 alongside a resident 27B local model the analysis router falls back to. Nothing leaves the building.
Then delivery. Sentences concatenate with fixed pauses, the result is loudness-normalised to broadcast target, and it's encoded as a fast-start MP3 so a streaming player has duration and a seek table before the file finishes downloading. Out comes a 24-minute English episode and a 28-minute Chinese one, every day, each with a transcript.
4. Distribution
Episodes are mirrored server-side into a public bucket and an edge service builds the RSS; the catalog is append-only for episodes that age out of the review window, so a subscriber's back catalogue never quietly shrinks.
The same content also lands in an iOS app — the ranked feed with the reasoning visible, swipe triage that trains an on-device recommender, keyword alerts pushed the moment a topic you follow appears, a 30-day searchable archive, and the audio. No account, no ads, no analytics SDK; an anonymous UUID is the only thing my server ever sees.
What makes the whole thing automated rather than merely scheduled is a sentinel that polls every fifteen minutes. It doesn't ask whether the job returned success — it checks the exact publication slot, rolling six-of-seven-day coverage, and visibility in both the private and public feeds. “The task succeeded” and “a subscriber can see today's episode” are different claims, and only the second one is the product.
What's next
Right now everyone gets the same edition. The architecture doesn't require that: the ranking axes, the keyword tracker and the review planner all already take a topic scope. The obvious next step is per-listener briefings — “only embodied AI and SLAM” — built from the same corpus, the same newsroom, the same gates, the same voice. One pipeline, many shows.