← Ashu daylog

Personal project · voice health journal

Talk through your day.
The log writes itself.

I could not keep up with writing everything down. The days I most needed on record were the days I had least in me. So I stopped designing a form and started designing something I could talk to.

built solo, claude code live, used daily 2026
daylog — logging a day
Daylog's home screen: the date, a question reading What did you have for lunch, today's rows for breakfast, medication and bathroom, and a green aura filling the lower half with a microphone.home
The full-day form: bathroom, medications, and a body and rest section covering wellness, feeling, cramps, sleep, period and other symptoms.the long way
A finished day: a strip of dates with coloured dots, a calm score badge, and the day broken into food, bathroom and medication rows.a finished day
The trends screen: average bathroom visits a day, seven day bars, and a card reading no flare running.the last seven days

Sample data throughout. Nothing on this page comes from a real log.

Living with a chronic gut condition means keeping a record. Doctors ask what you ate, how many times you went, whether there was blood, what you took, how you slept. The record only becomes useful across months, and it has to be made on the days you feel worst. I built Daylog for myself, and every decision in it comes out of that one conflict.

10kinds of thing one day can record
18months of days behind it
6days before it will call anything a pattern

01 — the starting point

Ten kinds of thing, every day

A day worth showing a doctor is not one number. It is each meal and what was in it, every bathroom visit and what that visit was like, medicines and their times, how the night went, how you felt, whether you were on your period, whether a joint or your eyes were bad that day. Most days touch six or seven of those.

Tapping all of it into forms takes real time, and it asks for the most work on the days with the least energy. Flare days are the ones you most want on record and the ones you are least able to write down. So the log thins out exactly where it should be thickest.

A gap in a health log is dangerous, because months later it looks exactly like a good day.

Every logging app is really deciding what counts as a day. Ask for too little and it can explain nothing later. Ask for too much and nobody fills it in. The ten things Daylog records fall into three groups, and the grouping is the part I spent longest on.

The body. Bathroom visits, counted per visit rather than per day, with urgency, consistency and blood. Symptoms, sleep, period.

What goes in. Meals down to the individual item, and medicines with their times.

The mind. Stress and how the day felt, kept apart from the physical symptoms on purpose. Put them in one list and a bad mood starts reading as a gut symptom.

02 — the way in

Say it and it files itself

So the main way in is speech. You hold the button and describe the day in whatever order it comes out, and the app turns that into the right rows: which meal, which items, how many visits, whether there was blood, which medicine at what time, how the night was.

Speaking a day takes seconds. The form is still there for correcting a number afterwards, and it stopped being the thing you face every evening.

Speech is transcribed on the device by the browser, so a spoken day never needs to leave the phone to become a set of rows.

The whole input is one control. The soft green blot drifting on the home screen is the microphone, and nothing else on that screen competes with it. You talk the way you would talk to a person, switching between English and Hindi mid sentence if that is how it comes out. What comes back is a set of separate cards, a meal card, a bathroom card, a medicine card, each one editable before you keep it.

Anything you can say you can also tap, and anything you can tap you can also say. Neither way is the real one.

Underneath, every entry remembers how it arrived: spoken, tapped, or filled in later from memory. You almost never see this. It is what lets the app tell I answered this three days late apart from I logged this as it happened, which matters when the same log is being read back for patterns months afterwards.

03 — the split

The model reads. The maths decides.

A language model is good at turning a spoken sentence into structure and unreliable at anything that has to come out the same way twice. Keeping it on one side of that line is what makes the rest of the app checkable.

the model

Turns a sentence into rows.

Which meal, which items, how many visits, whether there was blood, what time a medicine was taken, and whether something was being denied rather than reported.

the engines

Do all of the counting.

Scores, streaks and patterns come out of ordinary code reading those rows. The same log gives the same answer today and in a year, and every number traces back to a rule I can read.

04 — patterns

What the app is willing to say about food

The reason to keep months of days is to find what tends to come before a bad stretch. The risk of building that is plain enough: run enough comparisons and something will always look guilty, and the person reading the result is now frightened of a food they eat every week.

So every food is sorted into three groups. One it thinks is worth watching, ones that look fine, and ones it cannot judge at all.

daylog — trends · foods
The foods screen showing three groups: worth keeping an eye on lists one food with the line a rough day followed 10 of 14 times, these look fine lists nine foods as chips, and eaten too often to judge lists five staples.three groups
The evidence sheet behind one food: how many days it appeared and when, how much more often a rough day followed it, a note that three of those rough days were also period, high-stress or short-sleep days, so food may not be the whole story.the count behind the card

