BetaMaShop is in public beta. We improve it continuously, and your feedback shapes what comes next.
MaShop/Blog/Industry/The Description Said It Was Gluten Free. Nobody Ch…
IndustrySeptember 16, 2026
Read · 5 min
allergen labelling · food allergens

The Description Said It Was Gluten Free. Nobody Checked

If you sell food online and let a model write your listings, one sentence can become a regulated claim. Here is where the line sits in the US and the EU.

Key takeaways
  • A product description is marketing. An allergen declaration is a legal statement. A model that writes both in one paragraph has quietly blurred a line the law does not.
  • The United States recognises nine major food allergens. The EU and the UK list fourteen. The five extras are celery, mustard, lupin, molluscs and sulphites above a stated threshold.
  • Sesame became the ninth US major allergen on 1 January 2023, so any model trained mostly on older text will get this wrong.
  • Free from claims are absence claims. Nothing in a recipe file proves an absence, which is why a model can never generate one safely.
  • The dangerous failure is not invention. It is inheritance, where a model copies allergen text from a similar product you already sell.
  • Have the model draft the sensory copy and keep the ingredient list, the emphasis and the contains statement generated from your recipe data, not from prose.

A small food business with two hundred products has a real problem that a language model looks like it solves. Every line needs a description, the descriptions need to be consistent, and writing them takes weeks you do not have. So you feed the model your ingredient list and it returns something readable in four seconds.

The output is usually good. The risk is that somewhere in those two hundred descriptions, a sentence that reads like marketing is actually a regulated claim, and the penalty for getting it wrong is not a bad review. It is a recall, and the clock for reporting one is measured in hours.

Where exactly is the line between copy and a label?

The line sits at the point where a statement is about composition rather than about experience. Saying a biscuit is buttery and crumbles well is copy. Saying it contains no nuts is a label, and it carries the same weight whether it appears in a description field or on a printed wrapper.

That distinction survives the medium. A shopper reading your product page is reading the information you provided about the food, and regulators on both sides of the Atlantic treat distance selling as a case where the information has to be available before the purchase rather than only on the packet that arrives afterwards.

The practical rule for a catalogue is therefore simple to state and easy to get wrong. Anything generated may describe. Only things derived from your recipe data may declare. If the same paragraph does both, you have lost the ability to check one without rereading the other, and at two hundred products nobody rereads.

How many allergens is it, nine or fourteen?

Both, depending on where the parcel lands. The United States names nine, the EU and the UK name fourteen, and a seller shipping in both directions has to satisfy the longer list.

The FDA's page on sesame as the ninth major food allergen sets out the American position. The nine are milk, eggs, fish, crustacean shellfish, tree nuts, peanuts, wheat, soybeans and sesame. Sesame joined the list for packaged foods and dietary supplements on 1 January 2023, and the declaration can appear in the ingredient list by name, in a contains statement after the ingredients, or in parentheses following the ingredient name.

The European list is longer and more specific. Annex II of Regulation 1169/2011 enumerates fourteen categories with their exemptions written into the entries themselves: cereals containing gluten, crustaceans, eggs, fish, peanuts, soybeans, milk including lactose, tree nuts, celery, mustard, sesame seeds, sulphites above 10 mg per kilogram or litre, lupin and molluscs.

Allergen categoryUnited StatesEU and UKWhat a model gets wrong
Milk, eggs, fish, crustaceans, tree nuts, peanuts, soybeansDeclaredDeclaredLittle. These are well represented everywhere
WheatDeclared as wheatDeclared as cereals containing gluten, naming the cerealWrites wheat where rye, barley or oats are the actual ingredient
SesameDeclared since 1 January 2023DeclaredOmits it if the model leans on pre 2023 American text
CeleryNot a major allergenDeclaredHides inside stock, mirepoix and seasoning blends
MustardNot a major allergenDeclaredHides inside dressings, sauces and spice mixes
LupinNot a major allergenDeclaredAppears in gluten free flours, which is a painful irony
MolluscsCovered only as fish or crustacean in some copyDeclared separatelyConflated with crustacean shellfish
SulphitesLabelled at 10 ppm under separate rulesDeclared above 10 mg per kg or litreTreated as an ingredient decision when it is a measurement

