Point the camera
at the pump.
It does the typing.
SnapClaude reads itLogged
Scroll ↓

Own product · 2026 — ongoing

EcoDrive.

Client
Own product
Role
Design + full-stack
Stack
React Native · Expo · SQLite · Supabase Edge Functions · Claude
Timeline
2026 — ongoing

A fuel log built for the way Brazilians actually fill up: petrol, ethanol, CNG sold by the cubic metre, and often two of them in the same stop. You photograph the odometer and the pump display; Claude reads the numbers off both, and the app answers with real consumption and cost per kilometre. Designed and built solo — interface, database and backend.

Nobody logs fuel

Fuel-tracking apps die at the pump. Litres, price per litre, total — three numbers typed on a forecourt with a queue behind you and an attendant waiting for the card. The numbers are already lit up on the display; the friction was never the arithmetic, it was the form.

The camera is the form

Photograph the odometer, then the pump. Claude reads kilometres off the first and quantity, unit price and total off the second, and a fill-up becomes a structured record in two gestures. Every field stays editable afterwards, because a display shot into low sun sometimes deserves a correction — the reading pre-fills the form, it does not own it.

A fill-up end to end — photograph, reading, consumption

A reading you can argue with

The model returns its confidence and its reasoning next to the numbers, and the interface shows both: 15.02 m³ at R$4.749 comes to R$71.32 against a displayed R$71.33, under a hundredth of a real out, so the reading can be trusted. When a photograph is genuinely unreadable the app says so and hands the form back rather than inventing a value. On one fill-up I picked petrol by hand and the reading corrected me — the photograph was a CNG pump.

The odometer, read at 95% confidence
The odometer, read at 95% confidence
The pump — the numbers, the reasoning behind them, and fields that stay editable
The pump — the numbers, the reasoning behind them, and fields that stay editable

Two fuels, one tank

A Brazilian flex car with a CNG kit takes two fuels at the same stop, and no honest average spans them: litres and cubic metres do not add up. So a fill-up carries up to two fuels, each in its own unit — litres, cubic metres, kilowatt-hours — and when there are two, the headline figure becomes cost per kilometre, the one number that survives the change of unit. The energy conversion behind it stays internal; megajoules never reach the screen.

Petrol and CNG at the same stop — 9.9 km/L equivalent combined
Petrol and CNG at the same stop — 9.9 km/L equivalent combined
The comparison that only cost per kilometre can make
The comparison that only cost per kilometre can make

The first fill-up has no average

Consumption needs two fill-ups, which means the honest version of this app is useless on the day it is installed. So the first run asks a single question — do you remember the odometer at your last fill-up? — and returns a real average on the spot. If the answer is no, a slider takes weekly kilometres and estimates the monthly spend instead. Either way something true is on the screen inside twenty seconds.

The photograph never lands anywhere

The image goes to a Supabase Edge Function in São Paulo, passes through memory to the model and is never stored. The API key lives in the function, never in the app bundle. Consent is explicit before the first photograph, location is opt-in, and Settings carries a factory reset behind a two-second press. A reading costs about US$0.004.

One stack, same hands

React Native with Expo. The whole history lives on the device in SQLite through Drizzle, so the app still works at a rural station with no signal; Supabase is only in the path when a photograph is being read. Registering a car pulls make, model, year and market valuation from the Brazilian FIPE table. Designed, built and shipped solo: the same hands did the UX, the interface, the schema and the backend.

Every fill-up, held on the device
Every fill-up, held on the device
The car, its FIPE valuation and a photograph
The car, its FIPE valuation and a photograph

A working Android build: two photographs in, consumption and cost per kilometre out, without a number being typed.