Accuracy wins every trade-off
Everything is stored per 100 g and computed in SQL views at read time — values are never copied between tables. Doubtful data gets flagged ⚠, never saved silently.
Declared kcal are checked against Atwater factors (4/4/9, fiber at 2 kcal/g): a gap over 25% demands review before saving.
| Banana | stored | logged: 150 g |
|---|---|---|
| kcal | 89 | 134 |
| protein | 1.1 g | 1.7 g |
| potassium | 358 mg | 537 mg |
| fiber | 2.6 g | 3.9 g |
One correction to the food fixes every historical entry — the view scales, it doesn't copy.