Allergen guide
Dairy in recipes — how Frittu checks and excludes it
Dairy is one of the most widely distributed allergens in everyday cooking — it appears not just in obvious sources like milk and cheese but in processing derivatives, South Asian staples, and fermented products where it can be easy to overlook. This page explains what Frittu's system does, specifically, when dairy is listed as an excluded ingredient in a user's profile.
Dairy in everyday cooking
Dairy encompasses any food derived from the milk of mammals — most commonly cows, but also goats, sheep, and buffalo. The proteins that trigger dairy allergies, primarily casein and whey, persist across a wide range of processed forms: butter retains milk proteins even after the water is removed; ghee retains them even after further clarification; cream, yoghurt, and cultured dairy products all carry the same core proteins.
Fresh cheeses like ricotta, paneer, and labneh are made directly from curdled milk and are among the most concentrated dairy sources in a recipe. Aged cheeses such as parmesan, cheddar, gruyère, and gouda undergo fermentation and ripening that reduces lactose but does not eliminate dairy proteins. Soft-ripened varieties like brie and camembert, and brined cheeses like feta and halloumi, occupy a similar category.
The plant-based milk alternatives category introduces genuine complexity: coconut cream, oat milk, rice milk, and soy yoghurt all use the language of dairy — cream, milk, butter, yoghurt — but contain no animal milk proteins. Frittu's check handles this distinction through an exception-prefix mechanism described below.
How Frittu's allergen check works
When your profile lists dairy as an excluded ingredient, Frittu applies a two-layer check to every recipe it generates.
Layer 1 — prompt-side instruction. Before sending a generation request to Claude, Frittu builds an exclusion list from your allergen profile. For dairy, that list covers the full range of dairy ingredients — base forms like milk, cream, butter, yoghurt, and ghee; the full spectrum of cheeses (fresh, aged, soft-ripened, and brined); fermented dairy products; and processing derivatives like whey, casein, and lactose. Claude receives these as a hard exclusion instruction and is directed to build the recipe without them.
Layer 2 — deterministic post-generation scan.After the recipe is returned, Frittu runs a server-side function that checks every ingredient name against a coded keyword list for dairy. Five of those keywords — milk, cream, butter, yoghurt, and yogurt — have plant-based equivalents that use the same word. The function applies an exception-prefix mechanism for these five: if an ingredient name contains one of the ambiguous keywords but also contains a recognised plant-based prefix (such as “coconut,” “oat,” “rice,” “soy,” “hemp,” “pea,” “plant,” or “non-dairy” among others), the keyword match is skipped and the ingredient passes. A plain “cream,” “butter,” or “yoghurt” without a qualifying prefix is still flagged. If a recipe contains a matched and unexcepted dairy keyword after generation, it is rejected and the generation is retried automatically before the recipe reaches you.
Nut-prefix interaction.The exception prefixes that allow plant-based alternatives to pass the dairy check include several nut-derived ones: almond, cashew, hazelnut, macadamia, walnut, and pistachio. When tree nuts are also listed in a user's allergen profile, these nut-based prefixes are not applied as exceptions — an ingredient like “almond milk” would be flagged for both the dairy keyword list and the tree-nut keyword list. Non-nut plant-based alternatives such as oat milk, coconut cream, rice milk, and soy yoghurt are unaffected by this interaction.
What this check does not cover. The check operates on ingredient names as generated. It does not cover cross-contamination that could occur during home preparation — shared cookware, serving utensils used across dairy and non-dairy dishes — nor does it account for ingredients a user adds themselves after receiving the recipe. The check also applies only to ingredients as listed in the generated recipe, not to processing aids or trace amounts that may be present in commercially produced pantry staples.
Hidden sources of dairy in cooking
Common hidden sources of dairy in cooking include the following — ingredients that are dairy sources or dairy derivatives but may appear in a recipe without the word “milk” or “cheese” being immediately present.
Plant-based alternatives that pass the check. Ingredient names that contain an ambiguous dairy keyword — milk, cream, butter, yoghurt, or yogurt — but also contain a recognised plant-based exception prefix are excepted from the dairy keyword match. Examples that pass: “coconut cream,” “oat milk,” “rice butter,” “soy yoghurt,” “barista oat milk.” Examples that are still flagged: plain “cream,” “double cream,” “butter,” “milk” without a qualifying prefix. When tree nuts are also excluded, nut-derived prefixes (almond, cashew, hazelnut, macadamia, walnut, pistachio) are not applied as exceptions.
Frequently asked questions
How does Frittu's system check for dairy in a generated recipe?
Frittu uses a two-layer process. First, before generating a recipe, Claude is given an exclusion list built from your allergen profile. For dairy, that list covers milk and its direct derivatives — butter, cream, yoghurt, and ghee — as well as the full range of cheeses (both fresh and aged), fermented dairy products like kefir and labneh, and processing derivatives like whey, casein, and lactose. Claude is instructed to build the recipe without those ingredients. After the recipe is returned, a server-side function checks every ingredient name against a coded keyword list for dairy. Any match causes the recipe to be rejected and Frittu attempts to generate an alternative.
Does Frittu's check allow coconut cream in a recipe where dairy is excluded?
Five dairy keywords — milk, cream, butter, yoghurt, and yogurt — have direct plant-based equivalents that use the same word. Frittu's post-generation check handles these via an exception-prefix mechanism: if an ingredient name contains one of the five ambiguous keywords but also contains a recognised plant-based prefix — such as "coconut," "oat," "almond," "rice," "soy," "hemp," "cashew," "pea," "hazelnut," "macadamia," "flax," "pistachio," "walnut," "quinoa," "barista," "plant," or "non-dairy" — the keyword match is skipped and the ingredient passes the check. "Coconut cream" passes because "coconut" is a listed exception prefix. A plain "cream" or "heavy cream" without a qualifying prefix is still flagged and causes the recipe to be rejected.
Are ghee and paneer checked as dairy?
Yes. Both ghee and paneer appear directly in Frittu's dairy keyword list. Ghee is clarified butter: the water and most milk solids are removed during clarification, but milk proteins remain in the fat. It is a dairy derivative and is flagged. Paneer is a fresh milk cheese made by curdling heated milk with an acid — it is dairy in its most direct form and is widely used in South Asian cooking in dishes where it may not be immediately recognisable as a milk product. Any recipe that includes ghee or paneer as an ingredient is rejected and regenerated when dairy is listed in a user's excluded allergens.
What happens when a generated recipe triggers the dairy check?
The recipe is rejected before it is saved or shown to the user. Frittu retries the generation automatically. The rejection and retry happen server-side — the user sees only the final recipe that passed both layers of the check. If a generated recipe matches a dairy keyword it is rejected and Frittu attempts to generate an alternative; if none passes the check, no recipe is returned for that slot.
If I exclude dairy and tree nuts, does Frittu handle almond milk differently?
Yes. The exception-prefix mechanism that normally allows plant-based alternatives to pass the dairy check has a specific interaction when tree nuts are also excluded. When both allergens are selected, the exception for nut-derived prefixes is suppressed — so ingredient names like "almond milk" or "cashew cream" are flagged by the tree-nut keyword check rather than passing as dairy alternatives. Non-nut plant-based alternatives such as oat milk, coconut cream, rice milk, and soy yoghurt are unaffected by this interaction and continue to pass the dairy check.
Try Frittu with your allergen list
Set your allergens once. Every recipe Frittu generates is then checked against them before it reaches you.
Download FrittuMore on how Frittu works