Inspiration
We all had our first experience in a university setting as first-year students. Starting university can be daunting and overwhelming, especially when you're trying to find your classes in an unfamiliar building. This experience inspired us to create Mappi, a tool designed to make navigating SFU easier for students.
What it does
Mappi is a wayfinding map for the AQ building at SFU. Users can select a starting room and a destination room, and Mappi calculates the shortest route between them. The app then displays an animated path on the map, making it easy for users to visualize and follow their route.
How we built it
We started with SFU’s AQ floor-plan SVG and used Python to extract walls, doors, rooms, and elevators. We converted this geometry into a 0.2 m routing grid, detected room numbers, and connected walkable areas across floors.
The browser then uses Dijkstra’s algorithm to find the shortest route. Hallways are prioritized and routes are kept away from walls for more natural paths.
Tech stack: Python, PyMuPDF, OpenCV, NumPy, SciPy, HTML, and JavaScript.
Challenges we ran into
One of our biggest challenges was accurately converting the AQ floor plans into a connected routing map.
Disconnected areas: Most floors route correctly, but parts of AQ 3000 are still disconnected from the main corridors.
Room detection: Not every door has a room number, and some small rooms are grouped together on the floor plans.
Hallway detection: We had to estimate whether an area was a hallway or room based on its room number and number of connected doors.
Vertical routing: We currently support elevators, but stairs are not yet included.
There are also features we haven't implemented yet, including other SFU buildings, live position tracking, and 3D navigation.
Accomplishments that we're proud of
We’re proud that we turned messy SFU floor-plan PDFs into a fully navigable indoor map. We built our own pipeline to detect rooms, doors, hallways, and elevators, while also creating room detection without Optical Character Recognition. We then connected everything into an interactive map with shortest-path routing and a “Fix Map” tool for handling imperfect data.
What we learned
Architectural PDFs work best when treated as noisy geometry, not clean map data. The key was isolating useful vector layers and using their shared coordinate system. We also learned that simple heuristics can go surprisingly far in turning raw geometry into usable routing data.
What's next for Mappi
We are looking to expand to other buildings at SFU other than AQ.
Log in or sign up for Devpost to join the conversation.