How Tarlo Turns a Barcode Into a Verdict
Tarlo gives you a clear pass or fail on a grocery product in about a second. A verdict you can’t inspect is just an opinion with confidence — so this page documents exactly how that second works: where the data comes from, how each rule is evaluated, why the answer is reproducible, what happens when data is missing, and where the honest limits are. If you only read one page about Tarlo, make it this one.
The pipeline in five steps
- Scan — the camera reads the barcode; Tarlo normalizes it (barcodes come in several formats) so it matches product records reliably.
- Look up — the product is fetched from Tarlo’s pre-loaded Canadian catalog, or live from public sources if it’s not cached yet.
- Evaluate — the product’s ingredients and nutrition are checked against the rules you switched on — and only those.
- Verdict — a bold meets / doesn’t meet your rules, with every trigger named in plain language.
- Act — on a fail: alternatives from the same shelf that pass your rules, with shopper-reported prices.
Step 1–2: reading the barcode and finding the product
Speed here is a data-strategy choice: Tarlo pre-loads the Canadian slice of the product database rather than calling an external API for every scan. Most scans hit the local catalog and return instantly; genuinely new or obscure barcodes fall back to a live lookup and are then cached with a freshness window, so the catalog keeps improving and stale records get re-fetched. This Canada-first strategy is also the answer to the coverage gaps global apps show on Canadian store brands.
Step 3: how ingredient rules are checked
Ingredient rules — synthetic dyes, glucose-fructose, seed oils, artificial sweeteners, nitrites/nitrates, BHA/BHT/TBHQ — are evaluated with two independent signals:
- Pre-parsed additive codes (the primary signal for additive rules). Public databases parse each product’s declared additives into standardized codes — Allura Red is
E129whether the label said “Allura Red” or “Rouge allura.” Language-independent and resistant to spelling quirks. - Whole-word text matching against the ingredient list, in English and French, using curated synonym lists per rule. Whole-word matters: naive substring matching would flag “nitrite” inside unrelated words or “E129” inside “E1290.” Tarlo matches complete tokens only.
Ingredients-only rules (glucose-fructose, seed oils — which are ingredients, not additives, so they never get additive codes) rely on the text signal with the full synonym family, including the generic “vegetable oil” phrasings.
Step 3b: how nutrient rules are checked
The high-in rules (sodium, sugars) implement Health Canada’s front-of-package logic — with one important engineering decision. The thresholds are defined per reference amount (Health Canada’s standardized quantity per food category), so Tarlo:
- Takes the per-100 g nutrient values — the most reliable numbers in public food data;
- Resolves the product’s reference amount from its category (with documented fallbacks when categorization is thin);
- Computes the nutrient amount per reference amount, converts to % Daily Value (sodium 2,300 mg, sugars 100 g), and compares against the 15% / 10% / 30% thresholds for regular foods, small-reference-amount foods, and main dishes respectively.
What Tarlo deliberately does not use: the crowd-entered “serving size” fields in public databases, which are frequently wrong or inconsistent. Building on per-100 g values plus Health Canada’s reference amounts keeps verdicts consistent across brands — the same standard the symbol on the package uses.
Step 4: the verdict, and why it’s deterministic
The evaluation is a pure, deterministic rules engine — there is no AI in the decision path. Same product, same rules, same verdict, every time, for everyone.
That’s a deliberate architectural stance: verdicts must be reproducible and explainable. Every fail names its exact trigger — “Allura Red (E129),” “sodium 22% DV per reference amount” — so you can check Tarlo’s work against the physical label in your hand. A verdict that can’t explain itself doesn’t deserve your trust; and an AI model that might answer differently on Tuesday than Monday has no place between your rules and your cart.
The overall verdict follows strict precedence: any failed rule → doesn’t meet your rules; otherwise any undecidable rule → not enough data; otherwise → meets your rules. Missing data can never masquerade as a clean pass.
Step 5: swaps and prices
A verdict alone leaves you standing in the aisle. On a fail, Tarlo suggests alternatives from the same product category that pass the rules you have on — computed with the same engine, so a swap can never contradict your rules. Where shoppers have confirmed availability and prices at a store, that context is shown.
Prices deserve their own honesty note: they are shopper-reported observations, each tied to a store and a date, shown with freshness context and labelled as estimates. Never scraped, never guaranteed, never presented as the retailer’s official price. When enough recent reports exist you’ll see a tight number; when they don’t, a range or nothing — the same no-guessing principle as everywhere else.
When Tarlo says “not enough data”
Public food databases are incomplete — some products lack ingredient lists or nutrition values entirely. When the data needed to evaluate your rules isn’t there, Tarlo says “not enough data” rather than guessing, because a confident wrong answer is worse than an honest gap. You can fix it on the spot: the add-a-product flow takes two photos (front + label), improving the catalog for the next shopper. New contributions are treated as provisional until confirmed — quality control applies to crowdsourced data too.
Where the data comes from
Product information comes from public sources, principally Open Food Facts (the world’s largest open food database, under the Open Database License), enriched by Tarlo’s Canadian catalog work and shopper contributions — added products, corrections, price reports. Attribution and licence details are in the app’s About screen. Nothing is scraped from retailers.
What Tarlo deliberately does not do
- No universal score. Scores encode someone else’s priorities; Tarlo checks yours.
- No health claims. “Meets your rules” is a statement about your preferences and a label — never “healthy,” “safe,” or “toxic.”
- No AI verdicts. Deterministic engine only; every result reproducible and explainable.
- No guessing on missing data, prices, or store availability.
- No selling your data. Scanning requires no account at all.
Frequently asked questions
Which rules can I turn on today?
Synthetic dyes, high-fructose corn syrup (glucose-fructose), seed oils, artificial sweeteners, nitrites & nitrates, BHA/BHT/TBHQ, high in sodium, and high in sugars. New users start with dyes + HFCS on; everything is toggleable in seconds.
Why did the same product change verdicts over time?
Two legitimate reasons: you changed your rules, or the product changed — reformulation is common (often to duck under front-of-package thresholds), and Tarlo’s freshness window picks up updated data. The trigger list always shows exactly why.
Can a swap contradict my rules?
No — swaps are filtered through the same rules engine as the original scan, with your exact rule set. A suggested alternative that failed your rules would be a bug, not a judgment call.
How accurate are the prices?
They’re recent shopper observations, dated and store-tagged, shown with freshness context — accurate as of when someone stood in front of the shelf. Treat them as strong estimates; the till is always the source of truth.
Sources
- Open Food Facts — the open product database (ODbL): openfoodfacts.org
- Health Canada — front-of-package nutrition labelling, Daily Values and reference amounts: canada.ca
Tarlo reflects the rules you turn on and is for general information only — it is not medical or dietary advice. Regulatory details are Canadian and current as of the date above; always verify the product's physical label.