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ächemindestens 300 m²
Fertigstellung4 bis 14 Monate ab Stichtag
Außenanlageja erfüllt, nein erfüllt nicht, leer oder unerwartet = nicht bewertbar

Prioritätsregel

mind. 2 von 3 nicht bewertbarunklar
3 Kriterien erfüllthoch
2 Kriterien erfülltmittel
höchstens 1 erfülltniedrig

Ablauf

01Projektdaten CSV mit 18 Datensätzen, teils lückenhaft
02Prüfung Drei Kriterien je Projekt, ohne Gewichtung
03Report Priorität mit Begründung, Lücken separat
04Mensch Auswahl treffen, recherchieren, entscheiden

Version 1 · Python-Werkzeug

läuft

Liest 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

Entwurf

Die 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.

Lead-Radar · Stichtag 2026-08 · 18 Projekte
5hoch
7mittel
4niedrig
2unklar
ProjektBezirk KriterienPriorität Kürzeste Begründung
P-008 Auwiesenweg 922 3/3 hoch alle drei Kriterien erfüllt
P-001 Ahornsteig 1222 3/3 hoch alle drei Kriterien erfüllt
P-004 Marillenallee 8823 2/3 mittel Grundstücksfläche fehlt
P-018 Rosenhügelgasse 812 2/3 mittel Termin ungültig (2027-13)
P-012 Salzachstraße 520 0/3 niedrig kein Kriterium erfüllt
P-011 Kirschbaumweg 1721 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 Entwicklung

Die 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.

01Regelprüfung Drei Kriterien, Priorität, Begründung
02Strukturiertes Ergebnis Erfüllt, nicht erfüllt, nicht bewertbar
03Sprachmodell formuliert Notiz und Rechercheliste
04Mensch recherchiert, entscheidet, kontaktiert
Lead-Radar · Notiz zu P-011, Kirschbaumweg 17
unklarPriorität aus der Regel
1/3Kriterien erfüllt
2nicht bewertbar

Entwurf der Kurznotiz – noch nicht freigegeben

Reihenhaussiedlung im 21. Bezirk mit ausdrücklich erwähnter Außenanlage. Zwei von drei Kriterien lassen sich nicht prüfen, weil Grundstücksfläche und Fertigstellungstermin im Datensatz fehlen. Das Projekt ist damit weder aussortiert noch bewertet – es wartet auf zwei Angaben. Grundlage: Regel „2 von 3 nicht bewertbar → unklar“

Vorgeschlagene Recherche

Grundstücksfläche über das öffentliche Grundstücksverzeichnis prüfen Grundlage: Feld grundstueck_m2 leer
Voraussichtliche Fertigstellung beim Bauträger erfragen Grundlage: Feld voraussichtliche_fertigstellung leer
Notiz übernehmen Neu formulieren Die Priorität bleibt unverändert – sie stammt aus der Regel.

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.