My AI product, built solo In progress
Todzy: a daily planner for ADHD
A daily planner for study, gym, career and personal tasks, with a “Help me start” AI feature that suggests one small first step when a task feels too big to begin.
- What it is
- My own product, in progress
- My role
- Everything, solo: problem discovery, customer survey, product, build, AI evaluation, production and monitoring
- Stack
- React (Vite), Node and Express, SQLite, Clerk sign-in
- AI
- Groq (Qwen) with a Cloudflare Workers AI fallback and a local template as last resort
- Updated
- October 2026
The problem
Starting is often the hardest part of a task. A planner can list what needs doing, but it rarely helps with the first move. I began with a customer survey to understand how people plan their day and where they get stuck, then shaped the product around it. The AI feature answers one question: what is the smallest step that gets this task going?
What it does
Plan the day
Today and a backlog side by side, quick add, and planning details on every task: duration, priority, due date, fixed time and energy needed.
Help me start
One tap asks the AI for one small first step, based only on the task title.
Private by design
Every task belongs to the signed-in account, checked on the server in every query.
Accessible
Keyboard friendly, visible focus, phone-friendly sheets, and status never shown by colour alone.
Product and AI decisions
One gateway, three fallbacks
Every AI call goes through one gateway: a primary model, a second provider, then a local template, inside a 4-second budget. Users always get an answer.
Guardrails in and out
Emails, phone numbers and links are removed before the model sees the text. Crisis language skips the model and gets a supportive reply. Answers must be one short sentence, with no shaming words, and the AI may repeat a user’s own words but never labels them.
An evaluation gate in CI
42 test cases across vague, big, emotional, personal-data, prompt-injection and Spanish tasks. A release fails below 90% pass, above 5% false blocks, or below 100% on safety cases. Deliberately bad answers check the scorer on every run.
Human review on top
Rules alone missed 3 of the 5 failure patterns I found by labelling answers by hand, such as invented details and country-specific assumptions. Those findings shaped prompt v2.
Handling a model retirement
When the primary model was retired, users silently got template answers. I ran a bake-off of replacement models on the real prompt and added fail-fast checks so this shows up immediately.
A 50/50 rollout
The feature is limited to an allowlist and split 50/50 by task, with events designed for an intent-to-treat comparison.
Results so far
Measured in October 2026 on the project’s evaluation set; human labels cover 36 answers. Known issue: one Spanish task was answered in English, and a language fix is planned.
Next
- Run the 50/50 test with a small group of users and compare task starts.
- Metrics dashboards and database-backed usage caps.
- Detect the task’s language and tell the model which language to answer in.