Read the bottom five rows together. They are the five a model trained largely on American commerce text will quietly leave out, not because it is careless but because most of its examples never had to mention them. A British delicatessen selling into Europe with descriptions drafted from an American shaped model is exposed on celery and mustard in particular, because both hide inside compound ingredients rather than appearing as themselves.

Diagram showing six claims a language model must never generate for a food listing, including gluten free, nut free, suitable for vegans and may contain traces

Why is a free from claim different from every other sentence?

Because it is a claim about absence, and absence cannot be read off a recipe. Every other statement in a description is supported by something in your data. A free from claim is supported only by your process, your suppliers and your kitchen, none of which appear in the text you gave the model.

Consider what the model actually has. It has a list of what goes in. From that it can correctly infer what is present. It cannot infer what is absent, because the recipe does not record the flour that shares a scoop, the line that ran peanuts before yours, or the supplier who changed a seasoning blend last month without telling you.

This is why the six claims in the figure above are worth blocking at the tooling level rather than catching in review. Gluten free, nut free, dairy free, suitable for vegans, may contain traces and no added sugar are all statements a model will produce cheerfully from an ingredient list, and all of them depend on facts the ingredient list does not contain. Two of them, gluten free and no added sugar, are additionally regulated claims with their own thresholds and conditions in most markets.

The precautionary version is the subtlest trap. A model asked to be helpful about allergens often adds a may contain line because it has seen thousands of them. That sentence is a risk assessment you did not perform, and an unnecessary one degrades your customers' trust in every other precautionary statement you make.

What actually goes wrong in practice?

Not hallucination. Inheritance. The failure mode that shows up repeatedly in real catalogues is a model copying allergen text from a similar product you already sell.

The mechanism is easy to reproduce. You ask for descriptions in batches, you give a few of your existing listings as examples of house style, and the model absorbs the allergen sentences along with the tone. Product 147 is a lemon variant of product 12, so it inherits product 12's contains statement, including the egg that the lemon version does not use and excluding the almond that it does. Nothing was invented. Everything was copied from a source you supplied.

The second common failure is the plural. A model writing about a range will generalise across it, producing a single allergen statement for six flavours where two of them differ. This reads well and is wrong twice.

The third is unit drift on the one numeric entry. Sulphites carry a threshold of 10 mg per kilogram or litre, and asking a model to reason about whether your product crosses it is asking it to do arithmetic on a figure you never gave it. That row is a measurement from your supplier's specification, not an inference.

Note

None of these produce an obviously wrong sentence. They produce a plausible sentence about the wrong product, which is exactly the class of error that survives a proofread. Checking descriptions against each other will never catch it. Only checking each description against its own recipe will.

What does a safe workflow look like?

Split the field. The model writes the part that sells, and your data generates the part that declares, and the two are never produced by the same process.

In practice that means your product record carries the ingredients as structured data rather than as a sentence. Each ingredient is a row, each row is flagged against the fourteen categories, and the contains statement is generated from those flags by a rule rather than by a model. The emphasis, which in the EU and the UK has to be visible every time an allergen appears in the ingredient list, comes from the same flags. Bold, capitals, underline or a contrasting colour are all acceptable ways to do it, and picking one and applying it mechanically is safer than trusting formatting to survive a text generation step.

Then the model gets a narrower job. Give it the product name, the sensory attributes and the use occasion, and ask for two sentences about taste and texture. Do not give it the ingredient list at all. A model that never sees the ingredients cannot write about them, which removes the entire failure class rather than mitigating it.

The review step that catches the rest is uncomfortable and short. For each product, one person reads the generated allergen block against the recipe card, not against the website and not against the previous version. That is the only comparison that finds an inherited error, and at a hundred products it is an afternoon, which is considerably less than a recall.

Card naming three product fields that must never be written by a language model, the ingredient list, the contains statement, and any free from claim

Does selling in person change anything?

Yes, and the UK case is worth knowing even if you sell elsewhere, because it is the clearest example of a rule written after a death. Food packed on the same premises it is sold from used to escape full labelling, and no longer does.

