How it works

How the daily scores work.

Each day gets two numbers from 0 to 100, kept apart on purpose. Quality reads what the food is made of. Targets checks whether you hit your calories and protein. We score the day, not the person.

Why two.

One number can’t tell “ate 700 kcal too little” from “ate a lot of sugar”, so Caaals doesn’t merge them. Quality is live from the first meal and means the same thing all day. Targets appears once the day is over, because half a day can’t hit or miss a target yet.

Quality: what the food is made of.

PartPointsHow it’s read
Fibre25Full points at 14 g per 1,000 kcal (the default 28 g goal), ramping down in a straight line below it. More is never a penalty.
Added sugar20Full points up to 25 g per 1,000 kcal (10% of energy), zero at twice that. Sugar in unprocessed food like fruit and plain milk is excused up to a cap, so a banana isn’t scored like a soda but dates and juice still count.
Sodium15Full points up to 1,150 mg per 1,000 kcal, zero at twice that.
Saturated fat15Full points up to 11 g per 1,000 kcal (10% of energy), zero at twice that.
Processing25NOVA groups, weighted by calories: unprocessed calories keep 100% of their share, minimally processed 90%, processed 60%, ultra-processed 10%.

Every part is a density, so the score doesn’t depend on how much of the day has gone. The limits above are the defaults; your own goals move them. Your calorie goal doesn’t, so the same plate scores the same for someone eating 1,600 kcal as for someone eating 3,000.

Targets: did you hit your numbers.

PartPointsHow it’s read
Calories60Full points within ±5% of your calorie target, falling in a straight line to zero at ±40%. Over and under count the same.
Protein40In proportion to your protein goal, full at 100%. Going over costs nothing.

Targets waits until the day is over in your time zone, and until the log looks like a whole day: two or more meals, or one meal worth at least 60% of your calorie goal. A day where you logged breakfast and stopped is left unscored rather than called 1,500 kcal under. The result comes with one plain sentence, like “Calories on target, 25g short on protein.”

Missing data is left out, not guessed.

Quality only reads food that carries the data a part needs, and a part needs at least 300 kcal of it to count. Parts without enough data drop out and the rest rescale to 100. If what’s left is worth less than 50 points, Quality shows no number rather than a thin one. A confidence value travels with it, saying how much of the day it could read. A day with nothing logged has no score; it isn’t a zero.

Defaults, and what to do next.

No goals yet? Both scores use WHO-aligned defaults and say so. While the day runs, Caaals tells you how much protein your next meal needs to stay on pace. The breakdown also names your biggest opportunity: the part with the most points left, flagged only when you earned less than half of it. What you’re already doing well is never nagged about.

Where the design comes from.

Reading nutrients per 1,000 kcal comes from HEI-2020, which also keeps energy intake out of its quality index. The fibre target is the US dietary reference intake (14 g per 1,000 kcal); the sugar and saturated-fat limits follow WHO guidance (each under 10% of energy). Processing uses the NOVA classification. The weights and thresholds are Caaals’ own.

Questions

What is a good score?

There is no pass mark. Quality is high when the food is fibre-rich, mostly whole, and inside the sugar, sodium and saturated-fat limits, and a well-composed breakfast reads the same at 8 am as it does at 10 pm. Targets is high when calories land within 5% of your target and protein reaches your goal.

Why doesn't Targets show during the day?

Because a day that isn't over can't be on or off target yet; scoring it early would mostly score the time. Quality is live instead, and while the day runs Caaals tells you what your next meal needs to stay on pace for protein.

Does missing NOVA data hurt my score?

No. Foods without a NOVA group are left out of the processing part. If less than 300 kcal of the day is classified, processing drops out of Quality and the other parts rescale. Nothing is guessed to fill the gap.

What if I haven't set any goals yet?

Both scores fall back to WHO-aligned defaults — 2,000 kcal, 50 g protein, 28 g fibre, 50 g sugar, 2,300 mg sodium, 22 g saturated fat — and say they are using them. Set your own goals and they score against those instead.

Related: what NOVA classification is, where the nutrition numbers come from and how the weight projection works.

Start with one meal.

Free to start · no card required