German Property Price Predictor

Job ID: 39844290

Budget: €300 – €500 EUR

I need a robust yet portable machine-learning pipeline that can forecast either the absolute sale price or the €/m² of residential properties throughout Germany. The model must work for three asset classes—apartments, houses, and full apartment blocks—and return reliable estimates at a fine “block” or neighbourhood resolution, not merely at the city or regional level.

What I already have
• For each deal I can currently supply only the geo-location and rental price (latitude/longitude + rental price). No size, room count, or other listing attributes are guaranteed to be available at this stage. Some data like rental price, building year and so one can be found here: https://ergebnisse.zensus2022.de/datenbank/online/

What I expect you to bring
You will identify, source, and engineer any additional public or commercial datasets (e.g., OpenStreetMap POIs, census income, distance to transit, rental indices) that can complement location and help the model generalise. Feature engineering, model selection (e.g., scikit-learn, LightGBM, CatBoost, XGBoost), and hyper-parameter tuning are entirely up to you, provided the final workflow remains reproducible in Python.

Deliverables
• A clean, well-commented Jupyter notebook or .py script that ingests a CSV of locations, enriches it with external data, trains the model, and outputs predictions.
• Saved model artefacts and clear reload/inference instructions so I can apply the model to future batches.
• A short report summarising feature importance, error metrics (MAE, MAPE, or RMSE), and recommendations for improving accuracy when more variables (size, rooms, etc.) become available.

Acceptance criteria
The pipeline must run end-to-end on my machine with the sample data I provide, produce predictions for all three property types, and reach a reasonable error margin that you will justify given the feature limitations.

Please outline your proposed external data sources, preferred algorithms, and time line when you respond.