All work

Founder · side project

DayZer0

An AI health coach I built alone: chat with Daizee and she turns your meals, sleep and schedule into one plan for today.

Role
Founder, built it alone
When
Jun 2026 – now
Status
Live on Google Play
Platforms
Android
Built with
Flutter, GetX, Firebase, Cloud Functions, Gemini, RevenueCat, OneSignal, Health Connect
The chat screen in the Midnight Rose theme. The Today card shows the focus, a 15-minute yoga flow after work, with Eat, Move and Recover actions all ticked, Low energy and Short on time chips, and a 6 of 7 days row. Below it, Daizee suggests a chair stretch so a sore left knee can rest.
The What Daizee remembers page, grouped by category: a peanut allergy kept long-term, no dairy after 7 pm fading in 18 days, a sore left knee fading in 5 days, and two routines fading in 34 and 42 days, each with a bar for the time left.
The Meals page listing today’s and yesterday’s meals with calories and protein for each, including masala dosa with filter coffee, a paneer wrap and a photo-logged plate of roti and dal. Today adds up to 2,180 kcal.
The Progress page: a four-week grid of the days the user showed up, shaded by effort, with 25 of the last 28 days filled, follow-through bars for Eat, Move and Recover, and today’s calories with 156 kcal left.

Why I built it

Four years ago I decided to get healthy, and for three or four months almost nothing changed. The training took an hour or two a day. The other twenty-two hours decided the result: what I ate, how I slept, whether I recovered and whether I kept at it. I taught myself through YouTube, Google and a lot of failed experiments, and it took over a year.

Then I tried to help my family, and what worked for me didn’t fit their weeks. Meals are cooked for the whole household, and other people decide the shape of the day. I realised it wasn’t really a motivation problem. The hard part was staying consistent when the plan and the day disagreed, because a couple of missed days can take the whole week with them.

DayZer0 tries to answer one question each day: what should I do today? The name comes from the same thinking. If yesterday didn’t go well, today is day zero.

What it does

The app opens on a chat with Daizee, the coach. Even onboarding is a conversation, one question at a time, with each answer deciding the next.

Every day at your local midnight she writes a plan with one focus and three actions: Eat, Move and Recover. It draws on your profile, recent meals, sleep and steps from Health Connect, and what she remembers about you. Tap “Low energy” or “Short on time” and she rewrites it. At 3pm she nudges you about what’s left, like protein still to go.

You log meals by typing (“2 idli and sambar”) or sending a photo. One Gemini call decides whether a photo is food, a weighing scale or something else. Food is logged with grams, calories and macros per item, a scale reading goes to the weight log, and anything else isn’t logged. Each log comes back as a card you can undo, and meals can also be edited.

She remembers what you tell her, like an allergy or a sore knee, and every memory expires. You can see what she knows and how long each fact has left.

Calorie and protein targets are calculated on the server with the Mifflin-St Jeor formula. If someone prefers not to state their sex, I use the midpoint of the male and female constants. Free users get 3 messages and 1 meal scan a day with a rule-based plan. Pro, through RevenueCat, gets 30 messages and 20 scans a day and a plan written by Gemini.

How it works

I spent June and July on the Flutter UI with mock data, then started the real backend on Firebase in August. It now runs on Firestore, Storage and 12 Cloud Functions.

A cheap router picks the context

Every message first goes to a cheap Gemini call with thinking off and a strict JSON schema. It decides whether to reply directly, log something, pass it to the coach or mark it out of scope. For the coach, it also picks which context to load from a fixed list, like today’s meals or active memories. “I ate biryani for lunch. Can I eat ice cream?” becomes a meal log plus a coaching question. I wrote test cases to run before changing the router prompt, such as “a goal weight is not a log”.

Memory with an expiry

By default a symptom lasts 5 days, a habit 60 and an allergy a year. If you say you’re in Dubai for two weeks, the router can set that lifetime instead. The midnight job queues a check-in for memories about to expire, and your reply renews or closes the fact. Getting the model to attach a lifespan and ask before dropping a fact took more iterations than anything else in the app.

Local midnight for every user

The morning plan and the 3pm nudge first ran on India time, because that’s where I was testing. A user in the US would have got their morning plan after lunch. Now every user has their own next midnight and next 3pm, worked out from their time zone. Hourly functions pick up only the users who are due and move their next time forward.

Retry-safe turns and quotas

Each chat message runs on a Firestore trigger, and triggers can fire more than once. So the function first claims the turn in a transaction, with a lease longer than the function timeout, and a retry can’t start a turn that’s still running. Daily quotas are claimed the same way and refunded if a turn fails. Firestore rules stop the app from writing its own usage counters or meal totals.

Where it is now

DayZer0 is live on Google Play, published under Mobil80’s developer account, and I’m still working on it. The iOS version isn’t out yet. I submitted it to RevenueCat Shipaton 2026 at the end of September. Results hadn’t been announced when I wrote this in October 2026. Next is talking to Daizee by voice, and notifications based on context rather than a fixed schedule.

Screenshots are from a demo account.