Inspiration
As an Economics student, I spend a lot of time looking at inflation data, purchasing power parity (PPP), and CPI baskets. But when I looked at tools for students planning to study abroad, I noticed a massive gap. Most university rankings focus entirely on prestige or academic output, ignoring the single biggest constraint for students today: financial survival.
I realised that a "top-ranked" university in a city with 8% inflation and skyrocketing rents isn't actually a good opportunity; it's a debt trap. I wanted to build a tool that treats a student's budget like an economic model, allowing them to stress-test their future in a fun and simple way.
What it does
CityLens is a transparent, data-driven dashboard that calculates a normalised "Affordability Score" for 33+ global cities. Unlike standard cost-of-living calculators, it is tailored specifically for the student basket of goods (Rent, Cheap Food, Public Transport).
Key features include:
- Weighted Preferences: Users can adjust the weight of rent versus wages based on their personal situation.
- Scenario Testing: A logic engine that simulates economic shifts (e.g., "Recession" or "Growth") to see how budget scenarios change.
- Geometric Map: A stylised map that allows for quick scanning of affordability zones without visual clutter.
How I built it (The "No-Code" )
This was my biggest challenge. I am an Economics student, not a Developer. I am comfortable with R for statistics, but I have zero experience with React or web development.
To bridge this gap, I leaned entirely on Generative AI and No-Code tools:
- Logic First: I wrote the scoring algorithms in R to ensure the math was sound.
- AI Design: I used Figma AI to generate the UI layouts and component hierarchies.
- Visualising Data: I used a simple Geometric Abstract Map to represent the data cleanly.
The Methodology & Scope
To ensure the rankings were fair, I applied a Min-Max normalisation technique. Since high costs are "bad" for affordability, I inverted the normalisation for expenses.
$$ Score_{cost} = 100 - \left( \frac{Cost_{city} - Cost_{min}}{Cost_{max} - Cost_{min}} \right) \times 100 $$
Important Note on Data Granularity
One specific challenge was distinguishing between National and City-level economics. I structured the data model as follows:
- Micro Data (Costs): Rent, Food, and Transport data are City-Specific. The model compares major urban hubs directly (e.g., London vs. Manchester or New York vs. Austin).
- Macro Data (Context): For broader economic indicators like Inflation Rates and Unemployment, the model primarily utilises Country-Level aggregates. While we compare major cities, we assume the national economic health (e.g., UK Inflation) applies to the student's experience in that city, as city-specific macro-data is often unavailable or lagging.
Challenges I ran into
Working alone as a non-coder was intimidating. I initially struggled to find reliable city-specific inflation data for every single location. I realised that trying to find the "inflation rate of a specific neighbourhood in Berlin or London" was difficult within the timeframe.
I overcame this by defining a clear Model Scope: I decided to map Major Global Cities using National Economic Baselines. This trade-off allowed me to keep the data consistent across 33 cities without breaking the model with missing data points.
Note:This is a prototype so the numbers maybe slightly off
Built With
- data-visualization
- figma-ai
- no-code
- r
- ui/ux
- world-bank-data
Log in or sign up for Devpost to join the conversation.