Public ruleset · v2026.07.0
Exactly how we decide what's safe.
Every verdict is produced by this versioned ruleset — not a language model. It's public because you deserve to see the reasoning, and to catch us if we're wrong.
Exact-token matching is deliberate: it's why maltodextrin is not flagged as malt, and buckwheat is not flagged as wheat.
Prohibited — outright gluten
A match here can never be marked safe (forced to not_safe).
| Term | Match | Note |
|---|---|---|
| wheat | exact_token | Wheat contains gluten. |
| durum | exact_token | Durum is a wheat species. |
| semolina | exact_token | Semolina is milled durum wheat. |
| spelt | exact_token | Spelt is a wheat species. |
| kamut | exact_token | Kamut (khorasan) is a wheat species. |
| farro | exact_token | Farro is a wheat species. |
| einkorn | exact_token | Einkorn is a wheat species. |
| emmer | exact_token | Emmer is a wheat species. |
| graham | exact_token | Graham flour is whole wheat. |
| freekeh | exact_token | Freekeh is roasted green wheat. |
| bulgur | exact_token | Bulgur is cracked wheat. |
| couscous | exact_token | Couscous is made from wheat semolina. |
| seitan | exact_token | Seitan is concentrated wheat gluten. |
| matzo | exact_token | Matzo is made from wheat. |
| matzah | exact_token | Matzah is made from wheat. |
| farina | exact_token | Farina is a wheat cereal. |
| fu | exact_token | Fu is dried wheat gluten. |
| barley | exact_token | Barley contains gluten. |
| rye | exact_token | Rye contains gluten. |
| triticale | exact_token | Triticale is a wheat-rye hybrid. |
| malt | exact_token | Malt is derived from barley. |
| malt vinegar | phrase | Malt vinegar is not distilled and retains gluten from barley. |
| malt extract | phrase | Malt extract is barley-derived. |
| malt syrup | phrase | Malt syrup is barley-derived. |
| malt flavoring | phrase | Malt flavoring is typically barley-derived. |
| malt flavour | phrase | Malt flavour (intl spelling) is typically barley-derived. |
| malted barley | phrase | Malted barley contains gluten. |
| barley malt | phrase | Barley malt contains gluten. |
| brewers yeast | phrase | Brewer's yeast is typically grown on spent barley mash. |
| brewer yeast | phrase | Brewer's yeast (alt phrasing). |
| hydrolyzed wheat protein | phrase | Hydrolyzed wheat protein contains gluten. |
| wheat flour | phrase | Wheat flour contains gluten. |
| wheat germ | phrase | Wheat germ contains gluten. |
| wheat bran | phrase | Wheat bran contains gluten. |
Risk — nuanced, never safe
A match can never be safe; the best case is a controlled cross-contamination risk.
| Term | Match | Note |
|---|---|---|
| wheat starch | phrase | Wheat starch may be specially processed <20ppm (Codex) but is not inherently safe; requires verification. |
| oats | exact_token | Non-certified oats carry cross-contamination risk from shared equipment. |
| oat | exact_token | Non-certified oat ingredient; cross-contamination risk. |
| oatmeal | exact_token | Non-certified oatmeal; cross-contamination risk. |
Allow phrases
These label phrases suppress an overlapping grain token so we don't flag a genuinely-safe product. They only ever reduce false positives — they can never turn a real grain into a “safe.”
| Phrase | Why |
|---|---|
| certified gluten free oats | Certified GF oats are tested <20ppm; suppress the `oats` risk token. |
| gluten free oats | GF-labeled oats bear an FDA <20ppm claim; suppress the `oats` risk token. |
| certified gluten free rolled oats | Common label phrasing for certified GF rolled oats. |
| gluten free rolled oats | GF-labeled rolled oats. |
| certified gluten free oat flour | Certified GF oat flour. |
| wheat free | Negation claim; prevents the `wheat` token from firing on `wheat-free`. Other grains still screen. |
Changes to this ruleset happen only through a reviewed pull request, gated by a 60+-fixture golden test suite. Verdicts store the exact ruleset version that produced them, so every decision stays auditable.