Inspiration
Forty million Americans live in mobility poverty, where transportation barriers cascade into food insecurity, missed healthcare, lost jobs, and isolation. The Toyota Mobility Foundation challenged us: What if a ride could do more than take you somewhere? We met Maya, a composite persona built from real pantry neighbors, volunteers, and stakeholders. Her day: 4:15 PM shift ends, 2+ hours on buses, choosing between bus fare or groceries, carrying two bags max, zero time for job coaching, exhausted, isolated. The pantry can only serve people who can physically reach it — an AV changes what "there" means by meeting people at work, school, and home, turning mobility into the bridge to every other service.
What it does
GoodMiles is the allocation engine powering "Mobility as a Social Service." Neighbors get a monthly points budget where essential stops (pantry, clinic, coaching) cost fewer points, and attending services earns bonus points — creating a positive feedback loop. Multi-stop trips (school → pantry → pharmacy) happen in one 45-minute ride instead of fragmented hours, and in-vehicle services like job coaching run during transit. Operators get a self-routing AV fleet with no dispatcher needed, a real-time dashboard showing balances and routes, and configurable stops tagged by type. Funders see measurable impact: 2+ hours becomes 45 minutes, two bags becomes a full week of groceries, fare trade-offs disappear, coaching completes in transit, and the AV network links pantry, clinic, job center, school, transit hub, and elderly housing as social infrastructure, not just transport.
How we built it
The core engine is ~300 lines of Jaclang, a graph-native language where nodes represent Neighbors, ServiceStops, AVs, and Trips, edges model routes and enrollments, and walkers encode allocation logic. The optimize_route walker sorts enrolled stops by bonus-to-cost ratio and greedily packs within the points budget; execute_trip atomically deducts cost, adds bonus, updates balances, and logs the trip. jac start exposes REST endpoints and a three-tab JSX dashboard (Neighbors, Stops, Route Planner) at localhost:8000. A separate Vercel-deployed narrative prototype walks through Maya's journey in six interactive sections with a drag-compare before/after and embedded feedback survey. Seed data creates four neighbors with distinct scenarios (working parent, job seeker, senior, newcomer), five service stops across three zones, and two AVs.
Challenges
The Jaclang paradigm shift from relational to graph thinking took days of unlearning tables and learning traversals. Tuning the points economy (base cost vs. bonus) required sensitivity analysis to motivate without exploitation. The greedy walker works for demo but production needs a constraint solver for time windows, capacity, dwell time, and multi-AV coordination. The narrative prototype and engine use different data models, requiring manual mapping for the demo. Windows + Docker + Jaclang environment friction led us to run jac start locally with Vercel for the story layer.
Accomplishments
A working allocation engine with graph model, optimizer, executor, REST API, and reactive dashboard in one language. A narrative prototype that makes the abstract tangible through Maya's day, complete with drag-compare, AV interface mockup, and community feedback loop. An incentive mechanism where earned mobility reinforces service engagement — coaching earns points, points enable more mobility, enabling more coaching. Three articulated AV framework concepts (Reach, Social Infrastructure, Operational Node) giving policymakers vocabulary. Community-co-design throughout, with the embedded survey feeding directly into design principles.
What we learned
Mobility is a multiplier: fixing transport unlocks food security, healthcare, employment, and community simultaneously. Graph-native languages fit networked social systems because neighbors, stops, vehicles, and trips are a graph — forcing them into SQL fights the domain. Incentive design is UX design: points budgets plus bonus earnings create agency, not charity. Prototype validates desirability; engine validates feasibility — both needed to fund a pilot. Continuous community feedback isn't optional; the survey is the sensor for whether the service evolves with the people it serves.
What's next
0–3 months: pilot with one pantry and one AV partner, 20 neighbors, measuring trips, points, coaching attendance, grocery weight. 3–6 months: replace greedy walker with OR-Tools constraint solver, add time windows, capacity, dwell time, multi-AV coordination, and admin UI for stop configuration. 6–12 months: multi-neighborhood deployment, GTFS/paratransit integration, Medicaid NEMT billing, funder outcomes dashboard. 12+ months: open-source the allocation kernel, "GoodMiles in a Box" Docker config for any CBO, policy brief on mobility as a reimbursable social determinant of health.
Built With
- claude
- codex
- cursor
- hermes
- jac
- vscode
Log in or sign up for Devpost to join the conversation.