Inspiration

Inspired by when we personally got frustrated while planning outings in a city. Planning a day out in a new city can be a headache. You juggle Google Maps, Yelp, and countless tabs to figure out what’s open, how far apart places are, and whether they match your vibe. Even curated guides don’t always factor in distance, time constraints, or personal preferences.

So, that's why we created MyCity, a tool that curates experiences, optimizes routes, and matches your vibe. Whether you’re a life-of-the-party or someone looking for a quiet, artsy day, MyCity makes exploring a city effortless, efficient, and fun!

What it does

MyCity takes your inputs like your city, time window, aesthetic/vibe, and top priority (e.g., dietary restrictions, wheelchair accessibility). Then, our rule-based scoring algorithm ranks places based on open hours within your time window, shortest travel distance between stops, best match for your vibe, and top priority. The output is an optimized route with ordered stops and map visualization.

For instance, let’s say you want to be active and have a vegan diet today in Philadelphia. Put the inputs in and boom! Schuylkill Banks Boardwalk → Hip City Veg for breakfast → Schuylkill River Trail → Bar Bombon for lunch. A day out itinerary, personalized for your vibe and time.

How we built it

A rule-based algorithm in Python, powered by Flask for the backend. We used GeoPy for location calculations, Flask-CORS to connect the backend to the frontend, and Leaflet.js with HTML/CSS/JavaScript for map visualization. Dataset and candidate places were stored in a JSON file, categorized by vibes. Used uizard.io for UI Prototyping.

Challenges we ran into

It was a learning curve to integrate different APIs smoothly, dependencies to work with our IDE, and getting .venv configured correctly. On top of that, aligning map visualization with backend constraints wasn’t straightforward. We had an MVP but not a full working UI/UX. Each issue slowed us down at first, but ultimately pushed us to problem-solve fast and learn as a team.

Accomplishments that we're proud of

We’re actually proud that, despite limited frontend and design experience, we built a clean and presentable UI prototype. We also managed to combine diverse ideas from the team into one cohesive product. Our brainstorming session was very productive and really brought out the critical thinkers in us.

What we learned

We learned how to integrate APIs but used Geopy instead because it was indeed a huge learning curve, and we also gained a deeper appreciation for the complexity of rule-based personalization and how easy automation and AI make our lives. Prioritizing constraints like time, distance, and user preferences taught us how to balance technical feasibility with user experience. Perhaps the biggest lesson is that even a small, scrappy MVP can aim to solve a relatable problem while having fun.

What's next for MyCity

Next, we want to expand beyond Philadelphia's dataset and connect directly to the Google Maps API for live, dynamic data. We plan to add machine learning to refine vibe recommendations, build a mobile app for real-time itinerary planning, and factor in traffic and safety-aware routing. We also see room for more vibes and filters, from kid-friendly to budget-friendly, and even social sharing so friends can plan and explore together.

Built With

Share this project:

Updates

Submission history