01

Case study

One style guide across every operator's stops and routes

A regional arrivals page shows every stop the way its operator wrote it, and route codes where names should be. Veodyn applies the region's style guide to every carrier and shows which rule renamed each field.

02

The setup

A region runs one public surface over dozens of transit operators: a 511 site, a regional trip planner, a network of signs. Riders do not know or care which agency runs the bus in front of them. They want the stop on the sign to match the stop in the app, and the route on the app to carry a name they recognize.

The region has a style guide. It says how a stop is written, how a route is branded, how a headsign reads. Nobody can make forty operators follow it. Each operator publishes on its own terms, and if a vendor feed sits between the operators and the page, it may drop the names entirely and pass along its own identifiers.

03

The data problem

Operator feeds can all pass validation and still disagree. The schedule standard leaves the conventions open, and every operator settles them differently: the character between two cross streets (ampersand, slash, at), whether names are capitalized or shouted, whether "Avenue" is spelled out or cut to "Ave", whether the direction of travel is baked into the stop name, how a headsign is cased.

The mix is normal. In a September 2026 survey of operator feeds in United States urbanized areas with two or more operators, the operators disagreed on at least one of those conventions in 44 of 52 regions, and on three or more in 17. That includes regions whose authority already publishes naming guidelines. A mandate improves the inputs without making them match.

Where an aggregator sits in the middle, the surface can be worse than the feeds. A pattern code like "MT0021E" reaches the rider because the vendor's table never carried the public name, and the region cannot fix a field it does not own.

04

The Veodyn architecture

The node ingests whatever the region already receives: operator GTFS feeds, and the aggregator API if there is one. A rule engine turns each carrier's raw routes and stops into public names under the region's style guide. A default profile serves every carrier; a carrier with quirks gets its own profile and a short override table. The results publish as four resources, per carrier, through the same API and scheduled queries every other dataset on the node uses.

  • Public routes: brand, public name, short name, mode and color, keyed to the carrier's own route identity
  • Public stops: the stop name rebuilt from its parts under one separator and one vocabulary, direction kept as its own field, stations and named places passed through
  • Public route stops: membership per pattern, in sequence where the operator's feed supplies it
  • Public departures: live arrivals carrying the public route and stop names instead of codes

Every row carries the revision of the rules that produced it and the digest of the carrier feed it was joined against. Every renamed field carries a sibling that says where the name came from.

Operator feedsGTFSAggregator APIif anyRegion style guideCarrier overridesVeodyn noderules + provenancePublic names511 · planner · signs
05

What the region gets

The capabilityWhat powers it
Rider-facing names on every surfaceMT0021E becomes Metro Local Line 21Public routes, stops and departures published per carrier through one API.
One vocabulary across operatorsseparator, casing, abbreviations, directionThe region's style guide encoded as rules, applied to every carrier.
Every renamed field shows its sourceProvenance on each field: the carrier feed, a rule, an override, or passed through untouched.
The region sees what is still unmatchedA coverage report per carrier, run before every rule change.
Stops in route orderwhere the operator publishes a feedStop sequence joined from the carrier's own GTFS.
A departures board without a vendor projectA cached public visualization on the node, fixed to the stops the region picks.
06

We don't write the style guide

Veodyn applies the conventions and leaves the decisions to the region.

Whether the separator is a slash or an ampersand, whether a rail line carries its legacy color in parentheses, whether partner carriers get their own brand or a neutral form: those are the region's editorial calls, and they stay in a profile the region's own staff edit and version. When a rule changes, the coverage report says what moved and what is still unmatched, and the provenance on every row says which rule did it. Renaming a stop takes an edit to a profile, with no vendor ticket.

07

Why it holds across forty carriers

The engine does not need a project per operator. The default profile produces correct public names for any carrier from its feed alone; a carrier feed is an upgrade a profile opts into, and it buys the operator's own brand, colors and stop order. A carrier with no feed still gets names, with the gaps listed rather than hidden. Add an operator and it lands under the same rules as the rest. That is what lets a style guide cover the whole region instead of the three largest agencies.

08

See it on your network

Tell us which operators sit behind your arrivals page and where the names go wrong, and we will map the fit. Book a call.

09

More solutions