Revision 2026-07-22 — this revision identifier is what your registration acknowledgment refers to. Material changes to this document produce a new revision and a fresh acknowledgment request.
Please read this document carefully before using EdibleIQ. You will be asked to acknowledge that you have read and understood it.
EdibleIQ's automated label checks are decision support for a qualified reviewer. They are not a determination of regulatory compliance. They help a formulator catch common, mechanical errors early and point a human reviewer at the things that need judgement. They do not certify that a label complies with FDA regulations, and they are not a substitute for review by your own compliance function or counsel.
Three points govern everything below:
You and your compliance team remain solely responsible for the finished label. Use these checks to work faster and catch the obvious things; do not use them as the final word.
| Level | Meaning |
|---|---|
| Blocking | The system refuses to publish outright. No override. |
| Blocking unless acknowledged | The system refuses to publish unless you explicitly acknowledge the issue; your acknowledgement is recorded (who, when, and what was acknowledged). |
| Advisory | An AI finding shown to a reviewer. Probabilistic. It can block publishing only in the limited sense described under Layer 1. |
| Construction rule | A deterministic behaviour of how the system builds label data — not a check that runs and reports. |
| Informational | Surfaced for a human decision; never enforced, never applied automatically. |
A label passes through up to three independent layers. They cover different things and none is a superset of the others.
| Layer | Type | When it runs | Governs |
|---|---|---|---|
| 1. Publish gate | Deterministic | Automatically, when you publish | Label data readiness and compliance-check freshness |
| 2. Nutrition data check | AI | On demand ("Run Compliance Check") | 21 CFR 101.9 values, plus ingredient-statement content (101.4), claims (101.13), and related sections listed below |
| 3. Visual check | AI vision | On demand, from the label preview | 21 CFR 101.9(d) typography and format |
Runs automatically when a formula is published. This is conventional software logic, not AI; its behaviour is exact and repeatable. Each refusal is presented to you with a specific reason.
| # | Check | Basis | Enforcement |
|---|---|---|---|
| 1.1 | Scratch-pad ("bench") formulas cannot be published | House rule: scratch work has no client engagement to lock a version against | Blocking |
| 1.2 | Every ingredient must be declarable by name — an ingredient with no name of any kind cannot appear in the ingredient statement | 21 CFR 101.4: each ingredient is declared by its common or usual name | Blocking |
| 1.3 | Machine-read label data must be confirmed by a person before publishing — this covers data read from scanned documents that no one has verified, missing declaration names falling back to internal names, commas inside declaration names, and scanned sub-ingredient evidence with no confirmed declaration | House rule: a machine reading of a document must be confirmed by a person before it rides on a label | Blocking unless acknowledged |
| 1.4 | A current compliance check must exist — a formula whose label was never checked, or was checked before the formula changed, cannot be published until the check is re-run | House rule | Blocking (no override — run the check and re-publish) |
| 1.5 | Critical findings from the compliance check block publishing unless you explicitly acknowledge them; every such acknowledgement is recorded — who, when, the verdict status, and the number of critical findings — and logged | The AI findings of Layers 2 and 3 (advisory in origin; the gate enforces acknowledgement, not their correctness) | Blocking unless acknowledged |
Honest limits of the freshness check (1.4). "Has the formula changed" is judged on what changes the label's calculated numbers: the set of ingredients, their quantities, servings per container, and containers per batch. It does not cover label-text edits. A user can run the check, then edit the claims text, footnote, or allergen wording on the label, and publish without the gate demanding a re-check. A reviewer must not assume the checked label text is the published label text.
What the publish gate does not do. It does not run the AI checks at the moment of publishing (those take minutes); it reads the last stored verdict. It does not verify any label PDF uploaded at publish time against anything.
Invoked on demand from the label editor. The generated label's data is sent to an AI model instructed to review it as an FDA nutrition-labeling specialist. Findings are classified CRITICAL / WARNING / INFO, with corrected values where a number is wrong. Every check in this layer is advisory — an AI finding to be confirmed by a reviewer — even though its stored verdict feeds publish-gate checks 1.4 and 1.5.
Three blocks of facts are resolved on the server from the formula itself, never from the browser, because regulatory inputs must not be supplied by the client:
| Fact block | Contents | Discipline the checker follows |
|---|---|---|
| Reference amount (RACC) | The formula's assigned 21 CFR 101.12 category, the regulation's own wording, and a single resolved amount only when it is unambiguous | Three states: resolved (a contradicting serving size is a critical finding), unresolved (the regulation states a derivation, or the amount depends on a product form that is not recorded — a warning quoting the regulation; the amount is never inferred), none (no category assigned — serving-size findings can only be assumptions, reported as warnings) |
| Ingredient facts | Each ingredient's declared name, its weight in grams where the unit converts (flagged as not weight-comparable otherwise), its stored sub-ingredient declaration, and whether a document scan found sub-ingredient evidence for it | State conclusions from the facts, or say the data was unavailable; never manufacture a violation from the printed label text alone |
| Allergen facts | The distinct contains-level allergens on file across the formula's ingredients ("may contain" advisory records are excluded by design) | Cross-check the printed "Contains:" line against the facts, or say the data was unavailable |
When the formula cannot be resolved, all three blocks are explicitly marked unavailable and the corresponding checks weaken to assumptions or informational notes — the checker is forbidden to invent the missing facts.
| # | Check | Checked against |
|---|---|---|
| 2.1 | Serving size: household measure plus metric weight (e.g. "2 tbsp (30g)"); consistency with the supplied reference amount (critical only when an authoritative amount was supplied; a warning when inferred); singular/plural grammar | 21 CFR 101.9(b)(2), 101.9(b) |
| 2.2 | Nutrient scaling: per-100g source data scaled to the actual serving; implausible values (e.g. potassium above 5,000 mg per serving) flagged as scaling errors | 21 CFR 101.9(c) |
| 2.3 | Rounding rules per nutrient (calories, the fat family, cholesterol, sodium and potassium, the carbohydrate family, protein; %DV at or above 50% to the nearest 10%) | 21 CFR 101.9(c), one rounding rule per paragraph of the regulation, verified against a committed snapshot of the regulation text |
| 2.4 | Required nutrient set: all 15 mandatory 2020-format nutrients present, even when zero | 21 CFR 101.9(c) |
| 2.5 | A %DV present for every nutrient that requires one | 21 CFR 101.9(c) |
| 2.6 | Label format and typography from declared font data where present (title largest and bold, Calories at least 22pt, nutrient names at least 8pt, rule weights, no decorative content); an informational note when font data is absent | 21 CFR 101.9(d) |
| 2.7 | Allergen statement versus the on-file facts: an allergen printed in "Contains:" but not on file is a critical over-declaration; a Big-9 allergen on file but missing from the statement is a critical FALCPA omission; advisory language is reserved for cross-contact; the statement must sit outside the Nutrition Facts box; allergens on file that are not among the Big 9 are not required in a US "Contains:" line | FALCPA / 21 CFR 101.4 |
| 2.8 | Supplement Facts content must not sit inside the Nutrition Facts panel | 21 CFR 101.36 |
| 2.9 | Bulk-ingredient exemption: an informational flag when the product looks like a single-component manufacturing ingredient that may not need a consumer panel (the exemption is noted, never determined) | 21 CFR 101.9(j) |
| 2.10 | Ingredient statement content versus the on-file facts: printed order must be descending by the supplied gram weights (critical when contradicted; "could not be fully verified" for rows whose units do not convert to weight); an ingredient with scanned evidence of sub-ingredients but no parenthetical declaration is a critical dropped declaration; a parenthetical is never invented for a single-component ingredient; the declared name on file is accepted as the common or usual name | 21 CFR 101.4(a), 101.4(b)(2) |
| 2.11 | Internal nutrient consistency: Added Sugars ≤ Total Sugars; Saturated + Trans ≤ Total Fat; Fiber ≤ Total Carbohydrate; Total Sugars ≤ Total Carbohydrate — with one rounding increment of slack so rounding artefacts are not flagged | 21 CFR 101.9(c) (a sub-component cannot exceed its parent) |
| 2.12 | Protein %DV: mandatory when a protein claim appears (critical if absent); a declared %DV equal to the naive grams÷50 calculation is flagged as a warning, with the instruction that a person must supply the PDCAAS digestibility factor. The corrected value is never computed by the system. | 21 CFR 101.9(c)(7) |
| 2.13 | Nutrient content claims, judged only when the claims field is filled in: defined-term thresholds ("sodium free" under 5 mg, "low fat" at most 3 g, "high" at least 20 %DV, and so on) contradicted by the panel are critical when the serving is at or near the reference amount, warnings when it clearly differs; comparative claims ("reduced", "light") are warnings to verify the 25% difference against the reference food (101.13(j)); "healthy" is a warning (101.65(d)); health claims (Subpart E) are warnings naming the claim so its authorization can be verified | 21 CFR 101.13 and Subpart D (101.54–101.62); 101.65(d); Subpart E (101.70 ff.) |
| 2.14 | Juice declaration: a beverage purporting to contain juice with no percentage declaration is a warning (101.30(a)); declaration wording and whole-number percentages (101.30(b)); "100% juice" alongside added sweeteners in the ingredient statement is a critical contradiction; an omitted "from concentrate" is a warning | 21 CFR 101.30 |
| 2.15 | Imitation labeling: judged only when the field is filled in; "imitation" not immediately followed by the name of the food imitated is critical (the prescribed form); whether the product actually is nutritionally inferior is explicitly not judged | 21 CFR 101.3(d) |
| 2.16 | The %DV footnote, verbatim: the post-2016 sentence is compared exactly (a leading asterisk and whitespace are ignored); any other wording, including the pre-2016 text, is critical; an empty field is a warning (the rendered label may add the footnote elsewhere); simplified-format labels may omit it (101.9(f)(4)) | 21 CFR 101.9(d)(9) |
Invoked on demand from the label preview. An image of the rendered label is sent to an AI vision model. A snapshot of every checked image is archived.
What this layer is, and is not. This is an advisory second opinion, not a verification. A vision model reads an image; it cannot measure a point size or a rule weight, and it is not the authority on whether our renderer followed the format specification. Treat anything it raises as a prompt to look, never as a finding of compliance or non-compliance.
How it interacts with publishing, precisely. You are never required to run it: a label can be published having had only the Layer 2 data check, and a visual result on its own can never satisfy the freshness requirement. A visual result from an older version of the label is ignored outright. But if a current visual result reports critical issues, publishing that label requires an explicit override with a written reason, which is stored with the published version — the same treatment the data check's criticals receive.
Points it may raise for your reviewer's attention (all advisory, all against 21 CFR 101.9(d) format and typography):
Limits, stated plainly:
These are not checks that run and report; they are how the system constructs label data. They are deterministic and covered by automated tests, and they matter because they are where a wrong label would otherwise originate.
| # | Rule | Basis |
|---|---|---|
| 4.1 | Derived versus reference data. Ingredient label data splits into two classes. Derived data (declaration name, sub-ingredient statement, allergens) legally flows into the finished label, and its absence is a blocking gap. Reference data (country of origin, certifications, supplier storage and handling, Non-GMO status) is stored for decision support and never automatically declared — auto-propagating a supplier's certification or handling text would put a claim on a label the product may not be entitled to make. Unclassified fields default to reference. | 21 CFR 101.4 / FALCPA for the derived set |
| 4.2 | Panel fields that are never auto-filled. Safe Handling Instructions (an FSIS panel — 9 CFR 317.2(l) / 381.125(b) — triggered by what the finished product is), species declaration, USDA grading and storage, certifications used as claims, country of origin, juice declaration, and imitation label are never populated from ingredient data; a person types them. | As stated per field |
| 4.3 | Ingredient statement derivation (the proposal the gate and the checker then judge): descending order of predominance by weight in grams where units convert (raw quantity preserved for non-convertible rows, which are flagged as not weight-comparable); compound ingredients declared parenthetically; duplicates declared once at the heaviest occurrence; the derivation never overwrites a statement a person has edited. | 21 CFR 101.4(a), 101.4(b)(2) |
| 4.4 | Comma-in-name warning. A declaration name containing a comma reads as two ingredients in a comma-delimited statement; it is flagged for a person to rename, because a label has no way to escape a comma. | Consequence of the 101.4 statement format |
| 4.5 | Dropped sub-ingredient evidence. When a document scan read a sub-ingredient block off a supplier sheet but the confirmed declaration is empty, the publish flow flags a likely dropped 101.4(b)(2) list. This never fires on genuinely single-component ingredients, which carry no scanned evidence. | 21 CFR 101.4(b)(2) |
| 4.6 | "Contains:" construction uses contains-level allergen records only; advisory ("may contain") records are excluded, so a cross-contact disclosure is never printed as an affirmative Contains declaration. | FALCPA / 21 CFR 101.4 |
| 4.7 | FDA rounding at label generation — the rendered panel's declared values are rounded per the applicable paragraph of 101.9(c): calories in 5- and 10-calorie tiers; the fat family in half-gram tiers; cholesterol and sodium/potassium in milligram tiers; the carbohydrate family and protein to the nearest gram; minerals to whole milligrams — one rounding rule per paragraph. | 21 CFR 101.9(c) |
| 4.8 | %DV from the declared amount. The %DV is computed from the same rounded declared value shown on the panel, so grams and percent never disagree; vitamin and mineral %DV rounds in the FDA increments (nearest 2% below 10%, nearest 5% up to 50%, nearest 10% above). | 21 CFR 101.9(d)(7)(ii) (either basis is permitted; the internally consistent one is chosen) |
| 4.9 | %DV blank versus zero. A nutrient with no Daily Value in the regulation shows a dash, never an invented number or a fake 0%; nutrients that require a %DV always show one, including 0%. The absence of a Daily Value is treated as information, not as zero. | 21 CFR 101.9(c)(8), (c)(9) |
| 4.10 | All mandatory nutrients appear on the panel even at zero — sub-nutrients at zero are not filtered out; Supplement Facts content is kept out of the Nutrition Facts panel as a separate panel. | 21 CFR 101.9(c); 101.36 |
| 4.11 | Serving size assembly: the household measure (supplied by the user, never fabricated) is combined with the computed metric weight as "household (metric)". | 21 CFR 101.9(b)(2), 101.9(b) |
| 4.12 | Published specification and nutrition sheets print unrounded analytical values, and their footnote says so: label rounding applies only to the label. The %DV on these sheets compares the unrounded amount to the 101.9 Daily Value reference amounts. | 21 CFR 101.9, cited only for the Daily Value reference amounts — deliberately not for rounding |
| 4.13 | The reference-amount panel in the editor is advisory by design. The editor shows what 21 CFR 101.12 states for the assigned category next to the declared serving size, and says in the interface itself that the declared value is not checked against it — compare them yourself. Categories whose regulation states a derivation rather than a quantity display the regulation's wording and refuse to compute a number. | 21 CFR 101.12 |
| # | Check / rule | Behaviour | Enforcement |
|---|---|---|---|
| 5.1 | Scan output requires verification | Everything the AI extractor reads from a specification sheet is marked as requiring verification; the import wizard makes you confirm before saving, and any path that writes scanned data without that confirmation marks it unverified | Blocking-unless-acknowledged downstream (publish check 1.3) |
| 5.2 | Extraction discipline | The extractor is required to preserve exact values and qualifiers, never infer missing values, copy allergen wording exactly — including whether it says "Contains" versus "May contain", which are different claims and must not be merged — and take a declaration name only when the sheet states one | Construction rule |
| 5.3 | Scanned label data lands unverified and never overwrites | Scanned data only fills fields that are currently empty; it is stamped with its source and marked unverified until a person confirms it (the person, name, and time of confirmation are recorded); scanned sub-ingredient text is kept as evidence of a compound ingredient even when not applied | Construction rule |
| 5.4 | Allergen prose is matched to canonical allergen records by deliberate, conservative rules — not fuzzy matching | A near-miss either hides an allergen or over-declares, so matching is strict: contains-level matches link to the allergen record; advisory matches ("may contain", "traces", "shared facility", and similar) are reported but never linked; a leading negation ("free from milk and soy") drops the whole clause so the inner words cannot declare; non-allergen phrases ("cocoa butter", "gluten free", "coconut oil") are stripped before matching; word boundaries prevent false substring matches; text that says something but matched nothing is queued for a human — never silently treated as "no allergens" | Construction rule + human review queue |
| 5.5 | The major-allergen vocabulary is fixed | The nine FDA major allergens (the FALCPA eight plus sesame per the FASTER Act) are seeded into every environment identically; the list is closed — changing it is treated as a regulatory change, not a data edit | Construction rule |
| 5.6 | A scanned product category resolves against the house vocabulary conservatively | The sheet's category phrase is matched in three conservative tiers (exact, plural-tolerant, unambiguous containment); no match leaves the selection empty with the raw phrase shown — the system never guesses a category | Informational (prefill only) |
The "unverified" marker means a machine supplied this; a human has not yet confirmed it. Treat it as a prompt to check the supplier's documentation, not as an assertion of correctness.
None of this changes the nature of the AI layers: assured or not, their findings remain probabilistic and advisory.
These are label elements that FDA regulates and that EdibleIQ does not currently verify automatically, or verifies only within the stated limits. A reviewer must check them by hand. This list is maintained deliberately, so your team knows precisely where the tool stops.
Statement of identity — 21 CFR 101.3. The product name is free text. Nothing checks that it is the name specified by regulation or the common or usual name of the food. (The imitation statement's form is AI-checked when that field is filled in — see 2.15 — but whether an imitation statement is required is not determined.)
Name and place of business — 21 CFR 101.5. Manufacturer and distributor name-and-address panels are not modeled or checked.
Net quantity of contents — 21 CFR 101.7. Not modeled.
Nutrition-panel type size relative to package size; dual-column and tabular/linear format triggers — 101.9(d)(11), 101.9(b)(12), 101.9(j). Whether a package qualifies for a simplified, tabular, or linear format, and dual-column labeling for products at or above 200% of the reference amount, are not determined. The bulk-ingredient exemption is only ever an informational note.
Deterministic serving-size validation against the reference amount. No deterministic logic computes or validates the declared serving size against the 21 CFR 101.12 reference amount — the editor panel says so on screen (see 4.13). The AI check compares them when a category is assigned and unambiguous; that is an advisory, probabilistic comparison, not a computed validation.
Protein %DV correction. The naive grams÷50 figure is flagged (2.12); the PDCAAS-corrected value is never computed — a person must supply the digestibility factor.
Nutrient-content and health claims — limits. Defined-term thresholds are AI-checked against the panel when a claim is typed (2.13). Comparative claims, "healthy", and Subpart E health claims are only ever flagged for human verification. The claims field itself remains free text; nothing prevents an unchecked claim wording from being typed after the compliance check has run (see the freshness limits under Layer 1).
Flavor, color, and spice declarations — 21 CFR 101.22. Not modeled.
Country-of-origin, species, safe-handling, and USDA grading panels. Deliberately never auto-populated (4.2), and their content is not checked; whether an FSIS Safe Handling panel is required for a given product is not determined.
Percent-juice declaration — partially covered. AI-checked as described in 2.14; no deterministic calculation of the actual juice percentage is performed.
Ingredient common-or-usual-name correctness. The system uses the declared name on file (the supplier's suggested labelling or a person's entry), and the AI checker is instructed to accept it; no check confirms that a name is the regulation's common or usual name for that food.
Consistency between statement-ordering paths. The ingredient-statement facts used by the publish gate and the AI checker order ingredients by weight in grams (4.3). The two rendering paths — the on-screen label statement and the published ingredient-sheet statement — currently order by raw quantity without unit conversion. A formula mixing units (for example, milligram rows beside gram rows) can therefore render a statement whose order the gram-based facts contradict. The AI check would report that contradiction as critical when weights are comparable; no deterministic check reconciles the two paths.
Anything not listed in this document. The safe assumption is that it is not checked.
Findings are classified into three levels:
Enforcement at publish. The publish gate refuses to publish until a compliance check has been run against the current formula, and refuses a verdict containing critical findings unless the user explicitly acknowledges them. Every such override is recorded on the label record — who, when, the verdict status, and the number of critical findings — and logged, so publishing a knowingly non-compliant label is an accountable, auditable decision rather than a silent pass. Warnings for machine-read data are likewise acknowledgeable, and the acknowledgement is recorded.
Known limits of this enforcement, stated rather than implied:
The checks reference these authorities. This list is for orientation; the governing text is the Code of Federal Regulations itself.
This document describes the automated checks EdibleIQ performs and, just as importantly, the checks it does not perform. It is not legal advice, and no output of EdibleIQ — including a result of "compliant" — certifies the regulatory compliance of any label.
By continuing, you acknowledge that you have read and understood this document; that EdibleIQ's checks are decision support and not a determination of regulatory compliance; that AI-generated findings are probabilistic and must be confirmed by a qualified reviewer; that the elements listed under "What is NOT checked" are not verified by EdibleIQ; and that you and your organization remain solely responsible for the compliance of every label you produce or publish.