Arkadii GrebennikovProduct Designer

Not Today · AI product · Personal

Nobody has ever felt a calorie. You feel a day.

An iOS app that answers one question: did today add time to your life, or take it away? One number, in minutes. I took it to TestFlight on my own, with no Swift — but the case is about the method. I wanted to find out whether I could ship a product without doing anything by hand: no code, no mockups, no references. Briefs, and judgement on what came back.

Role

Everything

Stack

SwiftUI, iOS 18+

Built with

Claude Code, Cursor, Notion

Time

~2 months of actual work

Not Today on an iPhone, showing the day's total in minutes of life

Why another habit tracker

Because none of them use a unit anybody can feel. A calorie is a unit of heat. A step is a unit of walking. Neither one tells you what it cost you, so the number goes up and nothing changes.

Life expectancy research already prices these behaviours — in minutes and hours. That unit was sitting there unused. Not Today is what happens when you make it the interface.

A sentence in, minutes out — and the reason underneath. The run and the sleep covered the pancakes; the cigarettes put the day under.

Half the day fills itself in

Steps, sleep and workouts come straight from Apple Health, so most days are already counted before the app is opened. Scoring runs entirely on device, and entries sync to your own iCloud so the app survives a new phone. The exception is a shared challenge: name, progress and weight go to a server, because the other person has to be able to see them.

Screen time is deliberately not taken from the iOS API — no permission, no privacy question, and the app is not owed that access to do its job.

Connect Apple Health and ninety days of history are already counted before you log anything.

No mockups, no references

Not one mockup. The brief was text: I described what should happen on a screen and gave no references at all. For the first months I did not touch the look of it — it stayed default while the functionality got built.

The rule was the point of the experiment, not a shortcut. If I had started drawing, I would have been answering a different question.

Instead of drawing a screen I got a wall of them to judge. The brief was text; this came back.

The orchestra

When there were more tasks than fit in my head, I connected Notion to the model. Cards get written during the discussion itself, the screen flow updates on its own, and a separate page holds a shot of every screen — shared memory, so the product never has to be explained from scratch again.

Each card carries a Start checkbox. I go through the backlog and tick the ones that do not need me. The model looks at Notion a couple of times an hour, picks those up and works through them — overnight, while I sleep. I read the results in the morning.

What gets done is my call. When and how is the model’s. Alongside it sits a set of agents with roles — product, research, UX — that argue an idea before anything gets written.

Every card says who it is for — code only, code plus my step, only me — and carries the Start checkbox that lets it go.

Where the model let me down

The raw API model counts calories badly — confidently and wrongly, while the chat product on the same family does it well. There was no clever fix: I worked through models until one counted acceptably, then kept it.

What design changed, and what it did not

Once I turned to design the app got much better to look at. The UX barely moved.

My guess is that there are so many habit trackers in the world that the models have more than enough references to arrive at a sensible flow without me. The taste was worth adding. The structure was already there.

Three versions of one screen. Look at what does not move: the number, the button, the grid of metrics, the tab bar. Only the treatment changes.

Everything after the code

A week or more went to Apple certificates and provisioning: done in App Store Connect, not showing up in Xcode, round and round. That is the one part of the project where the model helped with nothing — the problem was never in the code.

The rest of the tail came with it: the subscription tier and its paywall, the store listing, the age rating, the privacy answers.

I do not read Swift

And I did not learn to. That was part of the deal: the moment I go into the code myself, the experiment is over and the answer is worthless.

I can find a corner radius or a type size. Everything else is brief, review, and deciding what is good enough to keep.

0

lines of Swift written before this project, and none since

1

person from the first idea to a TestFlight build, landing page and store listing included

9

behaviour categories converted to minutes by a single scoring engine