Paperbite
Five AI agents in sequence turn dense academic papers into five-minute reads or engaging podcasts. Built against a 250M-article corpus across 26 research areas, with recommendations tuned to what you actually study.
- Role
- Founder
- Year
- 2025
- Stack
- React Native, Multi-Agent AI, Next.js, TypeScript
The problem
"New study proves…". "Scientists discover…". "Incredible finding reveals…".
Science communication has a pipeline problem. The paper is careful and hedged; the headline is neither. Somewhere between the abstract and the tweet, every qualifier gets dropped, and the public ends up confidently wrong.
Paperbite was an attempt to build the missing middle: a version of the paper that is short enough to actually read, and honest enough to be worth reading.
The approach
Five AI agents in sequence, each with one job and permission to fail loudly:
- Extract — figures, methods, sample size, funding
- Verify — does the abstract's claim survive the results section?
- Simplify — reading age down, hedging preserved
- Narrate — script for the five-minute audio cut
- Fact-check — the last gate; disagreement holds publication
The rule that mattered most was the last one. Any agent could say I am not confident, and low confidence held the bite for review rather than shipping it. A pipeline that cannot refuse is a pipeline that will confidently produce nonsense.
Behind it: a corpus of 250M scientific articles across 26 research areas, with recommendations tuned to what you actually study. Shipped to iOS, Android and web.
Why it ended
It did not find its market before it ran out of room. The pipeline design is the part I would build again — and largely did, in a different shape, at Nora.
/** Five agents, and each one may say
* "I am not confident". */
export const bitePipeline = chain([
extract, // methods, sample, funding
verify, // does the claim survive?
simplify, // reading age down
narrate, // script for the audio cut
factCheck, // disagreement blocks it
]);
export async function makeBite(paper: Paper) {
const out = await bitePipeline.run(paper);
if (out.confidence < 0.8) {
return { status: "held-for-review", out };
}
return { status: "ready", out };
}