← All work
Case study, 03 / 04 · Consumer, HealthFounderDesign & Build0 → 1

Read any food label in seconds, and know if it's worth buying.

OpenLabel is an offline-first app that reads a packaged food, by its barcode or straight off the ingredients label, and gives you a clear answer to one question: what is actually in this, and is it worth putting in the cart? It is built for India, works with no signal, keeps everything on your phone, and never leaves you at a black box. I had the idea, designed the brand and product, and built the app itself.

Role
Idea, design and build
Scope
Concept → UX → Brand → App
Built with
React Native, on-device OCR, Claude
Platform
Android beta, iOS next
Industry
Consumer, Health
Status
Public beta, 2026

OpenLabel is a real project I built solo. I designed the identity and the product, and wrote the app with Claude as my engineering partner. The scoring engine is plain, deterministic TypeScript, no machine learning anywhere near the number. It is in Android public beta now, installable as a direct APK, with iOS to follow.

01Why this exists

Most people aren't careless about what they eat. They just have no way to know.

This started as a personal frustration, not a market study. I watch people across India pick a packet off the shelf and drop it in the cart without a second glance, with no idea what is inside, whether the additives are safe, or whether it is something other countries stopped allowing years ago. It is not carelessness. The label is right there in their hand, and it is effectively unreadable: microscopic type, cryptic E-numbers, and a nutrition table almost nobody is trained to read.

OpenLabel exists to close that gap. Not to lecture and not to scare, just to put a clear, honest answer in someone's hand in the two seconds they are deciding whether to buy. Knowledge first. What they do with it stays their call.

A clear answer in the two seconds you are holding the pack. That is the whole job.

02The problem

The label is right there in your hand, and still unreadable.

Every scanner app I tried fell down in the exact moment that mattered, standing in a shop with a packet in hand. They lean on big online databases with thin coverage of Indian products, and they need a connection that basement supermarkets simply do not have. So you scan a local biscuit and get “not available,” or a score with no reason you can check. Meanwhile a colour or preservative that is freely used here may be banned or warning-labelled abroad, and there is no way to know that from the aisle.

  • Labels you physically cannot read: tiny print, E-numbers, and a nutrition panel built for nobody.
  • Apps made for the web, not the aisle, that go blank the moment the signal drops.
  • Poor coverage of Indian products, so local packs come back as “not found.”
  • A regulatory blind spot: no hint that an additive is restricted in five other countries.
03The core idea

One camera. Two ways in.

The product is deliberately one surface: the camera. You either scan the barcode, which is fast when the product is known, or you point it at the ingredients label and let the app read the text itself. The label path is the important one. It works on any product on the shelf, even one no database has ever heard of, and it works with the phone in aeroplane mode. A morphing reticle and a single switch move you between the two without ever leaving the screen.

Barcode

Fast when the pack is known

  • Point, and it resolves the product in a beat
  • Backed by a bundled set of Indian products
  • Falls through to the label when it draws a blank
  • The quick path for your weekly basket
Label · OCR

Works on anything, fully offline

  • Reads the ingredients text on the device itself
  • No database required, so nothing is ever a dead end
  • The photo never leaves your phone
  • The universal path, for any pack on earth
OpenLabel scanner lining up a product barcode inside the frame
The real thing, mid-scan. Line up a barcode, or flip to Label and the frame widens to read the ingredients panel instead.
04The fallback

It never leaves you at “product not available.”

The quiet engineering decision that makes OpenLabel usable is the lookup chain behind a barcode. Instead of one database and a shrug, a scan flows through four stages, each one a wider net than the last. By the time it reaches the label scanner, the question is not whether it can answer, only how.

First

Bundled set

5,458 Indian products, shipped inside the app. No signal needed.

Then

Local cache

Anything you or the app has looked up before, kept on the phone.

If online

Open Food Facts

The live database of roughly 3 million products, when there's a connection.

Always

Read the label

The universal fallback. On-device OCR reads any pack, even one no database has.

A barcode gets three shots before the app ever says “not found,” and the label scanner quietly catches everything else. That is the difference between a tool you trust in the aisle and one you stop opening.

05The score

A health score you can read line by line, never a black box.

A score people are meant to trust cannot be something they have to take on faith. So the scoring is deterministic and rule-based, never AI. It combines two independent things: the nutrition, scored with the EU-validated Nutri-Score model, and the additives of concern, each one deducting points that are capped so a single flag cannot tank an otherwise decent product. Every point up or down names the exact ingredient responsible, and the same pack always returns the same number.

OpenLabel result: High Protein Oats, Good choice, 8 out of 10
Good choice · 8
OpenLabel result: Schezwan Chutney, High concern, 1.4 out of 10
High concern · 1.4
Two real scans. High-protein oats come back an 8; a schezwan chutney lands at 1.4. Same rules, honest either way, each with an at-a-glance read on sugar, salt and fat.
How the number is built

Open any result and the score comes apart in your hands. It starts from the product's nutrition quality, then subtracts a named amount for each additive of concern, so you can see exactly what pulled it up or down.

