Adina Lieblich GitHub ↗
Case study · personal build

Lilach

Voice in, Claude in the middle, a structured task out. Built solo over about two months, in daily use.

Architecture
Cold start ~500ms to 1s · about $3 a month · serverless
↑ this is the real app · tap inside, scroll, try it
01 · Two models, not one
Match the model to the task
Haiku classifies the rough shape of a capture, Sonnet extracts the clean task. Starting all-Sonnet cost ~$15/month; splitting the work by difficulty cut it to ~$3/month with no quality drop. The classifier job is genuinely easier than the extractor job, so it gets the cheaper model. That is just engineering discipline.
02 · Voice as the only input that matters
Capture has to be reflexive
Under a second, eyes-free, usable while walking or mid-conversation. iOS Shortcut to dictation to a webhook to Claude to a Notion row. If you have to think about how to capture something, you won't.
03 · Notion as datastore, PWA as interface
Database in one layer, interface in another
Notion is a wonderful database and a slow daily driver, four or five taps just to mark a task done. So it stays as the owned, queryable source of truth, and a custom React PWA sits on top, presenting the data the way you actually use it.
04 · Notifications with manners
Push that resolves from the lock screen
A worker watches for overdue items and pushes them via Web Push with action buttons, Done and +1 day, straight from the lock screen. Scheduled nudges add a Monday roundup, a Sunday review, monthly resurfacing of parked items, and streak milestones at 7, 14 and 30 days.
05 · Confidence-driven UX
Ask for help only when genuinely unsure
Low-confidence captures are flagged for a quick review rather than silently guessed. The system is confident enough not to interrupt during capture, and honest enough to raise its hand afterwards.
06 · Cutting calendar on purpose
Knowing what not to build
A calendar view was scoped out deliberately. It would have doubled the surface area for a feature that fights the reflexive-capture idea. The decision to not build it is the decision.
Measured latency
Webhook to classifier response200 to 400 ms
Classifier (Haiku)300 to 600 ms
Extractor (Sonnet)800 to 1500 ms
Notion write200 to 400 ms
Lilach · built and maintained by Adina Lieblich · Perth, Australia