at the pump.
It does the typing.
Own product · 2026 — ongoing
EcoDrive.
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 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.


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.


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.


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