Octane
A fuel-price intelligence platform for Sri Lanka — a decade of price revisions, trip-cost tools, embeddable widgets, and a no-auth public API, all kept current by automation that runs itself.
octane-smoky.vercel.appLive demo
Octane
Ten years of a country's fuel prices, with a free API on top.
The Problem
Fuel prices in Sri Lanka move with policy and currency, and everyone — commuters, delivery businesses, small fleets — feels every revision. But the history is scattered across news reports and press releases. There's no single place to see the trend, compare, or plan a trip's cost.
Octane turns a stream of one-off announcements into queryable, historical, reusable data — and then gives it away through an open API so anyone else can build on it too.
The measure of a data product isn't the dashboard. It's whether the data stays correct when nobody's watching it.
The System
A FastAPI backend on Fly.io keeps a Postgres record of every price revision; a React front end on Vercel renders history, a trip-cost calculator, global comparisons, and email alerts. The whole thing stays current through fully automated operations: a daily GitHub Actions run scrapes the latest prices, dispatches alerts, and updates the record — no human in the loop.
Fig. 1 — Automated daily pipeline, from source to public API.
The Build
Automation is the product, not a chore around it. Because scraping, alerting, and CI all run in GitHub Actions, the operational cost is effectively zero and the data can't silently go stale — the pipeline either runs and updates, or fails loudly.
The Proof
Up to a decade of revision events with delta indicators, a free REST API and embeddable widget, and a daily automated pipeline — Octane is featured on Suven's profile as a working reference for how he builds data products: reliable data first, kept honest by CI.
Margin Notes
- What broke first: brittle scraping. Source formats change without warning; the pipeline needed to fail loudly and skip a bad day rather than write garbage into a ten-year record.
- What I'd redo: version the API from day one. A public, keyless API is a contract — the moment someone embeds a widget, the response shape is frozen.
- What shipped anyway: the free API. It would have been easier to keep the data private; making it open is what turns a dashboard into infrastructure.
Next — 04