How it works

Daybreak is a cron job, one model call, and a JSON file in a git repository. There is no backend to run and nothing to pay for beyond a few cents of tokens a day. The whole point is how little machinery it takes.

The daily run

  1. 01

    A scheduled job wakes up

    A GitHub Action is scheduled for 09:13 UTC, aimed at early morning on the US West Coast. GitHub queues scheduled jobs when it is busy, and this one has started up to five hours after its cron time, so the brief arrives in the morning rather than at a fixed minute. It can also be triggered by hand from the Actions tab. Nothing is running the rest of the day: there is no server.

  2. 02

    Eight feeds get pulled

    Each feed is parsed, items older than 36 hours are dropped, and anything already published in an earlier brief is removed by link. A keyword filter thins the rest, and at most 40 headlines go forward.

  3. 03

    One model call ranks them

    A single Claude call picks the ten that matter to a product manager, writes one sentence on why for each, names the companies involved, scores importance from 1 to 5, tags the story, and writes the day's summary. One call a day is the entire model cost.

  4. 04

    The result is committed

    The ten picks are merged into public/data/digest.json and pushed back to the repository by the job itself. The file's git history is the archive, which means every brief is diffable and nothing can quietly change after the fact.

  5. 05

    This site reads the file

    The frontend fetches that same JSON as a static asset. No database, no API, no server rendering of the data. Everything you can filter, search, and chart here is computed in your browser from one file.

The eight feeds

  • TechCrunch AI
  • The Verge
  • VentureBeat AI
  • AWS News
  • NVIDIA Blog
  • Stratechery
  • Lenny's Newsletter
  • Hacker News

Eight is a deliberate number. A wider net mostly adds duplicates of the same story, and every extra headline costs tokens in the one call that does the ranking.

What the model returns

The prompt asks for raw JSON in a fixed shape. It is a prompt contract, not a tool schema: the response is trimmed of any code fence, sliced between the outer braces, and parsed. If that parse fails the run stops and the day is skipped rather than writing something malformed into the archive.

What it does not do

  • It does not verify anything. The model ranks headlines and snippets, so a wrong headline produces a wrong summary.
  • It does not retry a bad response. One call, and a skipped day if it comes back unparseable.
  • It does not personalise. Everyone sees the same ten stories. What you have read is remembered in your browser and nowhere else.
  • It does not run when the schedule is missed. GitHub pauses cron jobs on inactive repositories, so gaps in the archive are real gaps, and the status bar says so.