Curvamino
Build ed18d1d · published 2026-09-19
Check any point on a curve against its source row.
Which food rows Curvamino reads, which requirement tables it quotes, how a plate becomes a score, and what it cannot tell you. If something here is wrong, write to hello@grove-lab.org.
Sources and licenses
#The food rows are USDA FoodData Central, SR Legacy 2018-04: the last release of the Standard Reference database, frozen since. USDA publishes it in the public domain (CC0 1.0) and asks to be cited as: U.S. Department of Agriculture, Agricultural Research Service. FoodData Central. fdc.nal.usda.gov.
Curvamino reads one pinned copy of that release, verified by checksum before every build, so a rebuild from the same file gives the same bytes. The build on this page is ed18d1d, and it changes only when the data does.
The requirements, the digestibility factors and the cited proportions are figures quoted from the publications below. They are quoted as printed, each with the table it comes from, and none is ours:
- WHO/FAO/UNU (2007). Protein and amino acid requirements in human nutrition. WHO Technical Report Series 935.
- FAO (2013). Dietary protein quality evaluation in human nutrition. FAO Food and Nutrition Paper 92.
- FAO/WHO (1991). Protein quality evaluation. FAO Food and Nutrition Paper 51.
- FAO (1992). Maize in human nutrition. FAO Food and Nutrition Series 25.
- Hodgkinson, S. M., Stroebinger, N., Stein, H. H., Fanelli, N. S., de Vries, S., van der Wielen, N., Hendriks, W. H. and Moughan, P. J. (2025). True ileal amino acid digestibility of human foods classified according to food type as determined in the growing pig. The Journal of Nutrition 155(10): 3384–3400. doi:10.1016/j.tjnut.2025.08.004. CC BY 4.0.
- Bressani, R. and Valiente, A. T. (1962). All-vegetable protein mixtures for human feeding. Journal of Food Science 27(4): 401–406. doi:10.1111/j.1365-2621.1962.tb00115.x.
The requirements, and their errata
#“Complete” is always complete for someone. Curvamino carries 7 published scoring patterns: the amount of each essential amino acid, in milligrams per gram of protein, that a given group needs. Methionine is pooled with cysteine and phenylalanine with tyrosine, as every one of these tables pools them, which leaves nine lanes.
- Adult: WHO/FAO/UNU (2007). Protein and amino acid requirements in human nutrition. WHO Technical Report Series 935. Table 23 (p. 150) and Table 36 (p. 180), adults.
- Child, 3–10 years: WHO/FAO/UNU (2007). Protein and amino acid requirements in human nutrition. WHO Technical Report Series 935. Table 36 (p. 180), 3–10 years.
- Child, 1–2 years: WHO/FAO/UNU (2007). Protein and amino acid requirements in human nutrition. WHO Technical Report Series 935. Table 36 (p. 180), 1–2 years.
- Infant, 6 months: WHO/FAO/UNU (2007). Protein and amino acid requirements in human nutrition. WHO Technical Report Series 935. Table 36 (p. 180), 0.5 years.
- Older child, adolescent, adult: FAO (2013). Dietary protein quality evaluation in human nutrition. FAO Food and Nutrition Paper 92. Table 5 (p. 29), older child, adolescent, adult.
- Child, 6 months–3 years: FAO (2013). Dietary protein quality evaluation in human nutrition. FAO Food and Nutrition Paper 92. Table 5 (p. 29), child 6 months to 3 years.
- Preschool child, 2–5 years: FAO/WHO (1991). Protein quality evaluation. FAO Food and Nutrition Paper 51. Table 7 (p. 23), preschool child 2–5 years, from FAO/WHO/UNU 1985; histidine 19 is interpolated there.
A later report reprints some of these values with their calculation corrected. Curvamino quotes each table as printed and shows the correction beside the row it affects, rather than choosing silently:
- Child, 3–10 years: isoleucine 31 → 30 mg/g; methionine + cysteine 24 → 23 mg/g (FAO 2013, Table 3, footnote).
- Child, 1–2 years: methionine + cysteine 26 → 25 mg/g; tryptophan 7.4 → 7 mg/g; valine 42 → 41 mg/g (FAO 2013, Table 3, footnote).
- Infant, 6 months: methionine + cysteine 28 → 27 mg/g (FAO 2013, Table 3, footnote).
From a plate to a score
#A food’s height in a lane is its amino acid per gram of protein, divided by the requirement for that lane. At 100 % the food meets the requirement in that lane, gram of protein for gram of protein.
A plate pools its foods by the protein each one really brings: grams on the plate times the food’s protein content. The plate’s line is therefore the protein-weighted mean of its foods’ lines, and always lies between them.
The score is the lowest lane. Nothing else enters it: no weighting of lanes, no bonus for a surplus elsewhere.
A protein is built from all nine at once, in fixed proportions, and the body keeps no store of spare amino acids. Synthesis goes only as far as the scarcest one allows, and the rest is oxidized. That scarcest lane is the limiting amino acid. An average would let a surplus in one lane cover a shortage in another, which the body can’t do, so Curvamino reports the minimum and rings it on the chart.
For two foods the score can be drawn at every proportion. Pooling is linear in the share of protein each food brings, so the curve is the lower edge of nine straight lines. Its corners, its best mix and the range of mixes that meet the requirement are all computed exactly.
The arithmetic is checked against a published worked example (FAO/WHO 1991, Table 10, wheat, chickpea and milk powder mixture). From the same USDA rows Curvamino reproduces its lysine score of 0.86 and, by that report’s own method, its corrected score of 0.73. By the per-food method described in the next section, the same mixture gives 0.74.
Digestibility, and its limit
#Not all protein eaten is absorbed, and the share that is differs from one amino acid to the next. With the correction switched on, each food’s amino acids are multiplied before the plate is pooled, by the best rule that food has. For 57 of the 197 foods that is a separate figure for each amino acid, measured at the end of the small intestine: Hodgkinson et al. 2025, Table 2 (pp. 3389–3394), mean true ileal digestibility of amino acids. Those rows are the dataset FAO 2013 named as the goal and could not find.
The measurements come from growing pigs: ileal digesta collected through a cannula, minus each animal’s own losses on a protein-free diet. The pig is the accepted model, and the same group has checked it against adult humans, but it is still a pig figure, and every corrected food’s row says so. The study was funded by industry (Project Proteos, run by Global Dairy Platform) and is CC BY 4.0.
Which food gets which row is our judgment, and we kept it narrow: the same food, cooked about the same way, one row each. 53 of the study’s 97 rows are used. We never cross a heating step, because the study shows what heat costs: its corn tortillas return 0.02 of their reactive lysine and its wheat flour 0.94. A raw row is never lent to a roasted food, or the other way round.
Where no row honestly fits, the older rule stands in: one published factor for the whole food, the true faecal digestibility of its protein, the same number in every lane (FAO/WHO 1991, Table 8 (p. 32), digestibility of proteins in man; reprinted as WHO TRS 935 (2007), Table 5, for 40 foods). 100 foods have neither and stay uncorrected. Curvamino does not borrow a neighbor’s factor, and each food’s row names which of the three it got.
Two smaller choices. The lysine lane uses the study’s total lysine figure, because FDC’s amounts are total lysine too, and pairing them with available lysine would be a correction we never stated. The two pooled lanes (methionine with cysteine, phenylalanine with tyrosine) average their two figures, weighted by the food’s content of each. That turns the lane’s milligrams into digestible ones.
Weighting each food before pooling differs slightly from the shortcut in FAO/WHO 1991, which multiplies the pooled score by the mixture’s average digestibility. The per-food rule keeps a plate the weighted mean of its foods, which the two-food curve depends on.
The foods, and their portions
#The set is 197 recognizable foods as eaten, cooked where a food is eaten cooked. Each has one ordinary portion. For 183 of them the portion is one of the row’s own household measures. For 14 USDA lists none, so the portion is set by hand and the row says so.
USDA measured the amino acids of 80 of these foods directly. For the rest the values were calculated from another form of the food, imputed from a similar one, computed from a recipe, supplied by a manufacturer, or carry no stated derivation. Each row on a plate says which, and links to its page on FoodData Central.
Most foods appear several times in the release. The instrument shows how far a food’s rows disagree, as the range of scores they give alone against the adult requirement.
Rows we did not use
#2 rows disagree with their siblings so far that Curvamino leaves them out. Every tool built on this release inherits them silently. Here they are shown.
“Bread, whole-wheat, commercially prepared, toasted”: lysine at 11.3 mg per gram of protein, against 29.1 across its 2 sibling rows. On its own it takes the Peanut butter sandwich from 66% to 45%. FDC 172689
“Mollusks, oyster, eastern, wild, raw”: threonine at 4 mg per gram of protein, against 43 across its 8 sibling rows. FDC 171978
Dishes and their proportions
#The 18 dishes are traditional pairs of a staple and a protein food. For 1 of them the proportion is published: FAO 1992 gives it in its chapter “Improvement of maize diets”, after Bressani and Elías (1974), by dry weight. For every other dish the portions are ordinary servings we chose, and the instrument says so on the plate.
Where a publication reports another proportion of the same two foods, it rides the curve as an open point with its source: the household intakes that same report records, and the mix rats grew best on in Bressani and Valiente 1962. Those points come from the publications.
Other published proportions exist, among them human studies of rice with chickpeas and of lentils with rice, and national guidelines for cereal to pulse. What we could read of them states no basis for the ratio, so they are not on a curve.
How to cite
#Cite Curvamino with its build and publication date. Together they pin exactly the data you saw:
Grove Lab. Curvamino, build ed18d1d, published 2026-09-19. https://grove-lab.org/en/curvamino (accessed 2026-11-03).
Curvamino re-draws published figures, so a claim about a food or a requirement should cite where it comes from: USDA FoodData Central for the food rows, and the report a requirement is quoted from. Both are listed under Sources and licenses.
For a specific view, link the view itself: explore links (/curvamino/explore?…) carry the requirement, the plate and its portions, so the link you share opens where you were.
Limits
#Curvamino answers one narrow question, and its limits are the limits of that question and of its sources:
- It reads the pattern of a plate’s protein and ignores how much there is. A plate can clear every lane and still hold too little protein, or too little food.
- It draws amino acids only. Minerals, vitamins, energy and everything else a meal is for are outside it.
- The requirements describe healthy groups of people. They aren’t dietary advice for anyone, least of all an infant.
- The food rows are SR Legacy 2018-04, a release USDA no longer updates. Foods, cultivars and recipes move on. The rows do not.
- Only 80 of the 197 rows are measured. A calculated or imputed value can be far from the food on your plate, and one row of a food can disagree with the next.
- The digestibility correction was measured in pigs, and only 57 of 197 foods have a figure for each amino acid. 40 more carry one factor for their whole protein, the older and coarser rule, and 100 carry none at all. Comparing a corrected food with an uncorrected one means comparing two different measurements.
- Apart from the cited dish, portions are assumptions. The two-food curve exists to show what happens to the score when they change.
- Both charts stop at 200% of the requirement. A lane above that sits on the top edge, with its number printed under it.
- Build ed18d1d was published on 2026-09-19. A later build may differ in any figure on this page.
Curvamino is published by Grove Lab. Who we are, and why it is built this way, is on the lab page.