Onlyone, eco-responsible banking, Paris
From receipt to product-level carbon
Onlyone Receipt OCR
Alongside the Eco Coach, I designed and built Onlyone's receipt scanning system, users photograph a retail ticket, and the pipeline extracts products, normalizes them against reference databases, and estimates carbon impact at the item level.
The context
Transaction-level carbon estimates are useful, but imprecise. A supermarket payment could be groceries, cleaning products, or both. Receipt OCR closes that gap by reading the actual ticket: every line item becomes a product with a name, a price, and an estimable environmental footprint.
The challenge
Retail receipts are noisy: truncated product names, inconsistent formatting, thermal paper artifacts, and store-specific abbreviations. Turning a raw OCR output into a reliable carbon estimate required a full data pipeline (cleaning, normalization, matching, and scoring), not just a vision API call.
- OCR output with abbreviated, ambiguous product labels
- No direct mapping between receipt lines and carbon reference databases
- Multiple reference sources (ADEME, Open Food Facts) with different schemas
- Need for confidence scoring so the app knows when to trust an estimate
What I built
A GCP-powered pipeline from receipt photo to product-level carbon estimate, with normalization, multi-source matching, and ethical alternatives.
Reference databases
Open carbon and product data matched to every normalized receipt line.

ADEME
General carbon emission factors for goods, services, and transport, the baseline for non-food items.

Open Food Facts
Open food product database with composition and environmental labels, used for grocery receipt lines.
Cleaning & product normalization
Transforms raw OCR text into structured product records, parsing line items, inferring products from short names, and normalizing labels via fuzzy matching and embedding-based similarity to bridge the gap between receipt abbreviations and catalog entries.
Multi-source carbon matching
Matches normalized products against reference databases (ADEME for general carbon factors, Open Food Facts for food items), using similarity algorithms to find the closest credible emission factor for each line.
Value chain breakdown
Statistics and visualizations by supply chain stage (distribution, production, packaging, transport), so users see where the carbon in their basket actually comes from.
Confidence scoring
A confidence score on every estimate reflecting match quality, data completeness, and source reliability, the app surfaces high-confidence results prominently and flags uncertain ones for user review.
Lower-carbon alternatives
Product-level recommendations suggesting less carbon-intensive or local alternatives for items on the receipt, actionable swaps grounded in the matched reference data.
Product-level precision
Receipt OCR complements transaction-level estimates with granular, item-by-item insight, the most accurate carbon picture Onlyone can offer without manual user input.
Item-level carbon
Every product on the ticket gets its own footprint, not an average inferred from the merchant category.
Confidence-driven UX
Users see when an estimate is solid and when the system needs help, building trust through transparency, not false precision.
Actionable swaps
Recommendations tied to actual purchased products, local, lower-carbon alternatives users can try on their next shop.
Seamless mobile integration
End-to-end flow from camera to carbon breakdown in seconds, ML APIs on GCP designed for the mobile app's latency and reliability requirements.
Tech stack
GCP Cloud Vision OCR, Python data pipeline, FastAPI and Flask APIs, BigQuery, Tableau analytics, GitLab CI/CD
Receipt OCR gave Onlyone the missing layer of precision, turning a crumpled ticket into structured, scored, actionable carbon data, one product at a time.