KayaSync

Open source · Open data

Food and training,
kept honest.

A log built for people who eat homemade Indian food. Every number tells you where it came from — and when we don’t know something, it says so instead of showing you a zero.

Free, with no paid tier to upgrade to. AGPL-3.0.

Fourteen mornings of weigh-ins. The faint dots are the readings; the line is the trend, down 1.35 kg across the fortnight. The 2 days with no weigh-in have no dot at all — a missed day is not a zero.

What it looks like

Three more of the real screens, drawn here from the same tokens and the same wording the app uses. The figures are illustrative — the marks around them are not, and neither is the copy.

A day part-way through: 1,090 kcal of a 2,240 kcal target, from a measured breakfast and an estimated lunch. Dinner has not been logged, so it is an em dash — the running total is a lower bound, not a shortfall.
An amber day: wellness 14 of 28, 1.42 standard deviations off this person’s own three-week baseline. The advice is to cut the planned volume and leave the weights alone — the comparison is always against your own fortnight, never against a population.
Eleven days logged out of the last fourteen, against a longest run of 23. Two skip days a week are spent automatically, and the longest run stays on screen through a break — nothing here grades a day, and no day passes or fails.

Four ways to be honest about one number

Every tracker shows you a protein figure. The difference is what happens when it does not actually know one. These four states are drawn the way the app draws them, and each carries its meaning three ways — a prefix, a texture and a line of text — so none of it depends on telling two colours apart.

The four states

One day’s protein, as the app would draw it. Three of these four rows are rendered identically by every tracker we have looked at, and two of those three are rendered wrongly.

Protein today

  • Grilled paneerMeasured — off the pack you scanned18 g
  • Toor dal, 1 katoriEstimated — a katori is a modelled portion, not one you set~ 9 g
  • Day so farA lower bound — based on 4 of the 5 things you logged≥ 94 g
  • IronNobody measured it for this dish. Not zero.not known

And behind the estimate

Tapping any value opens what it was built from. This is the panel behind the dal above — not a summary of it, but the fields the app already holds for every value it shows you.

Estimated · protein

~ 12.4 g

Provider
USDA FoodData Central
Raw value
12.4 g per 100 g
Reference
fdc_id 174608 · nutrient 203
Conversion
×1.00
Portion
1 katori → 180 g (modelled default)
Licence
CC0 1.0 — public domain

Why estimated? The weight of one katori is a modelled default rather than a figure you have measured. Set your own and this value becomes measured.

What it actually does

Six things, all of which are in the code today. Nothing on this list is a roadmap item wearing the present tense.

  • Logs the portion you ate

    A katori, two rotis, a glass of chaas. Household measures are units here, not a conversion you do in your head before you can log lunch — and the gram weight behind each one is on screen, marked when it is a modelled default rather than one you set.

  • Shows its working on every value

    The provider, the raw figure, the unit it was published in, the conversion applied, when it was fetched and the licence it came under. One tap, on any number in the app.

  • Grades the evidence behind every threshold

    A protein target, a deficit ceiling, a volume landmark. Each one carries the strength of what it rests on — meta-analysis, a single good trial, a named guideline, clinical convention, or our judgement — and says which it is.

  • Keeps food and training together

    The protein you ate and the volume you lifted are reconciled by one engine, so the weekly read says something neither half could say alone.

  • Refuses to guess your expenditure

    Energy expenditure is learned from your own weigh-ins and intake rather than fixed by a formula at sign-up. Before there is enough history it shows the reason and no number at all — not a provisional figure in grey.

  • Reads today against your own fortnight

    Readiness compares this morning’s check-in with your own last three weeks, never with a population. A fatigue rating of four means nothing on its own: some people live at four and some never go above two.

How it works

Four steps, and the fourth is the one the others exist for.

  1. Log what you ate and what you lifted

    Household portions and last session’s sets are already on screen, so most logging is a confirmation rather than a form to fill in.

  2. It reconciles the two

    One engine reads intake, training volume, weigh-ins and check-ins together, and updates what it believes about you from what actually happened.

  3. It tells you something true

    The weekly read comes as sentences, each carrying the figure it was derived from and what that figure is being compared against. Where the data is thin, that is what it says.

  4. And you can check it

    Every number opens its own working, down to the provider and the licence. Nothing here is a black box you are asked to trust.

