Automatisierung · Python
Lead-Radar
Bauprojekt-Daten strukturiert vorsortieren – und die Projekte klar benennen, die sich mangels Angaben nicht einstufen lassen.
Was es tut
Prüft jeden Projektdatensatz gegen drei offen dokumentierte Kriterien, vergibt genau eine Prioritätsklasse, schreibt zu jeder Einstufung eine Begründung und trennt dabei fehlende von ungültigen Angaben. Läuft als Skript in unter einer Sekunde.
Ausgangslage
Bauprojekte können Hinweise darauf liefern, wo später Freiraum- oder Gartenplanung relevant werden könnte – etwa über Grundstücksgröße, Fertigstellungstermin oder die Frage, ob im Projekt überhaupt eine Außenanlage erwähnt wird.
Bei vielen Projekten ist es aufwendig, diese Hinweise manuell zu strukturieren. Die Datenlage ist dabei typischerweise uneinheitlich: Manche Einträge sind vollständig, bei anderen fehlt die Fläche, der Termin oder jede Angabe zur Außenanlage.
Die Demo löst genau diesen kleinen Teil: die immer gleiche, regelbasierte Vorsortierung. Sie findet keine Aufträge und sagt nichts über Auftragschancen aus.
Kriterien
| Grundstücksfläche | mindestens 300 m² |
|---|---|
| Fertigstellung | 4 bis 14 Monate ab Stichtag |
| Außenanlage | ja erfüllt, nein erfüllt nicht, leer oder unerwartet = nicht bewertbar |
Prioritätsregel
| mind. 2 von 3 nicht bewertbar | unklar |
|---|---|
| 3 Kriterien erfüllt | hoch |
| 2 Kriterien erfüllt | mittel |
| höchstens 1 erfüllt | niedrig |
Ablauf
Version 1 · Python-Werkzeug
läuftLiest die CSV, prüft jedes Projekt gegen die drei Kriterien und schreibt einen sortierten Report. Der Stichtag ist fest im Skript hinterlegt und nicht das Systemdatum – sonst würden dieselben Beispieldaten je nach Aufrufzeitpunkt anders eingestuft.
Eingabe · bauprojekte_beispiel.csv
projekt_id,adresse,bezirk,projekttyp, grundstueck_m2,voraussichtliche_fertigstellung, aussenanlage_erwaehnt P-001,Ahornsteig 12,22,Wohnanlage mit Gärten, 1450,2027-03,ja P-011,Kirschbaumweg 17,21,Reihenhaussiedlung, ,,ja P-017,Werkstättenweg 60,11,Quartiersentwicklung, k.A.,2027-12,ja P-018,Rosenhügelgasse 8,12,Wohnanlage, 510,2027-13,ja
Auszug aus 18 Zeilen, Umbrüche zur Lesbarkeit eingefügt. Beachten
Sie P-011
(zwei leere Felder), P-017 (k.A. statt
Zahl) und P-018 (Monat 13).
Ausgabe · lead_radar_report.md
Geprüfte Projekte: 18 Hoch: 5 Mittel: 7 Niedrig: 4 Unklar: 2 ### P-011 – Kirschbaumweg 17, 21. Bezirk Priorität: UNKLAR - Grundstück: keine Angabe → unklar - Fertigstellung: keine Angabe → unklar - Außenanlage: ja → Kriterium erfüllt Begründung: Zur Grundstücksfläche liegt keine Angabe vor; sie wird nicht geschätzt. Zum Fertigstellungstermin liegt keine Angabe vor. Regel: 2 von 3 Kriterien sind nicht bewertbar. Eine belastbare Einstufung ist daher nicht möglich (→ unklar).
Quellcode ansehen – Schwellenwerte und Prioritätsregel
# Stichtag für die Terminberechnung. Bewusst fest gesetzt, damit die
# Demo-Ergebnisse reproduzierbar bleiben und nicht vom Systemdatum abhängen.
REFERENCE_DATE = (2026, 8) # Jahr, Monat
MIN_GRUNDSTUECK_M2 = 300
MIN_MONATE_BIS_FERTIGSTELLUNG = 4
MAX_MONATE_BIS_FERTIGSTELLUNG = 14
def bestimme_prioritaet(anzahl_erfuellt, anzahl_unbekannt):
"""Die vollständige Prioritätsregel – bewusst an einer Stelle und ohne Gewichte.
unklar : mindestens 2 der 3 Kriterien nicht bewertbar
hoch : alle 3 Kriterien erfüllt
mittel : genau 2 Kriterien erfüllt
niedrig: höchstens 1 Kriterium erfüllt
"""
if anzahl_unbekannt >= 2:
return "unklar"
if anzahl_erfuellt == 3:
return "hoch"
if anzahl_erfuellt == 2:
return "mittel"
return "niedrig"
Die Kernlogik ist durch 19 kleine Tests abgesichert
(python3 lead_radar.py --selftest), unter anderem für
Fenstergrenzen, ungültige Datumswerte und unerwartete Feldinhalte.
Version 2 · Oberfläche
EntwurfDie Arbeitsliste als Ansicht statt als Textdatei. Alle Zahlen und Einstufungen stammen aus dem tatsächlichen Report des Skripts oben – die Oberfläche selbst ist ein Gestaltungsentwurf und noch nicht implementiert.
| Projekt | Bezirk | Kriterien | Priorität | Kürzeste Begründung |
|---|---|---|---|---|
| P-008 Auwiesenweg 9 | 22 | 3/3 | hoch | alle drei Kriterien erfüllt |
| P-001 Ahornsteig 12 | 22 | 3/3 | hoch | alle drei Kriterien erfüllt |
| P-004 Marillenallee 88 | 23 | 2/3 | mittel | Grundstücksfläche fehlt |
| P-018 Rosenhügelgasse 8 | 12 | 2/3 | mittel | Termin ungültig (2027-13) |
| P-012 Salzachstraße 5 | 20 | 0/3 | niedrig | kein Kriterium erfüllt |
| P-011 Kirschbaumweg 17 | 21 | 1/3 | unklar | Fläche und Termin fehlen |
Oberflächenentwurf, Auszug aus 18 Zeilen. „Unklar“ ist bewusst eine eigene Kachel und keine niedrige Priorität – ein Projekt ohne Daten ist nicht dasselbe wie ein Projekt, das die Kriterien verfehlt.
Version 3 · KI-gestützte Kurznotiz
in EntwicklungDie Regeln vergeben die Priorität. Das Sprachmodell schreibt daraus eine lesbare Notiz für die Arbeitsliste und schlägt vor, was vor einer Entscheidung noch zu recherchieren wäre.
Entwurf der Kurznotiz – noch nicht freigegeben
Vorgeschlagene Recherche
Entwurf der Oberfläche, nicht bedienbar. Die Kachel „Priorität aus der Regel“ steht bewusst über der Notiz: Der Text wird generiert, die Einstufung nicht.
Was das Modell ausdrücklich nicht tut
Es vergibt keine Priorität, füllt keine fehlenden Felder und schätzt keine Flächen. Ein Modell, das Einstufungen vergibt, könnte nicht mehr begründen, warum ein Projekt oben steht – und genau diese Begründung ist der Zweck des Werkzeugs.
Der Projekttyp bleibt Kontext
Ein Projekttyp wie „Reihenhaussiedlung“ ist für Freiraumplanung grundsätzlich relevant. Er wird im Report deshalb als Kontexthinweis ausgegeben – fließt aber nicht in die Prioritätsregel ein und ersetzt keine fehlende Angabe.
Aus „Reihenhaussiedlung“ folgt im Report also nie „Außenanlage vermutlich vorhanden“, sondern der Hinweis, dass die Angabe fehlt. Genau dort verläuft die Grenze zwischen Daten und Interpretation.
Ebenso unterscheidet der Report zwischen einer fehlenden
und einer ungültigen Angabe. Ein Terminwert wie
2027-13 wird nicht stillschweigend als „unbekannt“
verbucht, sondern als ungültiger Eintrag benannt.
Automatisierung
- liest die Daten ein und prüft jedes Kriterium
- vergibt genau eine Prioritätsklasse nach offener Regel
- erzeugt zu jedem Projekt eine Begründung
- sortiert den Report und markiert Datenlücken
Mensch
- wählt die Kriterien aus
- legt Schwellenwerte und Stichtag fest
- interpretiert das Ergebnis
- entscheidet über jede Kontaktaufnahme
Grenzen
- Die Demo arbeitet ausschließlich mit fiktiven Beispieldaten. Es findet kein Live-Scraping statt und es werden keine echten Bauprojekt-Daten abgerufen.
- Für einen echten Einsatz müsste zunächst eine geeignete und rechtlich wie technisch zulässige Datenquelle angebunden werden.
- Die Kriterien und Schwellenwerte sind Beispielwerte. Ob sie fachlich sinnvoll sind, entscheidet der Mensch, nicht das Skript.
- Das Skript sagt nichts über tatsächliche Auftragschancen aus und trifft keine Entscheidung darüber, wer kontaktiert wird.
- Es wird keine KI und kein Machine Learning verwendet. Die Logik besteht aus lesbaren Regeln.
Dateien
- bauprojekte_beispiel.csv Eingabe
- lead_radar.py Logik
- lead_radar_report.md Ausgabe
- case_beschreibung.md Doku
Python-Standardbibliothek, kein Internetzugriff, keine Datenbank. Die vollständigen Dateien sende ich auf Anfrage gerne zu.