Deterministische Angebotsrange aus historischen Entsorgungspreisen
Der Preisrechner ist eine eigenstaendige Web-Anwendung, die fuer eine Entsorgungsposition eine belastbare Preisrange ableitet. Der Nutzer gibt Abfallschluessel (AVV-Code), Gueteklasse und Postleitzahl ein und erhaelt je eine Empfehlung fuer Materialkosten inklusive und exklusive Transport, jeweils mit Preisspanne, Datenebene und nachvollziehbaren Quellenangaben. Die Anwendung laeuft als einzelne, in sich geschlossene HTML-Datei ohne Server und ohne externe Abhaengigkeiten.
Entsorgungspreise variieren stark nach Material, Gueteklasse und Region, und das zugehoerige Wissen liegt verstreut in historischen Markt- und Preisdaten. Ziel ist es, dieses Wissen in eine schnelle, reproduzierbare Preisempfehlung zu ueberfuehren, die eine fundierte Kalkulation stuetzt. Statt eines Einzelwerts liefert das Tool eine transparente Range mit Konfidenzbewertung, damit der Nutzer Datenlage und Belastbarkeit einer Empfehlung sofort einschaetzen kann.
Deterministische Engine in reinem JavaScript (keine externen Bibliotheken). Geografische Staffelung ueber die NUTS-Hierarchie (Landkreis, Regierungsbezirk, Bundesland, bundesweit) mit Fallback nach Datenverfuegbarkeit. Recency-gewichteter Median plus Q1/Q3 als Empfehlung, ungewichtetes Minimum/Maximum als Spannweite. Konfidenz-Score aus vier Faktoren (geografische Naehe, Quellenzahl, Aktualitaet, Anbietervielfalt). Ausgeliefert als self-contained HTML mit eingebetteten Daten als JSON. Zweistufiger Python-Build (Datenimport getrennt vom HTML-Bau), nur Standardbibliothek fuer den Bau.
Ein zweistufiger Build trennt den langsamen Datenimport vom schnellen HTML-Bau. Ein Import-Skript liest die Rohdaten, fuehrt sie zusammen, dedupliziert, normalisiert Gueteklassen und validiert AVV-Codes; ein Build-Skript projiziert das bereinigte Ergebnis als JSON in eine HTML-Vorlage. Die Empfehlungslogik (geografische Staffelung, gewichtete Perzentile, Konfidenz) wurde als in sich geschlossene, deterministische Engine umgesetzt und spaeter fuer die Wiederverwendung in der Kalkulationspipeline nach Python portiert.
Der Nutzer pflegt eine Tabelle aus Positionen, jede mit AVV-Code, Gueteklasse und PLZ. Eingabefelder nutzen Autovervollstaendigung: die Gueteklassen-Auswahl ist auf die fuer den gewaehlten AVV-Code tatsaechlich vorhandenen Klassen beschraenkt, die PLZ wird gegen ein Ortsverzeichnis aufgeloest. Nach der Berechnung zeigt jede Zeile getrennt fuer inklusive und exklusive Transportkosten den empfohlenen Median, die Q1-Q3-Spanne, die verwendete geografische Ebene, die Quellenzahl und einen Konfidenzhinweis ueber die Zellfarbe. Das Ergebnis laesst sich als CSV exportieren.
Die PLZ wird ueber ein Ortsverzeichnis auf die NUTS-Hierarchie abgebildet (NUTS-3 Landkreis, NUTS-2 Regierungsbezirk, NUTS-1 Bundesland). Die Engine sucht zuerst auf der lokalsten Ebene und weitet den Suchradius nur dann aus, wenn dort nicht genug Datenpunkte vorliegen. Die lokalste Ebene verlangt eine Mindestzahl an Treffern fuer statistische Relevanz; hoehere Ebenen akzeptieren bereits einen Treffer, da die Ausweitung selbst den Kontext liefert. Greift die Ausweitung, wird dies im Ergebnis und in der Quellendetail-Ansicht transparent ausgewiesen.
Als primaere Empfehlung berechnet die Engine einen recency-gewichteten Median sowie das erste und dritte Quartil. Jeder Datenpunkt erhaelt ein Gewicht, das mit dem Alter exponentiell abfaellt (Halbwertszeit 18 Monate); aeltere Werte fliessen abgeschwaecht ein statt ignoriert zu werden. Die Perzentile werden als Stufenfunktion ueber die nach Preis sortierten, gewichteten Werte bestimmt. Zusaetzlich werden ungewichtetes Minimum und Maximum als Spannweite ausgewiesen. So dominieren einzelne Ausreisser nicht das Ergebnis, bleiben aber sichtbar.
Jede Empfehlung wird als hoch, mittel oder gering eingestuft, ueber eine Summe aus vier Faktoren: geografische Naehe der genutzten Datenebene, Anzahl der Quellen, Aktualitaet und Anbietervielfalt. Die Aktualitaet wird verteilungsbasiert bewertet: die Altersverteilung aller Quellen wird als Normalverteilung modelliert und die Wahrscheinlichkeit bestimmt, dass ein Wert innerhalb des Frischefensters liegt. Dadurch wird vermieden, dass eine einzelne frische Quelle inmitten vieler alter denselben Aktualitaetswert erhaelt wie ein durchgaengig frischer Datensatz. Die Anbietervielfalt schuetzt gegen Einseitigkeit durch einen einzelnen Lieferanten.
Die Quellenzahl jeder Empfehlung ist anklickbar und oeffnet eine eigenstaendige Detailansicht mit allen zugrunde liegenden Datenpunkten in einer sortierbaren Tabelle, ergaenzt um eine Zusammenfassung (Median, Q1-Q3, Spannweite, Quellen- und Anbieterzahl) sowie den verwendeten geografischen Bereich. Jede Empfehlung bleibt damit bis auf den einzelnen Datensatz nachvollziehbar.
Der Datenimport ist vom HTML-Bau getrennt: Ein Import-Skript erzeugt aus den Rohdaten eine bereinigte Datenbasis (Zusammenfuehrung mehrerer Quellen, Deduplizierung ueber einen zusammengesetzten Schluessel, Normalisierung der Gueteklassen auf kanonische Klassen, Validierung der AVV-Codes inklusive Erhalt der Gefaehrlichkeitskennzeichnung). Ein schlankes Build-Skript liest diese Datenbasis und bettet sie als JSON zusammen mit der Anwendungslogik in eine HTML-Vorlage ein. Ergebnis ist eine einzelne HTML-Datei, die ohne Server und ohne Internetverbindung lauffaehig ist.
Die Empfehlungsengine ist deterministisch und damit unabhaengig vom Web-Frontend nutzbar. Sie wurde nach Python portiert und dient als Bepreisungsschritt in der uebergeordneten Kalkulationspipeline: dort liefert sie je erkannter Entsorgungsposition aus AVV-Code, Gueteklasse und PLZ einen Preis je Tonne samt Konfidenz und speist so eine bepreiste Massenbilanz und einen geschaetzten Angebotswert. Die Engine liefert eine Marktindikation, keine Reproduktion vergangener Angebote; Preise sind vor Verwendung zu plausibilisieren.
Reconic. Strukturierte Kurzdokumentation.