Inspiration
As newer climbers (who are also on the shorter side) we’ve often struggled to figure out how to approach even the easiest routes. Instead of climbing, we found ourselves stuck on the ground, staring at the wall, trying to decode the beta.
We realized we weren’t alone. Many climbers waste valuable session time analyzing routes instead of actually climbing them. That frustration sparked the idea for Ascend: a tool designed to help climbers spend less time guessing and more time moving.
What it does
Ascend is an intelligent route-analysis platform that evaluates a climbing wall and determines the most efficient path to the top hold.
We model each climb as a graph, where individual holds act as nodes and the possible movements between them form edges. Each edge is assigned a weight based on multiple factors, including the climber’s height, arm span, experience level, hold type, and the Euclidean distance between holds. These weights represent both the physical feasibility of a move and its relative difficulty.
To compute the optimal route, we implement the A* search algorithm, an optimized extension of Dijkstra’s algorithm, while maintaining a dynamic state that tracks left and right hand placements. This allows Ascend to simulate realistic climbing movement rather than simply drawing a shortest path between points.
The result is a personalized, physically feasible route optimized specifically for the individual climber.
How we built it
We architected Ascend as a modular, full-stack system composed of three core layers: the frontend experience, the API infrastructure, and the graph intelligence engine.
The frontend, built with React and Vite, powers the interactive climbing interface. It allows users to upload wall images, select holds, and input personal metrics, translating real-world climbing into structured digital input through an intuitive, responsive UI.
Our API layer serves as the connective backbone of the platform. It manages data flow between the user interface and the optimization engine, handling storage, validation, and structured communication. We used PostgreSQL with SQLAlchemy to design a scalable relational database capable of storing user profiles, climb data, and route metadata.
At the core of Ascend is our graph intelligence engine, built in Python using the NetworkX library. This component models each climb as a weighted graph and applies the A* search algorithm to compute a personalized, optimized route based on physical constraints and movement feasibility. The computed route is then returned to the frontend for visualization.
By separating concerns across these layers, we built a scalable and extensible architecture, transforming a complex physical problem into an intelligent, real-time digital solution.
Challenges we ran into
One of the challenges we faced was managing code merges. As we combined our separate branches, we encountered conflicting changes that required careful, manual review. While merging, changes had to be made with how schemas/relations were built to account for differences on branches. Rather than relying solely on automatic merge resolutions, we had to thoroughly parse through the code to determine what should be preserved, refactored, or removed.
While time-consuming, this process forced us to better understand each other’s implementations and ultimately strengthened the structure and cohesion of our final product.
Another significant challenge was modeling real human movement within a computational framework. Translating the complexity of climbing into a simulation required us to make careful assumptions about hand placement, body positioning, and reachability.
In order to create a solvable model, we had to abstract human factors into measurable constraints. Deciding how to represent realistic hand transitions and feasible movements without oversimplifying the sport was one of the most technically demanding aspects of the project.
Accomplishments that we're proud of
One of our biggest accomplishments was successfully developing a graph-based model that meaningfully represents climbing movement. Translating a physical sport into a computational structure required careful design, and we are proud of how we implemented graph analysis to produce realistic route optimization.
We also successfully integrated external APIs into our system, ensuring smooth functionality and expanding the technical scope of the project. Managing this alongside algorithm development required strong coordination and problem-solving.
Despite the time constraints of the hackathon, we maintained effective time management and were able to deliver a fully working prototype. We are especially proud that we tested our model on an actual climb at the CRC, grounding our work in a real-world setting rather than purely theoretical examples.
Most importantly, we built a solution around a problem we personally experienced, creating a project that is not only technically challenging, but genuinely useful.
What we learned
Through building Ascend, we gained hands-on experience designing and implementing a true full-stack application. From structuring our backend logic and managing data relationships to developing an interactive frontend and integrating algorithms seamlessly into the user experience, we developed a deeper understanding of how each layer of a system must work cohesively.
We also learned how to translate a real-world physical problem into a computational model — balancing abstraction with realism. Most importantly, we strengthened our collaboration skills, learning how to navigate version control challenges, divide responsibilities effectively, and iterate quickly under time constraints.
What's next for Ascend
As of now, Ascend is optimized for flat climbing walls. But modern climbing gyms have many more complicated climbs featuring steep overhangs, complex volumes, and three-dimensional holds that demand advanced movement and strategy. Our next step is expanding beyond flat-wall analysis to support advanced climbing environments by integrating video-based route modeling.
The long-term vision? To become the go-to training partner for climbers, helping athletes analyze movement, improve efficiency, and confidently take on harder, more technical routes.
Built With
- css
- fastapi
- javascript
- python
- sqlalchemy
- vercel
Log in or sign up for Devpost to join the conversation.