← All builds

product · solo build · 2026

Knowing how long your to-do list will actually take.

Tally turns a to-do list into a plan. You write lines like a normal note. Claude reads the whole note and gives each line a most-likely time, a range, and a category. The ledger adds it up, and the Day view lets you drag items onto a calendar.

Role Product owner and builder · Team Solo, built with Claude Code · Timeline September to October 2026

The problem

A to-do list says what to do, not how long it will take, so a day can be overbooked before it starts. I liked Timely, a note-taker that sizes each line, and wanted my own version: a different design, with the estimates in a column on the right.

What I did

  • Rebuilt the idea from scratch in React, with an estimate column beside every line.
  • Sent each line to Claude with the whole note as context. It returns the most likely minutes, an 80% range, a confidence level, and one of seven categories.
  • Built the Ledger: remaining vs. done, a finish-by time, a capacity meter, where the time goes, quick wins under 15 minutes, and deep-work blocks over 90.
  • Added a Day view. Drag items from an Unscheduled tray onto the calendar, resize a block to change how long it takes, or do all of it from the keyboard.
  • Kept the user in charge. Click any estimate to override it, write "(1h)" in a line and it's honored exactly, and ⌘B splits a big line into 3 to 7 estimated sub-tasks.
  • Made it work with no key at all. Estimates fall back to a keyword heuristic, marked with ~. A visitor's own key always pays for their use, and the server key needs an access code.

Results

7categories per estimate
80%range around every estimate
3–7sub-tasks per breakdown
0accounts needed

Notes live in the browser. Requests are capped at 50 lines and 64 KB per call, so a runaway loop can't run up a bill.

What I'd do differently

Test against the deployed runtime, not just the dev server. Vite and the type checker accepted imports that Node rejected once deployed, so I added a check that loads every function the way Vercel does. Next on the roadmap: an agent that does the task, not just sizes it.

Artifacts

Try Tally ↗ · Source on GitHub ↗

The Day view: a capacity meter, the Unscheduled tray, and blocks on the calendar.
The Day view: a capacity meter, the Unscheduled tray, and blocks on the calendar.
The Summary: what's left, the finish-by time, and where the time goes.
The Summary: what's left, the finish-by time, and where the time goes.
Live preview Open in new tab ↗