Staples eaten on more than sixty per cent of days land in the third group. There is nothing to compare them against, so the app says so rather than quietly leaving them out of the list.

A food has to clear four floors before it shows up as something to watch. It has to have been eaten on at least six days. A bad day has to have followed it at least three times. It has to appear on fewer than sixty per cent of days. And bad days have to follow it noticeably more often than they follow a day without it. Below any of those, the app says it does not know yet.

This wakes up after a couple of weeks of logging. It needs enough calm and rough days to tell a pattern from a coincidence. Three of those rough days were also a period, high-stress or short-sleep day. Food may not be the whole story. A pattern is a hunch to test with your doctor, never a verdict. the app, in its own words

Every card opens into the count behind it. How many days, how many times something followed, and what else was going on for those same days. A finding you cannot open is an opinion with a chart behind it.

There is a fourth floor as well. A rough day has to follow the food at least one and a half times more often than a rough day follows anything else. Without that, common foods win just by turning up a lot.

The floors were set before I looked at any results, and the numbers are on this page for the same reason they are in the app. A threshold you keep to yourself is a threshold you can move once you dislike an answer.

Not enough to say yet is a screen I designed, not a screen I ran out of time for. When a lens cannot speak it says which of the floors it failed: too few days, too little variation, or every rough day landing inside one bad stretch. Most of the year it is showing this rather than a finding, and that is the honest state of the data.

Findings are also worded as questions. A card asks whether rajma is worth watching. It does not announce that rajma is a problem. The app describes what already happened. It never says what is coming.

05 — the score

A number, and what it is not

Each day gets a number and one of three words: calm, unsettled, or a rough patch. It is modelled on a scale doctors use, five of its six items match that scale exactly, and the sixth is worked out from what was logged rather than asked for as a daily self-rating.

Which means it is not the clinical scale. The settings screen says that plainly, explains how every item is counted, and gives you the sentence to say if you ever show the number at an appointment. A number that looks clinical gets treated as clinical, so it has to say what it is.

06 — asking

Questions in the shape they occur to you

What was last April like. What did I eat most in the month before a flare. When did this start. Dates and symptoms are resolved in code first, which pins any answer to a real set of days, and the model only writes the sentences around the facts it has been handed.

daylog — ask
The ask screen: a heading reading what do you want to know, with three suggested questions about last week, yesterday's food, and what happened before my flares.the openers
An answer describing the thirty days before each of two flares, with both dates as links, ending on the finding that nothing repeated often enough across the two run-ups to form a pattern.an answer that finds nothing

Dates in an answer link back to the days they came from. This one ends by saying that nothing repeated often enough across both run-ups to count as a pattern.

Answers stay descriptive. A month with little in it gets reported as thinly logged rather than calm, and a medicine with no row against it counts as a gap in the record, never as a dose that was skipped.

It is a thread, not a search box. Earlier questions stay in context, so what about last month is a sensible second thing to ask. The thread also survives leaving the tab. You can go into History to check a day and come back to find the conversation still open.

Every date in an answer is a door. Tap it and you are in History on that day, reading the rows the sentence was built from. An answer you cannot check is an answer you have to take on faith, and this app should not be asking anyone for faith.

The three suggested questions are there because a blank field next to a health log tells you nothing about what it can do. They are the cheapest way to show the range.

Speaking a question puts the words in the input box instead of sending them. Speech to text gets things wrong often enough that sending on your behalf would be rude, so you see the transcript and fix it before you ask.

Conversations save themselves with a title, and reopening one loads it back into the live thread so you can keep going. Deleting says what it is deleting: the questions and answers go for good, nothing in your log changes.

07 — the watch

Numbers you don't have to write down

A flare shows up in resting heart rate, in overnight heart rate, and in how often you get up in the night. That data already sits on a watch and costs nothing to collect, which makes it more tempting than it deserves to be.

It is kept at a distance from everything else. Watch numbers arrive in their own tables, they are never scored, and they never move the daily number. The most they will do is raise a question about how severe a stretch is getting, because a review of nine months of readings turned up nothing steady enough to predict a flare from. Being able to collect something is not the same as being able to use it.

08 — where it stands

What it does, and what it can't

Live and used every day. Speaking a day is quick enough that the log keeps getting written, which is the one thing a health journal has to get right.shipped
Every number on every screen comes from ordinary code, with the model kept to turning speech into rows and facts into sentences.no model in the maths
Nothing is shown without the count behind it, and no card claims a cause. Findings open into their own evidence, including what else was happening on the same days.no verdicts
Medicines taken nearly every day can never be tested, because there are no days without them to compare against. The app says so rather than guessing, which is honest and still a hole.untestable