Optitrek
An algorithmic U.S. road-trip optimizer using a 400-plus-place National Park Service candidate pool, constrained TSP methods, and self-hosted OSRM routing. The data layer is complete; solver work is ongoing.
My role
I designed the optimization problem, built the PostGIS + OSRM data layer, implemented the OR-Tools constrained TSP solvers, and published the Sequential Interstate Challenge as the first public test case.
Approach
Optitrek is an algorithmic road-trip optimizer for the United States. It takes the 2015 Randal Olson 'optimal US road trip' — 50 hand-picked stops, genetic algorithm, Google Maps API — and rebuilds it with 2026 tools. Instead of just ordering hand-picked stops, Optitrek solves both the selection AND the ordering across ~400 NPS units (Tier 1, current) growing to ~100,000 POIs (Tier 2+) using Google OR-Tools constrained TSP, a self-hosted OSRM routing engine on the US-only OSM extract, and a Neon PostGIS spatial database. Three-tier build: Tier 1 proves the algorithm with an NPS-only optimal loop covering all 48 contiguous states + D.C. (planned blog post + interactive map); Tier 2 ships a configurable web app on Railway; Tier 3 is a full consumer product with accounts, Amtrak rail routing, a community trip gallery, and presets. Current status: Phase 1 (data ingest) is running live — 466 NPS units in PostGIS with every required state covered. Phases 2–4 (OSRM distance matrix, OR-Tools solver, Folium visualization) are coded and unit-tested (17 passing), pending end-to-end run on the routing host. First published test case: the Sequential Interstate Challenge — drive every two-digit Interstate end to end — where letting the solver pick segment order and direction cut connector driving time 86% versus strict numerical order (73,360 minutes down to 10,277).
Result
Phase 1 data ingest is live with 466 NPS units in PostGIS. Solver phases are unit-tested, and the Interstate Challenge test case cut connector driving time 86% versus strict numerical order (73,360 minutes down to 10,277).
Figures



