Feed
arXiv Atom API
One request per run, window widens when thin
Technical overviewApplied AI engineering and output verification
One page a day from three sources, where every claim in a paper summary is checked against the paper first.
Source code
The repository is private. The architecture, engineering decisions, and verified evidence are documented below.
01
Each morning the digest builds one page from three sources. It reads the day's new AI papers on arXiv and summarizes each from the HTML body; before publishing, the model must quote the fragment a result came from and every figure must appear in the source. Hacker News and Contrary Research are added as curated one-line picks. It is live at papers.pesanth.com.
02
Feed
One request per run, window widens when thin
Full text
Paper body, references and math stripped, tables kept
Picked feed
Day's stories, a few picked with a reason
Picked feed
Editorial deep dives via Prismic, picked the same way
Model step
Shortlists papers and picks the other sources
Model step
Mechanism, method, figures, limitations
Inference
Hosted free tier or local model
Gate
The quoted fragment must appear in the source
Gate
Every number must appear in the source
Policy
One retry, then publish marked failed
Record
One JSON file per day, the record
Web interface
Filterable index plus Hacker News and Contrary tabs
Automation
A systemd timer each morning
Public ingress
Outbound-only ingress to read-only nginx
03
Requiring a verbatim fragment turns a half-remembered summary into a string comparison; a quote that cannot be found is published marked unchecked.
Once notes name datasets and scores, a plausible figure is easy to invent, so every number is matched against the source before publishing.
Hacker News and Contrary are chosen with a one-line reason and never summarized, because a one-line reason makes no claim to verify.
The three sources and the publish step are nodes joined by a conditional edge that publishes only when a source produced something, and each paper's summarize step is a generate, verify and retry loop as its own graph. The model calls and their rate pacing stay outside the framework, so the run still fits the free tier's daily budget.
04
$ python -m arxiv_digest
papers: 120 candidates in the last 96h
5 summaries · 4 read in full · 1 abstract
✓ checks: 1 quote unverified, flagged
picks: 5 Hacker News · 2 Contrary
✓ published papers.pesanth.com05