What we can actually claim

No customer logos, no invented engagement figures, no user count. Four things instead, each of which you can check before you sign up.

Every threshold says how strong the evidence is

Not a footnote and not a methodology page: the tier travels with the number, on the screen where the number is used.

Meta-analysis
Backed by meta-analyses or replicated trials — about as settled as this field gets.
Single trial
Backed by a single good trial or consistent practical data. Likely right, not proven.
Guideline
A published recommendation from a named body. We follow it and tell you whose it is.
Convention
Standard practice rather than a research finding. We chose it because the alternatives are worse, not because a trial showed it works.
Our judgement
Our judgement, or common expert practice. Treat it as a starting point to adjust.
  • Open source, AGPL-3.0

    The whole thing, server included, in one public repository. Read it, run it on your own machine, fork it. A claim you can check in the source is worth more than one you have to take on faith.

  • Open data, credited properly

    Composition from USDA FoodData Central, packaged products from Open Food Facts, and cooked Indian dishes from the Indian Nutrient Databank — with each licence and its required attribution listed on the data sources page. Nothing proprietary, nothing scraped, and no dataset whose terms are unclear.

  • No ads, and nothing sold

    Your log is not an advertising product and is never handed to one. There is no paid tier either, so nothing on this page is a funnel toward one.

  • A door that opens outward

    Everything you have logged comes out as one file, including the nutrition figures each meal was recorded with and where they came from. Closing your account signs you out everywhere at once; the data is held for 30 days in case it was a mistake, then deleted for good.

Questions

The ones worth answering before you sign up rather than after.

  • What does it cost?

    Nothing, because there is nothing to buy yet — no paid tier, no trial clock, no feature held back behind one. If that ever changes it will be said plainly here first, and the code is AGPL-3.0 either way, so a version you can run on your own server will always exist. There are no ads, and your log is never sold or handed to an advertiser.

  • Does it actually handle Indian food?

    That is what it was built for. Cooked dishes come from the Indian Nutrient Databank — 1,014 recipes with per-serving figures as well as per-100 g — with an alias layer carrying the names people actually type: roti, phulka, rotli, रोटी, ચપાતી. Portions are household measures, so a katori, two rotis and a glass of chaas are units you can log rather than a conversion you do in your head first. Generic composition comes from USDA and packaged products from Open Food Facts.

  • Where does each number come from?

    Every nutrition value can show its working: the provider that published it, the raw figure and unit it was published in, the conversion applied, when it was fetched, and the licence it came under. Separately, every threshold the app uses — a protein target, a deficit ceiling, a volume landmark — carries the strength of the evidence behind it, from meta-analysis down to our own judgement, and says which it is.

  • Why does it sometimes show a dash instead of a number?

    Because nobody measured it. “We have no iron figure for this dish” and “this dish contains no iron” are different statements about your body, and showing a zero for the first is how a tracker misleads without meaning to. A total that is missing a component gets a greater-than-or-equal-to sign instead: it is at least this much, and possibly more.

  • Is this medical advice?

    No. KayaSync is not a medical device, and it does not diagnose, treat or prescribe. It reports what you logged, what public food data says about it, and where each threshold it applies came from. Anything that matters to your health is a conversation with a clinician, and nothing here replaces one.

  • Can I get my data out, or delete it?

    One tap gives you a single JSON file with every meal, workout, weigh-in and recovery log — including the nutrition figures each meal was logged with and where those numbers came from. It is yours to keep and it can be imported back. Closing your account signs you out everywhere immediately; the data is held for 30 days in case it was a mistake, then permanently deleted, photos included.

  • Does it work without a signal?

    Logging does. Entries queue on the device and sync when you are back on a network, which matters in the gym basements where most of them get typed. While an entry is queued the interface says waiting, never saved — a silent queue that drains looks exactly like a stuck one, and you are entitled to know which of the two your last twenty minutes is in.

Start with one meal

Sign up, log lunch, and tap the protein figure. If the working behind it is not there, you will know inside a minute — which is roughly how long it takes to find out that a tracker’s numbers came from nowhere in particular.

Log your first meal

There is no paid tier, so there is no card to enter. Your log exports as a single file whenever you want it, and closing your account takes a confirmation, not an email to support.