Live · React 19 · Vite 6 · TypeScript · Tailwind 4 · Cloudflare Turnstile

Salik Optimizer

A Dubai toll calculator that refuses to estimate.

Open Salik Optimizer

Why I built it

Dubai charges a toll per gate, the rate changes by time of day, and two gates on the same road can count as one crossing. So the honest answer to "what will this drive cost me" is not on any single page. Every route planner I could find gave me distance and time and left the money out.

The decision that mattered

No language model anywhere near the fee arithmetic. A toll is a number someone will be charged, and a model that is usually right is the wrong tool for it. The gate list, the rate bands and the pairing rules are data; the calculation is deterministic and reproducible. If it is ever wrong, it is wrong in a way I can find and fix, which is not true of a guess.

Salik Optimizer compares the routes between two points in Dubai and shows what each one actually costs at the gates, including the 5% VAT and the paired-gate rules that make two crossings count as one. The cheapest route is often not the fastest, and the difference is usually the point.

What made it harder than it looks

  • Rates vary by time of day, so the same road has three prices depending on when you drive it.
  • Some gate pairs are billed once rather than twice, and the rule depends on which pair and which direction.
  • A route that avoids every gate exists for many journeys, and finding it is the whole value of the tool.
  • The data perishes. Gate lists and rate bands are re-verified against source before any launch, and each data file carries the date it was last checked.

Why this sits on a content marketer’s portfolio

Because the judgment in it is the same judgment the day job needs. Knowing where a model belongs and where it does not, keeping perishable data dated, and refusing to render an estimate as though it were a fact are all content-platform problems before they are engineering ones.