Personal project · Built with Claude Code · 2026
ERP timing, at a glance
A live map of every ERP gantry in Singapore and what it charges at any minute of the day. I built it with Claude Code because I wanted to see my whole drive at once, instead of looking up one gantry at a time. Try it below.
Live · try it
Drag the time slider to watch charges change across the island. Tap any gantry for its daily schedule, or search for a destination to price a whole route.
Open full screen ↗
Type
Personal project
Status
Live and free to use
My role
Idea, product direction, UX and prompting
Tools
Claude Code, Leaflet, OneMap, Google Maps Platform
Data
LTA ERP rates from 7 September 2026
Coverage
93 charging points, every gantry in Singapore
The idea
The frustration
ERP rates change every few minutes, and a normal drive across Singapore passes several gantries. The only way to check was to open each gantry on OneMotoring one at a time, note its rate for the time you would pass it, and add everything up yourself.
The insight
Drivers don’t know gantries by name. They know them by place. I couldn’t tell you what a gantry is called, but show me a map and I know exactly where it is. The information existed, but it was locked in lists and tables.
The idea
Put every gantry on one map and make time the control. Drag a slider through the day and the whole island’s charges change together, so you can see what your drive costs now, and what it would cost if you left 15 minutes later.
Who it’s for
Anyone who drives in Singapore and wants to know what a trip will cost before they leave, or when to leave to pay less.
Directing the build
I didn’t write the code by hand. I directed it. I worked with Claude Code the way I work with a production team: I wrote the brief, set the standard and judged every build. The skill that mattered was knowing exactly what good looked like, and describing it precisely enough for the AI to build it.
Brief the need, not the features
Every prompt started from the driver: someone who wants to see a whole trip at once. Describing the behaviour and the reason behind it let Claude make sensible calls on the details, and the features grew out of that one need.
Design by reference
I asked for an interface that behaves like Google Maps, because every driver already knows how to use it. One search bar, a clean map and a sheet of results, with nothing new to learn.
Build in small, testable steps
The map came first, then the time slider, then the daily schedules, then route pricing. I checked each step against real journeys before moving on, so problems surfaced early and stayed small.
Prompt for trust, not just features
I asked Claude to show its sources, explain its limits in plain language and fall back to free public maps whenever Google’s services fail, so the app never simply breaks.

Weekday, 8:30am. The morning peak across the island, with every active gantry priced.
Getting it exactly right
The most surprising part wasn’t the interface. It was getting every gantry’s location and price to match LTA’s documents exactly. A map that is almost right is worse than no map, because people plan real journeys with it.
Rates move in five-minute steps
Each gantry has its own schedule, stepping up and down every five minutes. The full weekday table was rebuilt from LTA’s per-gantry rate tables and cross-checked line by line against LTA’s official rate PDF.
One gantry isn’t one point
A single named gantry can span several carriageways. The map uses 93 physical charging points from OpenStreetMap, checked against LTA’s gantry number list and structure map, with missing parallel spans added by hand.
Only charge what you drive through
A gantry on the slip road beside your expressway shouldn’t land on your bill. Routes are matched against each gantry’s exact road and direction, and every charging point bills at most once per trip.
The calendar counts
Weekends and public holidays are free, and ERP stops at 1pm on the eve of major holidays. Public holidays are built in up to the end of 2027.

Closer in, where the CTE and PIE meet. Tap any pill to see that gantry’s full day.
What I took away
01
With AI, the valuable skill is knowing what good looks like and describing it precisely. The prompt is the brief.
02
Checking is the real work. The AI wrote the code quickly, but matching every gantry to the source is what makes it trustworthy.
03
Design for how people think. Drivers think in places, not gantry names, so the map had to be the interface.
Idea, product direction and prompting by Farhan Haniff, built with Claude Code. ERP rates from LTA. Maps from Google Maps Platform, OneMap and OpenStreetMap. Rates change often, so check OneMotoring before a big trip.