Valor Traffic Circles
Tools and approach
- MODEL: none — the app has no AI in it. Every lane, arrow and building was measured out of the drawing itself
- TOOLS: Hermes AI Agent, with a 1.6B vision model running locally in LM Studio used only to spot-check the finished render
- BUILT WITH: Three.js voxel geometry, driven by a single data file — every coordinate on the campus lives in one
plan.jsand the engine reads it - NOTE: a teaching model, not a surveyed map. It must not be used to navigate real roads
Pick any part of the campus and the camera flies there: the three traffic routes, the student and carpool parking, or the bus lane. Tap a building, a route or a parking area to highlight it. The IE View tab is the interesting one for anyone who likes numbers — it models the car park as a queue and lets you block lanes to watch a working dismissal turn into gridlock.
Everything is available in 12 languages, including right-to-left Arabic, Kurdish and Persian, and the app is deliberately built around a family standing in a queue: large tap targets, four animation levels, and signs a parent can read from the car window.


Review
THE GOOD: Putting every coordinate in one data file meant that when the plan was corrected — the Nolensville Pike lane count, the bus lane, where the trees sit — the fix was a line of data and no drawing code changed at all. And the IE View maths is unit-tested against hand-computed queueing results, so a plausible-looking number can never quietly be a wrong one.
THE BAD: The first version looked finished and passed every test while being substantially made up. It drew three neat roundabouts on a campus that has none, and gave roads names that appear nowhere on the plan. Counts, screenshots and a green test suite all said it worked. It took someone reading the source drawing carefully to catch it, and rebuilding cost more than getting it right would have.
TO IMPROVE: Ask the person who owns the drawing for coordinates earlier, and overlay a labelled grid on the image so they can simply point at cells. A 1.6B vision model is fast and free, but it will confidently describe a screenshot and still miss a broken panel — so the assertions now read the live DOM, where “1. undefined” is unmissable.
What we learned
The lesson was about verification. Every test we wrote passed while the whole road network rendered pure black, because a count cannot tell you whether anything is visible. The fix was to assert on pixels and geometry instead: a 1.78 m person must subtend at least 1.2 px at the opening camera, no part of the frame may be pure black, and every car must be within a few centimetres of the surface it is driving on. Those three assertions caught bugs that twenty count-based checks had missed.
The second lesson was about scope. When a vision service was rate-limited, the tempting move was to fill the gaps with plausible geometry — and that is exactly how a demo becomes confidently wrong. The honest move, and the cheaper one in the end, was to stop and ask for coordinates.