| --- |
| title: Zurich Apartment Rent Assistant |
| emoji: 🏠 |
| colorFrom: blue |
| colorTo: green |
| sdk: gradio |
| sdk_version: 5.9.1 |
| app_file: app.py |
| pinned: false |
| --- |
| |
| # Zurich Apartment Rent Assistant |
|
|
| A conversational AI agent that estimates monthly rental prices for apartments in Zurich, Switzerland. |
| Describe an apartment in plain language — the agent extracts the relevant parameters and runs a machine-learning prediction. |
|
|
| ## How it works |
|
|
| 1. **You describe** an apartment in natural language (rooms, size, location, features) |
| 2. **GPT-4o-mini** extracts structured parameters and outputs them as JSON |
| 3. **A Gradient Boosting regression model** (trained on ~800 Zurich listings) predicts the monthly rent |
| 4. **GPT-4o-mini** translates the prediction back into a friendly, contextualised explanation |
|
|
| ## Example inputs |
|
|
| - "I'm looking for a 3-room apartment, about 80 m², in Kreis 3." |
| - "What would a furnished 1.5-room apartment in Zurich city, roughly 40 m², cost?" |
| - "I want a 4.5-room penthouse with lake view in Kreis 8, about 150 m². It's luxurious." |
|
|
| ## Parameters the model uses |
|
|
| | Parameter | Description | |
| |-----------|-------------| |
| | rooms | Number of rooms (half-rooms supported, e.g. 3.5) | |
| | area | Living area in m² | |
| | tax_income | Municipal median tax income (proxy for neighbourhood wealth) | |
| | luxurious / furnished / temporary | Apartment type flags | |
| | zurich_city | True = within city of Zurich, False = greater canton | |
| | attika / loft / seesicht | Special features | |
| | kreis | Zurich city district (Kreis 1–12) | |
|
|
| ## Setup |
|
|
| The app requires an `OPENAI_API_KEY` environment variable (set as a Hugging Face Space secret). |
|
|
| ## Model |
|
|
| - **Algorithm:** Gradient Boosting Regressor (scikit-learn) |
| - **Training data:** ~800 Canton Zurich apartment listings |
| - **Key features:** Income-Density Score (tax income × population density), log-transformed area, district dummies |
| - **CV R²:** ~0.70 |
|
|