Atlas of Systems Atlas
MMXXVI

Worm Eater

A food, cosmetics, and personal-care ingredient scanner that says "I don't know" when it doesn't know, instead of quietly scoring it as fine.

v7 · Worm Eater · formerly Worm Crawler, formerly "Yuka But Honest" · 5 open databases
—
—
—/ 100
Worm Eater — a look inside, on desktop and phone
on desktop and phone
The premise

The honest part is the unknowns

Every scanner app gives a number. The number is only meaningful if you know how much of the label it actually understood. Tap any ingredient above to see why it landed where it did — including the ones marked unclassified, which is the whole point of the rebuild.

Classified

Matched against the ingredient table with a rating and a stated reason. These are the ones the score can honestly stand on.

Unclassified

Present on the label, absent from the table. Surfaced explicitly rather than silently treated as neutral — which is how a mystery additive becomes a good score.

AI classify

An escape hatch for the unclassified ones: send the raw ingredient string to a model and get a provisional read, clearly marked as provisional.

Coverage number

What fraction of the label was understood. A 78/100 across four of eleven ingredients is a different claim than 78/100 across eleven of eleven.

Open bugs

Two things that are still wrong

Both live in findAlternatives(), and both trace back to the same root cause: trusting that upstream data is complete.

Bug 1 — self-substitution

The recommended-substitute feature sometimes returns the scanned product as its own alternative. No identity check on the candidate set before ranking.

Bug 2 — truncated data

Open Food Facts returns truncated ingredient lists for some products. A short list looks like a clean product, so substitute scoring ranks incomplete entries above complete ones.

Why they're linked

Both are the scorer treating absence as good news. The same instinct the app exists to argue against, reproduced inside the app.

The shape of the fix

Exclude the source barcode from the candidate pool, and gate any substitute below a coverage floor out of the ranking entirely.

The scanner card above demonstrates the self-substitution bug on the last sample — it is showing you the real failure rather than a cleaned-up version of it.

v7

From crawler to eater

Two rebrands now: "Yuka But Honest" became Worm Crawler, and Worm Crawler became Worm Eater — the point both times was to stop naming the product after something it was reacting to.

Scope

No longer just food. Worm Eater now reads cosmetics, personal care, and supplements too — 225 ingredients tracked across all of it, not one label at a time.

Logo

The same custom SVG worm, drawn as a single stroke path — now gold on black instead of moss on soil. Above this page's title, same file, no raster fallback.

Name

A crawler goes through what's underneath. An eater consumes it — barcode, ingredient list, and whatever a label is trying not to say.

Data sources

Five now, not one: Open Food Facts, Open Beauty Facts, Open Pet Food Facts, USDA FoodData, and UPCitemdb — open, community-maintained, and uneven in exactly the ways the app surfaces instead of hiding.

Score tiers renamed to match: PRISTINE (85–100), DECENT (65–84), SUSPECT (45–64), CRAWLING (25–44), INFESTED (0–24) — the low end finally sounds like what it's describing.