The Food Standards Agency publishes allergen guidance for food businesses covering England, Northern Ireland and Wales, including the matrix and signage templates that businesses actually use day to day. The requirement it supports is that food prepacked for direct sale carries the name of the food and a full ingredients list with the regulated allergens emphasised within that list, every time they appear.

For a business that sells both online and from a counter, the important consequence is that two systems now have to agree. The label on the sandwich and the description on the website describe the same food, and if one of them was generated and the other was typed, they will diverge within a month. Generating both from the same structured recipe record is the only version of this that stays consistent, and it is the same discipline that keeps a catalogue honest in every other respect, as we argued in the piece on the legal fields missing from most product listings.

What about the ingredients you did not choose?

They are still yours to declare, and this is where small producers get caught. An allergen that enters your product inside a compound ingredient is legally identical to one you added deliberately, and it usually arrives without announcing itself.

Three sources account for most of it. Compound ingredients are the first: a stock, a sauce base, a spice blend or a chocolate coating is itself a recipe, and the allergens inside it belong in your list. The EU entries make this explicit by naming products thereof for almost every category, which sweeps in derivatives rather than only the raw ingredient. The second source is processing aids and carriers, where fish gelatine used as a carrier for vitamin preparations and refined soybean oil are written into Annex II as specific exemptions precisely because the general rule would otherwise catch them. The third is your supplier changing something.

That last one is the reason a generated catalogue decays rather than simply being right or wrong on the day it was written. A seasoning supplier reformulates, your recipe card does not change, and two hundred descriptions that were accurate in March are inaccurate in September with nothing in your system to signal it. A model cannot help here at all, because the input it would need is a document you have not received. What helps is a dated review cycle on supplier specifications, and treating any specification change as a trigger to regenerate the affected listings from the recipe rather than to edit the text.

Can a model help with allergens at all?

Yes, in one direction only. It is useful for finding things, and dangerous for asserting things.

Ask it to read a supplier specification and flag every phrase that might indicate a regulated allergen, and it will do that well, catching the celery hidden in a stock powder and the mustard flour in a dressing base. Treat the output as a list of questions for your supplier rather than as an answer. That is a real time saving on the most tedious part of the job.

Ask it to review your existing catalogue for descriptions that contain absence claims, and it will find them faster than you will. A model searching for the phrase pattern of a free from claim across two hundred listings is doing exactly what it is good at, and every hit is a genuine item for review.

What it must not do is complete a gap. An ingredient list with a missing entry is a data problem to be fixed at source, and a model asked to fill it will produce something reasonable, which is the worst possible outcome because reasonable text passes review.

What about marketplaces and their own rules?

They add requirements, they never remove them. A marketplace that demands an allergen field is not offering an alternative to the legal position, it is collecting the same information in its own format, and a rejected listing is usually a sign your underlying data is incomplete rather than a formatting quirk.

The pattern that causes trouble is copying a listing from one channel to another and letting a tool reshape it. Field mapping between a marketplace schema and your own is where allergen data gets truncated, merged into a free text blob or dropped entirely, and the same generative step that tidies the description will tidy away the emphasis formatting too. We went through that class of migration failure in the piece on the catalogue fields you must not let AI touch.

If you are building the storefront yourself, this argues for treating allergens as first class structured fields on the product rather than as text inside a description, so that every channel renders them from the same source. That is a schema decision made once, and it is one of the reasons we generate storefronts with a product model you can extend rather than a fixed template, since a food seller needs fields a generic catalogue never anticipates.

"As of January 1, 2023, sesame must be labeled as an allergen on packaged foods and dietary supplements."US Food and Drug Administration

The short version

Let the model write about flavour, texture and the moment somebody would eat the thing. Keep composition out of its reach entirely. Generate the ingredient list, the emphasis and the contains statement from structured recipe data, and never let a free from claim be produced by anything other than a person who knows the kitchen.

The temptation runs the other way because allergen text is boring to write and a model writes it instantly. That is precisely the trade being offered, and it is a bad one. Every other field in your catalogue can be fixed quietly after a customer complains. This one cannot.

Comments 0

0 / 4000Your email stays private.
No comments yet. Be the first.

Keep reading picked for you.

Describe it. MaShop builds it.

Commerce apps and websites from one sentence. No card to start.

Start building