Research, formulation maths and small-batch recipes for a cross-cultural flan experiment. Every measurement is in grams.
| File | What it is |
|---|---|
flan-research.md |
The 25+ traditions across Europe, Latin America and Asia, what anchors each one, the eight axes that actually differentiate them — plus the two quantitative answers: how much liquid one egg sets and how much sugar a flan carries. |
flan-formulation.md |
The derivation. Ingredient composition table with USDA sources, the setting-index model, calibration against 15 published recipes, validation against the classic kitchen rules of thumb, the full egg-capacity and sugar tables, and an honest list of where the model breaks. |
flan-recipes.md |
20 recipes, one per tradition, capped at two eggs, each with a table of dairy-swap variants solved to hold the same set. |
flan-3eggs-10cream.md |
11 recipes re-solved for a fixed basis of three whole eggs + 10% cream, plus the firmness dial and the split-egg trade-off table. |
flan-recipe-matrix.csv |
The 93 rows of flan-recipes.md, machine-readable, for filtering and pivoting. |
flan-3eggs-10cream.csv |
The 11 rows of the three-egg set, machine-readable. |
tools/ |
The five scripts that generated all of it. Change a number in flan_model.py and every table downstream recomputes. |
- One large egg sets about 120 g of milk into a normal flan, 70–85 g if you want it firm enough to slice cleanly, and ~200 g if you only want a barely-set custard.
- Sugar: about 15% of the dairy weight in the custard, plus another 15–20% of the dairy weight in the caramel. Call it 30% of the liquid weight in total. If condensed milk is in the bowl, add no granulated sugar at all.
- Cream does not set a flan. All four cream grades sit at the same setting index as milk (3.5%). Cream buys richness and mouthfeel. Only concentrated dairy — evaporated milk (8.1%), condensed milk (9.7%), cream cheese (10.9%), Greek yogurt (10.5%), milk powder (64%) — changes the set.
- Condensed milk can only make firm flans. Its own setting index is 9.7%, so it cannot be diluted to
a soft set no matter how much of it you use. That is a physical limit, and several rows in
flan-recipes.mdsay so explicitly. - Discarding one white to use 1 whole egg + 1 yolk costs 29% of the setting power of 2 whole eggs and sets ~78% of the liquid. 2 yolks + one spare white is equivalent to 1 whole egg + 1 yolk.
- On a basis of 3 whole eggs and 10% cream the richness is fixed at ~9% fat — 3 whole eggs are 9.1% fat and 10% cream is 10% fat, so the cream quantity controls only firmness. Swap the dairy, or the egg load, to change richness.
cd tools
python3 flan_model.py # ingredient DB + calibration of the 15 sourced recipes
python3 flan_solve.py # egg setting capacity + validation vs published rules
python3 flan_recipes.py # rewrites ../flan-recipes.md and ../flan-recipe-matrix.csv
python3 flan_3egg_cream.py # rewrites ../flan-3eggs-10cream.md and .csv
python3 dairy_table.py # each ingredient's own setting index
MIT — see LICENSE.