← The work

Case study · transit · 2026

vtv: a transit platform pitched cold to a city.

An operations platform for Riga’s municipal buses, with an AI agent that advises while humans decide. Built solo, presented at Riga City Hall in May 2026; the city is forwarding the documentation to its transport operator.

My own live product, built outside this concept. Not work for Fin.

compliant transit data
GTFS
languages, day one
2
access roles shaping the UI
4
to swap the LLM provider
1 var

The context

Riga’s buses run on institutional memory and legacy tools. Big-vendor transit suites are priced for richer capitals and designed for the procurement committee, not the dispatcher. Nobody asked me to fix this.

The bet

A GTFS-native platform a municipal budget could buy, with AI positioned the only way a public operator can accept: the agent advises, a named human decides.

The VTV operations dashboard: fleet KPIs, driver-hour limits under EU 561/2006, a weekly shift calendar, and the Aīda assistant answering a shift-coverage question in a sidebar An active incident in VTV: a vehicle stopped with an OBD-II fault, the assistant returning structured vehicle status and three qualified replacement drivers with ETAs Generative analytics in VTV: a natural-language question produces a punctuality dashboard for route 13 with worst stops and the assistant’s recommendation
The operations panel: 187 vehicles, punctuality, driver-hour limits under EU 561/2006 and tomorrow’s shift coverage on one screen, with Aīda advising from the sidebar. Tap a capture to open it full size.

The design decisions

Bilingual from the first screen.

Every label, error and document exists in Latvian and English from day one, because in a public institution language is politics as much as usability.

Roles shape the interface.

Four access levels, and the UI shows each person only the verbs they own. The permission model is the information architecture.

The agent lives in a sidebar, not in charge.

Read-only tools, drafts into the knowledge base, beside the work rather than between the person and the data. Every write is attributable.

No vendor lock-in, by design.

The platform swaps between LLM providers with one environment variable, because a city cannot hang its operations on one supplier’s pricing.

The door

A cold Facebook message led to a meeting at Riga City Hall in May 2026, where I presented the working platform to Edvards Šlesers and colleagues; his office is forwarding the documentation to Rīgas Satiksme. A working product is the best deck.

What I learned

Designing for strangers in a constrained domain forces real research: ride the routes, read the specs, talk your way into the rooms. Institutions do not buy cleverness; they buy the feeling that the system will not embarrass them.