← work Case study · transit · 2026

vtv: a transit platform pitched cold to a city.

A unified operations platform for Riga's municipal buses: a bilingual CMS for routes, stops and schedules, with an AI agent that advises while humans decide. Designed and built solo, presented at Riga City Hall in May 2026; the city's office is forwarding the documentation to Rīgas Satiksme (Riga's municipal transport operator).

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

The context

Riga's buses run on institutional memory and legacy tools. Transit suites from the big vendors are heavy, priced for capitals with bigger budgets, and designed for the procurement committee rather than the dispatcher. Nobody asked me to fix this. That is rather the point: the problem was unowned, the users were strangers, and the market was unproven. This project is what comfort with ambiguity looks like in practice.

The bet

A GTFS-native operations platform a municipal budget could actually buy, with AI positioned the only way a public operator can accept: the agent reads, summarises and advises; a named human decides and acts. The trust is built into the architecture rather than promised.

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
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. Bilingual, role-aware, and live. tap to enlarge

The design decisions

Bilingual from the first screen.

Latvian and English are not a settings toggle bolted on later; every label, error and document exists in both, 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. A viewer cannot see buttons that would be refused; an editor cannot quietly become an admin. The permission model is the information architecture.

The agent lives in a sidebar, not in charge.

It answers transit queries with read-only tools and drafts into the knowledge base, beside the work rather than between the person and the data. Advice is visible, decisions are human, and 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.

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
An incident as a workflow, not a phone chain: the OBD-II fault arrives structured, Aīda proposes three qualified replacement drivers with ETAs, and the dispatcher decides. Every step is attributable, and the conversation is kept in an audit journal for 90 days. tap to enlarge
Generative analytics in VTV: a natural-language question produces a punctuality dashboard for route 13 with worst stops and the assistant's recommendation
Generative analytics: ask in plain language, get an operational answer. Route 13's punctuality against target, the stops causing the miss, and a recommendation a human can accept or reject. Save the panel or export the PDF. tap to enlarge

The door

The route to the room was a cold Facebook message about the idea. That led to a meeting at Riga City Hall in late May 2026, where I presented the working platform to Edvards Šlesers and colleagues; his office is forwarding the documentation to Rīgas Satiksme. The lesson I keep from it: a working product is the best deck, and nobody warm-introduces you into a category you invented for yourself.

What I learned

Designing for users you have never met, in a domain with hard external constraints like GTFS, forces the research to be real: ride the routes, read the specs, talk your way into the rooms. And institutions do not buy cleverness; they buy the feeling that the system will not embarrass them. Most of the design above is about manufacturing that feeling honestly.