OpenLabel scoring breakdown for the oats: Nutri-Score B, no ingredients of concern
No concerns
OpenLabel scoring breakdown for the chutney: named deductions down to 1.4
Every deduction named
Nothing hidden. The clean product finds no ingredients of concern; the chutney lists each deduction, from the flavour enhancer to the preservatives, every one traced to an ingredient.

A score people are meant to trust can't be a black box. Every point has a name.

06The hard part

A chutney isn't eaten by the 100 grams. The score had to know that.

The most interesting problem was one that first looked like a bug. Some clearly sensible foods were scoring badly, and the reason was that nutrition was being judged per 100 grams, flat. A pickle or chutney is brutal per 100 grams, but you eat about 15 of them. Scoring it as if you ate a full 100 was punishing food nobody eats that way.

The fix was to score nutrients per a realistic serving, using standardised reference amounts by food group, and to do it only for concentrated, small-serving savoury foods. Sweets, drinks and snacks are deliberately left untouched, so the adjustment can never quietly make junk look better. I validated it against a basket of real products before it shipped. The right answer was not a new screen. It was a more honest rule underneath.

07The regulatory lens

Some of what's in your cart is banned abroad. OpenLabel names which, and where.

This is the part no other app gives you in the aisle. OpenLabel carries a curated registry of additives with their status in other regions, the US, EU, UK, Canada and Australia, recorded as banned, restricted, or warning-labelled, and always naming the specific country. A whitener that is banned in the EU or a colour that needs a warning label there is not something a shopper in India can otherwise know while holding the box.

Titanium dioxide (E171)

A whitener, common in sweets and chewing gum.

EU · Banned since 2022

Azo dyes (E102, E110, E124)

Bright synthetic colours in drinks and snacks.

EU · Warning label

Potassium iodate

A flour treatment agent used in some breads.

EU · Not permittedCanada · Australia

BHA (E320)

An antioxidant preservative in oily foods.

US · Possible carcinogenEU · Restricted

Each status is checked against the actual regulator: the US FDA, the EU's EFSA and EUR-Lex, the UK FSA, Health Canada, and FSANZ. It flags that an additive is present and how it is treated elsewhere. It does not measure dosage, and it is shown as consumer guidance, not medical advice.

Down to the ingredient

Tap any additive and you get the whole picture: what it does, what the science says, and its status region by region. Even a permitted one like sodium benzoate is laid out plainly, so nothing is taken on trust.

OpenLabel ingredient detail for sodium benzoate, showing per-region regulatory status
08Privacy

In a data-hungry category, it collects nothing.

Health apps are usually where your data goes to be sold. OpenLabel is built the other way. The label photo is read on the device and never uploaded. The only thing that ever leaves the phone is a barcode number, sent to look up a product. History lives in a local database, and there is no account, no login, no analytics, no ads and no trackers. Its Google Play data-safety declaration is, literally, “No data collected.”

01

On-device OCR

The camera reads the label on your phone. The photo is never sent anywhere.

02

One number out

A barcode is all that ever leaves the device, and only to name the product.

03

Nothing kept

History stays local, and there are no accounts, trackers, or ads to feed.

09Where it fits

Next to the apps already on your phone.

OpenLabel is not trying to replace your diet tracker or the internet. It fills the one gap they all leave open: a trustworthy read on a real product, in the aisle, offline.

Online scanner appsNailsSlick scores when the product happens to be in their database.GapThin on Indian products, and useless the moment the signal drops.
Diet & calorie appsNailsTrack what you eat once you already know what it is.GapWon't read a strange label or tell you an additive is banned abroad.
The label itselfNailsLegally has to list everything that's in the pack.GapTiny type and E-numbers almost nobody can decode while shopping.
OpenLabelReads any pack by barcode or label, fully offline, and hands back a score you can read line by line, plus what's restricted elsewhere.
10How it was built

One person's idea, shipped end to end.

OpenLabel is the project where I own every layer: the idea, the brand, the interface, the scoring logic, and the app itself. I designed it and built it with Claude as my engineering partner, which is exactly the kind of end-to-end product work I want to be doing more of. The judgement calls that mattered most, keeping the score rule-based, scoring by a real serving, sending nothing off the phone, were product decisions long before they were code.

It is honest about where it is. Barcode and label are the strong paths; the OCR is still being tuned against messier real-world packaging, and not every Indian product is in the offline set yet, which is exactly what the live lookup and the label scanner are there to cover.

Download the Android beta
5,458

Products bundled offline

A curated set of Indian products that resolves with no signal at all.

~3M

Live fallback

Open Food Facts is there when you are online and the bundled set comes up short.

287

Ingredients decoded

A curated knowledge base of additives and base foods, with risk, aliases and INS numbers.

0

Data collected

No account, no analytics, no trackers. The Play data-safety answer is a flat zero.

Knowledge first. The choice stays yours.

Next case study
NutriFlow
A nutrition app two people share.
NutriFlow