Inspiration
Winter in Montreal can be brutal for anyone trying to navigate the city on foot. Icy sidewalks, snow-blocked curb cuts, construction detours, and cracked pavement create barriers that make the "shortest route" often impossible to follow. We saw friends with mobility aids, parents with strollers, and seniors struggling with routes that Google Maps claimed were perfectly walkable. We realized navigation apps optimize for distance, not accessibility, and that needed to change.
MontreWalk was born from a simple question: What if routing could account for real-world street conditions?
What it does
MontreWalk is an AI-powered accessible routing platform that helps people navigate Montreal safely by analyzing real street conditions.
Key Features:
- Smart Route Selection - Generates multiple route options and scores them on accessibility (0-100) using AI analysis of street-level imagery
- Community Reporting - Users can photograph accessibility barriers (missing curb cuts, icy patches, construction) and submit them instantly
- AI Analysis - Gemini 2.0 Flash analyzes each image to detect curb cuts, surface quality, and obstructions, providing structured accessibility scores
- Real-Time Updates - Integrates user reports with routing to avoid known barriers
- Accessibility Dashboard - Shows issues in your area and along your route
How it works:
- Enter your destination
- MontreWalk samples points every 40m along candidate routes
- Google Street View imagery is analyzed by Gemini AI for each point
- Routes are scored based on accessibility, not just distance
- You get the most accessible path with detailed warnings
How we built it
Architecture:
Frontend (React + Leaflet)
- Interactive map with route visualization
- Camera integration for instant photo reporting
- File upload support for flexibility
- Real-time obstacle markers with severity indicators
Backend (Python + FastAPI)
- Route orchestration combining Google Routes API with accessibility scoring
- Image analysis pipeline using Gemini 2.0 Flash
- MongoDB caching to minimize API calls and improve performance
- Separate report handler service for user submissions
AI Pipeline:
- Street View API fetches panoramic views (N/E/S/W) at sampled points
- Gemini 2.0 Flash analyzes images for:
- Curb cut presence (present/missing/unclear)
- Surface condition (good/cracked/uneven/poor)
- Obstructions (poles, debris, snow, etc.)
- Overall accessibility score (1-5)
- Deterministic scoring algorithm aggregates results with distance-weighting
Key Technologies:
- Google Routes API - Multi-route generation
- Google Street View API - Panoramic imagery
- Gemini 2.0 Flash - Computer vision analysis
- MongoDB Atlas - Caching and user reports
- FastAPI - High-performance Python backend
- React + Leaflet - Interactive mapping UI
- Tailwind CSS - Modern, responsive design
Challenges we ran into
1. API Rate Limits & Costs
- Street View + Gemini analysis for every point was expensive
- Solution: Implemented MongoDB caching—if a point was analyzed before, reuse the score. Added strategic sampling (40m intervals) instead of analyzing every meter.
2. Deterministic Route Scoring
- Initial approach was too simple (just averaging scores)
- Routes with long bad sections scored the same as short bad sections
- Solution: Implemented distance-weighted scoring where time spent in problem areas matters more. Also added proximity weighting for obstacles.
3. Real-Time Image Analysis
- Gemini API quota limits caused failures during testing
- Solution: Built exponential backoff retry logic into analyzer.py with 5 attempts and 10s base wait time.
4. Base64 Image Storage
- Storing images in MongoDB was hitting free tier limits quickly during testing
- Solution: Designed the system to support both base64 (for hackathon demo with ~10 images) and cloud storage migration path (for production with Cloudinary/S3).
5. Polyline Decoding
- Google Routes API returns encoded polylines, frontend needed lat/lng pairs
- Solution: Implemented custom polyline decoder to convert efficiently without external libraries.
6. Confidence-Based Routing
- When should we trust local scoring vs. asking Gemini to decide?
- Solution: If route scores differ by >10 points, pick locally. Otherwise, delegate to Gemini for nuanced analysis considering weather, hazard severity, and context.
Accomplishments that we're proud of
- Built a working end-to-end system - From photo capture to AI analysis to route visualization in under 48 hours
- Real AI integration - Not just a UI mockup—Gemini actually analyzes images and provides structured accessibility data
- Smart caching strategy - Reduced costs by 90% while maintaining real-time feel through MongoDB caching
- Production-ready architecture - Separated concerns (routing service, report handler, frontend) for scalability
- Deterministic scoring algorithm - Distance-weighted aggregation ensures fair comparison between routes
- Beautiful, accessible UX - Clean design with smooth animations, intuitive camera integration, and clear visual hierarchy
- Community-driven approach - Users can contribute data to help others, creating a virtuous cycle
What we learned
Technical Skills:
- Integrating multiple Google APIs (Routes, Street View, Places)
- Prompt engineering for computer vision with Gemini
- Polyline encoding/decoding algorithms
- Geographic distance calculations (haversine formula)
- MongoDB indexing strategies for geo-queries
- React state management for complex map interactions
- FastAPI service architecture and CORS handling
Design Lessons:
- Accessibility isn't just about compliance—it's about understanding real user needs
- Simple scoring (1-5) is more useful than complex metrics
- Caching is critical for any system using expensive APIs
- User-generated content can supplement automated analysis
- Visual feedback (loading states, progress indicators) builds trust
Domain Knowledge:
- Curb cuts are THE critical infrastructure for wheelchair users
- Surface quality matters as much as route length
- Weather dramatically impacts accessibility (ice, snow, flooding)
- Temporary obstacles (construction, food trucks) change daily
- Montreal's unique challenges (harsh winters, construction season, hilly terrain)
What's next for MontreWalk
Immediate Improvements:
- Weather Integration - Real-time snow/ice/rain data to adjust scores dynamically
- User Authentication - Track contributions, build reputation systems
- Crowd Verification - Multiple reports of same location increase confidence
- Offline Mode - Cache routes and scores for areas users frequent
Feature Expansion:
- Transit Integration - Analyze metro/bus accessibility (elevators, ramps)
- Business Ratings - Show which restaurants/stores have accessible entrances
- Voice Navigation - Turn-by-turn directions with accessibility warnings
- Apple Watch App - Haptic feedback for upcoming obstacles
- Multi-City Expansion - Start with Toronto, NYC, Paris
Technical Evolution:
- Migrate to Cloud Storage - Move from MongoDB base64 to Cloudinary/S3 for scalability
- Real-Time Obstacle Detection - Partner with city services for live construction data
- ML Model Training - Fine-tune on Montreal-specific accessibility patterns
- Edge Computing - Process images on-device for privacy and speed
- API for Third Parties - Let other apps access our accessibility scores
Community Growth:
- Partnerships with Disability Organizations - Get feedback from real users
- City Government Collaboration - Share data to improve infrastructure planning
- Volunteer Network - Organized photo collection campaigns for comprehensive coverage
- Gamification - Badges and rewards for active contributors
Vision:
MontreWalk becomes the standard for accessible urban navigation worldwide, making every city walkable for everyone.
Built With
- fastapi
- gemini-api
- google-maps
- google-places
- google-streetview-api
- image-classification
- leaflet.js
- mongodb
- python
- react
- vite
Log in or sign up for Devpost to join the conversation.