Independent ProjectOn the List: A personal project
Photograph the wobbly banister or mumble at your phone while holding a paint tray. The app works out the room, the job, and how long it honestly takes, then hands you three things each morning.
At a glance
- Problem
- Renovation to-dos live in camera rolls, notes apps, whiteboards and half-remembered conversations, so nothing ever gets finished.
- Approach
- A punch-list app where capture is a photo or a voice ramble, and AI does the structuring instead of the person holding the paint tray.
- Outcome
- A working beta: one shared house list, three suggested tasks a day, and a progress view that makes slow work feel like progress.
- Role
- Product, design, and build
- Team
- Me, my husband, plus the house
See it in action
From many lists, to one
We had purchased an old house that was in need of serious renovation. The bulk of the work had been done by the time I got involved with the project, but that last 20% of course takes forever to complete. Keeping track of it was even worse. My husband finally asked me to start a list so that I wasn't just pointing out things that needed to be done. Aha! There's a better way, I thought. And On the List was born.
Make capture a snap
The entire capture flow is one decision: point the camera at the problem and talk. Blurry is fine. Everything else, the room, the type of work, how long it honestly takes, gets inferred after the fact and shown back to you as editable fields.
The voice path runs a two-step pipeline. Audio goes to a speech-to-text model, then the transcript goes to a fast reasoning model with the house's own rooms, work types, and people passed in as candidate ids. The model returns a small JSON object: title, room ids, type ids, effort, whether to hire it out, and who it was assigned to.
Two rules in that prompt matter more than the rest. It may never invent work that was not said, and it may never set priority. Priority is a household negotiation, not a model output. Anything it returns that is not in the supplied id lists is discarded before it reaches the database.
Just three things a day
A house with ninety open tasks does not have a prioritization problem, it has a starting problem. The home screen never shows ninety. It guesses from the day of the week and the time as to how much time you have to complete tasks and serves three tasks that fit that window.
The ordering is deliberately unglamorous. Effort and priority rank the pool, but tasks that block other tasks come first, because a coat of primer has to dry before anything else happens that day, and tasks in the same room cluster together so you are not carrying tools up and down stairs. You can swap one out, snooze it for the day, or reshuffle the set.
Shared lists for the whole household
Here a task lands in one place both people can see, filed to the right room, and either person can put their name on it (or assign it... iykyk) or leave it open for whoever gets there first.
The daily three respects that: you can ask for your tasks or the whole house's. The argument moves off the individual task and onto the list, on a Sunday, which is a much cheaper place to have it.
Making slow work feel like progress
Renovation is a long grind with almost no feedback, so the app keeps two records of it. A burn down chart tracks how many tasks are added and how many are completed.
The second record is trade levels, which came at the request of my husband because he loves badges and gamification. Finish three tasks tagged with a given trade and you are an apprentice, ten makes you a journeyman, twenty-five a master, using real trade titles played straight: painter, tile setter, finish carpenter, caulker. There are one-off badges too, for walking the whole house or catching something early. It is a small thing that turned out to shape behavior, because the tiers give you a reason to finish a boring caulking task.
What I built it on
The app is TanStack Start with a Supabase backend: rooms, tasks, task-to-work-type links, room photos, and an activity log.
Transcription and parsing run server-side through the Lovable AI Gateway so no keys touch the client, with speech-to-text and a fast reasoning model behind two thin server functions. Access is limited to an allowlist of household members rather than open signup, because the I'm not made of money!
Positioning it
I wrote and built the marketing site alongside the app, because the pitch is what forced the product to stay narrow. "Put it on the list. Do three things. Go outside." is a promise the app has to keep, and it killed a lot of tempting scope: no tutorials, no project management, no Gantt chart of your own home.
Key Takeaways
The hardest part of a to-do app is the first ten seconds.
Every renovation list dies at capture. If logging a task costs a form, people take a photo instead and never come back to it. Making capture a photo or a sentence, and letting a model do the filing, is the entire product.
Let AI structure the work, not decide the work.
The model infers room, type of work, effort, and who was named. It is explicitly forbidden from setting priority or inventing tasks that were not said out loud. Judgment stays with the humans who live in the house.
Constrain the model with the user's own data.
Rooms, work types, and people are passed in as ids, and any id the model returns that is not on those lists gets thrown away. That single validation step turned a chatty transcript parser into something reliable enough to trust.
Three is the feature.
A house has ninety open tasks and that is exactly why nobody starts. Serving three that fit the time available, ordered so you do not walk the same trip twice, is the difference between a list and a Saturday.
More case studies
Rebuilding Big Cartel's discount engine to drive merchant adoption and conversion.
An AI-powered system that surfaced product problems hidden in thousands of seller messages.
Five experiments that built the case for a trial-first acquisition model.
How lightweight fixes solved a duplicate-account spike without a multi-month rearchitecture.
A 17-skill AI system that processed 20,000+ pages of discovery and took the document-dump tactic off the table.
How solving a missing draft-product state and a decade of one-off themes shipped Big Cartel's strongest upgrade driver.