Exploring a new city is exciting. There are so many places to discover - different areas with completely different vibes. However, spontaneous exploration needs a lot of time, which we usually don't have. Instead, we find ourselves browsing through dozens of restaurant listings on TripAdvisor. Once we find a location, we travel straight to its exact street address with the help of Google Maps. How boring, but who wants to risk getting lost for hours in some deserted neighborhood on a short weekend trip? With URBAN VIBES we provide a middle ground for all the part-time explorers like us. If you agree that there is no such thing as "the best restaurant in town" and that the journey is the destination, then this is the right app for you.

What it does

URBAN VIBES is a mobile mapping app, which recommends neighborhoods where the user is most likely to find the desired experience. The user defines this experience by selecting an interest like food or culture in addition to the desired vibe. To express the desired vibe, the user gets to chose from a set of pictures, which represent different atmospheres and environments. The app's AI provides its recommendations by matching the user's choice against a database of past experiences shared by the user as well as by other people with similar preferences. To share an experience, the user can just shake the mobile phone, which brings up the above-described menu to select the appropriate interest and vibe. This data together with the current location is added to the URBAN VIBES database as well as the user's own profile. Since some events are only temporary, the map is able to display relevant experiences of others in real-time.

How we built it

We developed the URBAN VIBES Android app with the picture-based user interface. The map is powered by ArcGIS and able to display locations determined by the user input. By shaking the phone, the user can register a new experience. Updates by other users are displayed in real time. The shake detection is based on sensor readings of the phone's accelerometer (credits go to This event is transmitted to the cloud over the IoT protocol MQTT, which ensures scalability and efficiency. We used the CloudMQTT solution as a broker. Moreover, we implemented a Python back-end based on a REST-API within Flask and hosted on Heroku. In lack of an appropriate data set to train the AI, we decided to use an existing scrapy-based crawler engine for TripAdvisor (credits go to to gather HTML data on restaurants in Berlin. With Python and Pandas, we extracted features of that data, which we used to simulate location recommendations. The data is stored in a PostgreSQL database.

Challenges we ran into

To be able to implement the AI algorithm as planned, we would have needed an appropriate set of data to train it. Unfortunately, we couldn't find such a data set in the limited time available. We had to improvise and settled for a mock-up selection process based on data, which we crawled from TripAdvisor. When trying out our app, the GPS consistently placed us in London. At 5am we called it a day and went home to get some well-deserved sleep.

Accomplishments that we're proud of

Leo programmed his first Android app ever! The teamwork was great and allowed us to work in parallel while still making everything fit together in the end. The URBAN VIBES app is something we would actually be happy to use ourselves. We want to encourage people to explore new cities more actively and enable them to experience the excitement of discovering their new favorite spot by themselves.

What we learned

We used Esri's ArcGIS for the very first time, which is a welcome alternative to the ubiquitous Google Maps APIs.

What's next for URBAN VIBES

We want to complete the app with a fully working AI algorithm.

Share this project: