Inspiration
Canada has a $357 billion municipal infrastructure deficit. Federal and provincial grants exist to fix it, but they require a formal asset condition assessment before a town can even apply. That assessment costs \$30–50k. Small towns skip it, never apply, and the money sits unspent while their roads fall apart.
The FCM puts it simply:
$$ C_{\text{deferred}} = 7 \times C_{\text{preventive}} $$
Every dollar you skip today costs seven within five years. And every small town has a road foreman who knows exactly where the bad roads are — but that knowledge lives in his head and disappears when he retires.
RoadScan closes both gaps. Drive the roads, capture damage, and the output is the grant application. Not a cheaper survey, a grant eligibility engine.
Challenges I Faced
- Local YOLO was unusable. YOLOv8 on a CPU-only ThinkPad gave inconsistent detections. I pivoted to Roboflow's hosted inference API — same architecture, better-tuned weights, no GPU required. The
.ptfiles still in the repo are artifacts of that failed approach. - GPS clustering sensitivity. Initial seed data placed records too close together — the 50m clustering merged everything into one segment.
What I Learned
- Cloud inference changes what's possible without a GPU. a hosted API gave me better results with less code than local YOLOv8 ever did.
- The reframe matters as much as the code. I almost pitched "cheaper road surveys." The real product is grant eligibility — the scan output maps directly to what municipalities need to apply for STIP, MSTIP, ICIP, and FCM programs.
Log in or sign up for Devpost to join the conversation.