FrittuFrittu

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.

Whey, casein, caseinate, and lactoseThese are processing derivatives of milk that appear on ingredient labels of protein powders, processed foods, some breads, and ready-made sauces. Whey is the liquid fraction separated during cheesemaking; casein and its salt form caseinate are the primary milk proteins; lactose is milk sugar. All four appear in Frittu's keyword list because recipe ingredients may include whey protein powder, casein protein, or similar items by name.
GheeClarified butter made by simmering butter until the water evaporates and most milk solids can be skimmed off. Despite the removal of water and some solids during clarification, ghee retains milk proteins and is a dairy-derived product. It is used extensively in South Asian, Middle Eastern, and North African cooking — often in quantities large enough to be nutritionally significant — and is in Frittu's keyword list.
PaneerA fresh milk cheese made by curdling heated milk with an acid such as lemon juice or vinegar, then pressing the curds. It is dairy in its most direct form and appears extensively in South Asian cooking — in curries, tikka preparations, grilled dishes, and stuffed breads — where it is sometimes categorised in recipes as a protein rather than a cheese, which can obscure its dairy origin.
Labneh and labneStrained yoghurt that has had most of its whey removed, producing a thick, spreadable product similar in texture to cream cheese. It is common in Levantine and broader Middle Eastern cooking, used as a dip, spread, or accompaniment. The alternative spelling “labne” is also in Frittu's keyword list.
KefirA fermented milk drink made by culturing milk with a combination of bacteria and yeasts held in a starter culture called kefir grains. It is increasingly used in baking (as a buttermilk substitute) and in dressings or marinades, and is flagged by Frittu's keyword list.
Quark and fromage fraisEuropean fresh cheeses produced by warming soured milk and then straining it. Quark is common in German and Eastern European cooking and baking; fromage frais is used in French cuisine as a dressing base and a lighter alternative to cream. Both are dairy and are in Frittu's keyword list.
Crème fraîche, mascarpone, and buttermilkCrème fraîche is a cultured cream product used in French sauces, soups, and baked dishes. Mascarpone is a thick Italian cream cheese used in desserts, pasta sauces, and risotto. Buttermilk is the liquid remaining after butter is churned from cream — used in baking and marinades — or its cultured modern equivalent. All three appear in cooking contexts where the underlying dairy origin may not be immediately evident from the dish name.
CustardA cooked mixture of milk or cream and egg yolks used as a dessert sauce, filling, or base. Both “custard” and “custard powder” are caught by Frittu's dairy keyword list, and the egg content is handled separately by the egg keyword check when eggs are also excluded.
Named hard and semi-hard cheeses — parmesan, cheddar, gouda, gruyèreThese aged cheeses are low in lactose due to the fermentation process, but they retain dairy proteins and are dairy products. They appear as named ingredients in recipe lists — often in smaller quantities as flavour components in pasta, risotto, gratins, and salads — and each is listed individually in Frittu's keyword set.
Feta and halloumiTwo cheeses that are especially common as hidden dairy sources in recipe scanning. Feta appears in salads, roasted vegetable dishes, and grain bowls where it may read visually as a garnish rather than a primary ingredient. Halloumi is a Cypriot cheese whose high melting point makes it suitable for grilling or pan-frying — it is often categorised in recipes alongside grilled proteins rather than dairy. Both are brined cheeses made from sheep's and/or goat's milk and are fully covered by Frittu's keyword list.
Soft-ripened cheeses — brie, camembertSurface-ripened cheeses with a bloomy rind, produced from cow's milk. They appear in recipes as baked appetisers, cheese boards described within a generated recipe context, or as a filling in pastry dishes.
Mozzarella and ricottaMozzarella is a fresh pulled-curd cheese used in pizza, pasta, and salads — sometimes listed as “fresh mozzarella” or “buffalo mozzarella.” Ricotta is a whey-based fresh cheese used in pasta fillings, baked dishes, and desserts. Both are caught individually by Frittu's keyword list.

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 Frittu

More on how Frittu works

How our recipes are generated and checked →AI recipe generator feature overview →
← Back to Frittu
Built byStreetsideweb