Roam
Turn open location data into narrated walking-tour assets.
Roam is an in-progress local pipeline for Barcelona. It ingests points of interest from OpenStreetMap, enriches them with Wikipedia, generates narration scripts and audio, and records what happened at every stage.
Give each quality question to the right reviewer.
Code checks length, formatting and known regressions. A local model reviews factual alignment, guide tone and pronunciation risks. Human listening remains the final check for whether the audio sounds natural.
These two clips came from the same local pipeline. One is a reasonable baseline. The other shows why a successful audio render is not the same as a publishable tour stop.
Better source metadata beat better matching heuristics.
Several rounds of string matching improved Wikipedia coverage, but using the Wikipedia and Wikidata identifiers already present in OpenStreetMap produced the largest gain. The pipeline now records matched, ambiguous, not found, and error states instead of hiding uncertainty in blank fields.
Use the constraint to build a baseline, then earn the upgrade.
I started with local models because I wanted to test how far a small, inexpensive stack could go. Cost was a useful constraint: it forced me to separate the jobs, use deterministic checks where possible, and reserve model judgment for questions that needed it.
I have since opted into sharing API inputs and outputs with OpenAI and now have a small complimentary token budget. I have not used it for Roam yet. The next test is to compare OpenAI voice models with the local Kokoro baseline on naturalness, pronunciation, pacing and cost.
Working on a hard product problem?
I’m exploring GTM Strategy, AI Product, Product Strategy, and Forward Deployed roles.