Step one

Make the entry cost nothing

Every food log dies at the same point — the eleventh day, when the entry costs four decisions and the meal is going cold. So there are no decisions.

Type a sentence, dictate it, or take a photo and say nothing at all. There's no item to look up, no portion to estimate and no field that has to be filled before the entry counts. The parsing happens afterwards, which is the only place it belongs.

  • A sentence in whatever words you'd have used anyway
  • Or a photo, which is a complete entry on its own
  • Or nothing — a skipped meal is an entry too, and an informative one
  • Late is fine. Yesterday's dinner logged tomorrow still counts
An ordinary Tuesday Chat

Porridge about eight, nothing at lunch because of meetings, then a big bowl of pasta at half eight.

Called 4 tools

  • log_meal(items: ["porridge"], at: "08:00", meal: "breakfast")
  • log_meal(meal: "lunch", happened: false, reason: "meetings")
  • log_meal(items: ["pasta"], at: "20:30", meal: "dinner")
  • find_pattern(group_by: "missed_meal")

All three logged, including the lunch that didn't happen. That's the sixth missed lunch this fortnight, and five of the six were followed by a dinner you described as large or late.

One sentence, three entries, one comparison. The missed meal is the entry no other food diary makes — and in most logs it's the one that explains the evening.

Step two

Every entry is a tool call, not a paragraph of text

This is the part that decides whether any of it is worth keeping. The model reads what you said and chooses which operations to run against your record. It writes structure; it doesn't write history.

A few of the registered tools

log_meal log_photo log_snack log_hunger log_fullness log_context log_craving log_energy log_weight get_history find_pattern compare_periods get_trend export_range

Same registry for the screens, the chat and the MCP server. A tool built for one is available to all three the same day, under the same permissions.

Your log does the counting

When an answer contains "13 of 18", that 13 came from counting rows, not from a model's impression of your month. A food log that flatters you is worse than no food log at all.

Nothing is estimated into existence

No calorie figure is derived from a photo and presented as a fact. If we don't know something, the answer says we don't know it, which is more useful than a confident guess.

You can see the working

Every figure traces back to entries you made. Ask which ones produced a number and you get them — including the ones that complicate it.

Step three

Then ask it the awkward questions

This is what a food diary has never been able to do. The questions people actually have are comparative — is it the sleep or the skipped lunch, do the weekends really matter, which dinners leave me uncomfortable — and answering them by eye means a spreadsheet and a free evening.

Ask in plain language. What comes back is counts over your own entries, with the confounders named rather than quietly dropped, and an honest "not enough data yet" when that's the truth.

Six weeks in Chat

Is it the sleep or the skipped lunches? They both happen on the same days.

Called 4 tools

  • get_history(window: "6w")
  • compare_periods(metric: "cravings", group_by: "sleep")
  • compare_periods(metric: "cravings", group_by: "lunch")
  • find_pattern(group_by: "day")

They overlap on 15 days, which is why it feels inseparable — but there are enough days with only one to separate them. Short sleep alone, over 11 days: 1.6 cravings a day. No proper lunch alone, over nine: 2.3. Both: 3.1. Neither: 0.7. Lunch is the bigger single factor in your data.

Four tool calls, all of them arithmetic over entries you made. The model chose the split; it produced none of the numbers.

The boundaries

What it deliberately won't do

Every one of these is a decision rather than a missing feature, and each one is on this page so you can tell in ten seconds whether this is the app you wanted.

It won't score a meal

No grades, no traffic lights, no clean and dirty. A log that judges is a log people lie to, and a log people lie to is worthless as data as well as unkind.

It won't set you a target

No calorie goal, no macro split, no goal weight calculated on your behalf. Any number an app produces there is a population estimate with your name on it.

It won't run a streak

Miss four days and four days are empty. Streaks turn one hard evening into a broken record, which is the exact mechanic that stops people logging the days worth having.

It won't guess calories from a photo

It can't see the oil in the pan, the size of the plate, or what's underneath. The harm isn't the guess — it's that you'd make decisions with it for a year.

It won't comment on your body

The photos here are of food. That's the whole scope, and it doesn't change.

It won't diagnose anything

It produces counts and timings; clinicians produce findings. Where the honest answer is to talk to someone, the app says so.

Early access

Set it up with us

Tell us what you've been trying to keep track of, and the first thing we'll do is work out what's actually worth recording for it.

  • Founding accounts lock their price for life
  • No card, no trial clock
  • Export everything you've logged, photos included, whenever you want

No card required. Unsubscribe any time.

One sentence a meal, and a log that answers back

Founding pricing is locked for accounts opened during early access.

Founding accounts lock their price for life. No card required.