Aufwandsschätzung Althaus Bot v2 -- Unabhängige Analyse
Projekt: Althaus Bot v2 -- Weiterentwicklung & neue Use Cases
Kunde: W. Althaus AG, Aarwangen
Erstellt: 13. April 2026
Basis: Code-Analyse Gateway-Repository + Offerte v2 vom 14.04.2026
Methodik: Bottom-Up-Schätzung auf Basis der bestehenden Implementierung, Dreipunktschätzung (Min / Mitte / Max)
1. Ist-Zustand der Implementierung
1.1 Architekturübersicht
┌─────────────────────────────────────────────────────────────────┐
│ React Frontend (SSE-Streaming, Chat-UI) │
└──────────────────────────┬──────────────────────────────────────┘
│ /api/chatbot/*
┌──────────────────────────▼──────────────────────────────────────┐
│ Gateway (Python/FastAPI) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Chatbot Feature (modules/features/chatbot/) │ │
│ │ ┌─────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ │ │
│ │ │ Planner │→ │ SQL Plan │→ │ Parse & │→ │Formul. │ │ │
│ │ │ Node │ │ Node │ │ Execute │ │ Node │ │ │
│ │ └────┬────┘ └──────────┘ └────┬─────┘ └────────┘ │ │
│ │ │ │ │ │
│ │ ├→ Tavily (Web Search) │ │ │
│ │ └→ Direct Answer │ │ │
│ └──────────────────────────────────┼──────────────────────┘ │
│ │ │
│ ┌──────────────────────────────────▼──────────────────────┐ │
│ │ PreprocessorConnector (HTTP POST → Azure SQL API) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ KnowledgeService (pgvector/RAG) -- NICHT IM CHATBOT │ │
│ │ Produktiv im AgentService + CommCoach │ │
│ └─────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
│
┌──────────────────────────▼──────────────────────────────────────┐
│ Azure Preprocessing Server (deployed, ERP-Daten deaktiviert) │
│ Tabellen: Artikel, Einkaufspreis, Lagerplatz, Lagerplatz_Art. │
│ Repo: github.com/valueonag/gateway_preprocessing │
└─────────────────────────────────────────────────────────────────┘
1.2 Vorhandene Komponenten (Wiederverwendung)
| Komponente |
Datei / Modul |
Status |
Wiederverwendbar für |
| LangGraph-Workflow |
chatbot/chatbot.py |
Produktiv (deaktiviert) |
Alle Positionen -- Grundgerüst |
| PreprocessorConnector |
connectors/connectorPreprocessor.py |
Produktiv (deaktiviert) |
Pos. 1, 2, 3, 4 -- SQL-Abfragen |
| ChatbotConfig |
chatbot/config.py |
Produktiv |
Alle -- Konfiguration pro Instanz |
| Streaming-Bridge |
chatbot/service.py |
Produktiv |
Alle -- SSE ans Frontend |
| ChatbotDocument |
chatbot/interfaceFeatureChatbot.py |
Implementiert |
Pos. 1.4, 2.1, 2.5 -- File-Handling |
| KnowledgeService/RAG |
serviceCenter/services/serviceKnowledge/ |
Produktiv (AgentService) |
Pos. 5 -- Wiki-Integration |
| Automation-Template |
automation/subAutomationTemplates.py |
Produktiv |
Pos. 6 -- Preprocessor-Updates |
| SQL-Sanitize |
chatbot.py → _sanitize_sql_typos |
Produktiv |
Pos. 1.1 -- Gesperrte Artikel |
| Markdown-Tabellen |
chatbot.py → _tool_output_to_markdown_table |
Produktiv |
Pos. 1.3, 3.3 -- Darstellung |
| File-Upload Backend |
service.py → _convert_file_ids_to_document_references |
Implementiert |
Pos. 1.4 -- Upload-Pipeline |
| Excel-Export |
service.py → _create_chat_document_from_action_document |
Implementiert |
Pos. 2.5 -- Kalktool-Export |
1.3 Fehlende Komponenten (Neuentwicklung)
| Komponente |
Benötigt für |
Komplexität |
| Matching-Engine (exakt → fuzzy → KI) |
Pos. 2.2 |
Hoch |
| Neuer Planner-Pfad "WIKI" |
Pos. 5.2 |
Mittel |
| KnowledgeService → Chatbot Integration |
Pos. 5.2 |
Mittel |
| Wiki-Connector (API/Crawling) |
Pos. 5.1 |
Unbekannt (Wiki-abhängig) |
| Delta-Sync-Mechanismus |
Pos. 5.3 |
Mittel |
| Preprocessor: 8-10 neue Tabellen/Views |
Pos. 1.5, 3.1, 4.1 |
Mittel (Code-Änderung) |
| Frontend: File-Picker, Drag&Drop |
Pos. 1.4 |
Mittel |
| Frontend: Thread-Liste, Suchfunktion |
Pos. 1.2 |
Mittel |
| Kalktool-Excel-Format-Export |
Pos. 2.5 |
Mittel |
| Schwellenwert-Insights |
Pos. 4.5 |
Mittel |
2. Detaillierte Aufwandsschätzung
Position 1: Basics (Plattform-Verbesserungen)
| # |
Anforderung |
Offerte |
Min |
Mitte |
Max |
Begründung |
| 1.1 |
Gesperrte Artikel filtern |
4 |
3 |
4 |
4 |
System-Prompt + SQL-Sanitize-Regel. Kleine Änderung. |
| 1.2 |
Chat-Verlauf speichern |
12 |
12 |
14 |
16 |
Backend existiert. Frontend-Aufwand (Thread-Liste, Suche). |
| 1.3 |
Längere Antworten |
6 |
4 |
5 |
6 |
Streaming-Config + Frontend-Rendering. |
| 1.4 |
Datei-Upload |
16 |
16 |
18 |
20 |
Full-Stack: Drag&Drop + LangGraph-Integration + Extraktion. |
| 1.5 |
Kundenartikelnummern |
8 |
10 |
12 |
14 |
Preprocessor-Code + Prompt + Cross-Ref-Queries. ERP-abhängig. |
| 1.6 |
Abklärungen & Testing |
8 |
8 |
8 |
8 |
Standard. |
|
Subtotal |
54 |
53 |
61 |
68 |
|
Delta zur Offerte: +7h (Mitte) / +14h (Max)
Haupttreiber: Preprocessor-Erweiterung für Kundenartikelnummern (Pos. 1.5) erfordert Code-Änderung, nicht nur Config. Frontend-Aufwand bei Upload (Pos. 1.4) eher am oberen Ende.
Position 2: Use Case Kalktool
| # |
Anforderung |
Offerte |
Min |
Mitte |
Max |
Begründung |
| 2.1 |
Stücklisten-Upload & Extraktion |
12 |
10 |
12 |
14 |
Nutzt Pos. 1.4. serviceExtraction vorhanden. |
| 2.2 |
Artikelidentifikation & Matching |
20 |
24 |
28 |
32 |
KRITISCH: Neue Matching-Engine, 3 Stufen, ERP-abhängig. |
| 2.3 |
Automatische Feldergänzung |
16 |
14 |
16 |
18 |
Preprocessor + Enrichment-Logik. |
| 2.4 |
Alternativartikel-Vorschläge |
12 |
12 |
14 |
16 |
KI-Vorschläge + Bestätigungs-Workflow im Chat. |
| 2.5 |
Excel-Export (Kalktool-Format) |
12 |
10 |
12 |
14 |
Basis existiert. Kalktool-Vorlage-Anpassung. |
| 2.6 |
Erweiterbarkeit neue Felder |
8 |
6 |
8 |
10 |
Config-gesteuertes Feld-Mapping. |
| 2.7 |
Abklärungen & Testing |
12 |
12 |
12 |
12 |
Kalktool-Vorlage, Testdaten, UAT. |
|
Subtotal |
92 |
88 |
102 |
116 |
|
Delta zur Offerte: +10h (Mitte) / +24h (Max)
Haupttreiber: Die Matching-Engine (Pos. 2.2) ist die komplexeste Neuentwicklung im gesamten Projekt. Mehrstufiges Matching (exakt → fuzzy → KI-gestützt) ohne bestehende Basis. Die Qualität hängt stark von der ERP-Datenqualität und der Vielfalt der Kunden-Stücklisten-Formate ab.
Position 3: Use Case Materialmanagement 1
| # |
Anforderung |
Offerte |
Min |
Mitte |
Max |
Begründung |
| 3.1 |
ERP-Daten erweitern |
16 |
16 |
19 |
22 |
Preprocessor: Bestellungen, Wareneingänge, Aufträge. Code nötig. |
| 3.2 |
System-Prompt Materialmanagement |
8 |
6 |
8 |
10 |
Prompt-Engineering + SQL-Templates. |
| 3.3 |
Transparente Statusübersicht |
8 |
6 |
7 |
8 |
Markdown-Rendering existiert, Erweiterung nötig. |
| 3.4 |
Auswirkungsanalyse & Empfehlungen |
12 |
14 |
16 |
18 |
Cross-Table-Queries + KI-Analyse. Komplex. |
| 3.5 |
Abklärungen & Testing |
8 |
8 |
8 |
8 |
Standard. |
|
Subtotal |
52 |
50 |
58 |
66 |
|
Delta zur Offerte: +6h (Mitte) / +14h (Max)
Haupttreiber: Auswirkungsanalyse (Pos. 3.4) erfordert Multi-Table-Joins und KI-gestützte Bewertung, was über einfache SQL-Abfragen hinausgeht.
Position 4: Use Case Materialmanagement 2 (KPIs)
| # |
Anforderung |
Offerte |
Min |
Mitte |
Max |
Begründung |
| 4.1 |
ERP-Daten erweitern |
16 |
16 |
19 |
22 |
Lagerjournal, Preishistorie. Aggregierte Views. |
| 4.2 |
System-Prompt KPI-Analyse |
8 |
6 |
8 |
10 |
Prompt-Engineering. |
| 4.3 |
Liefertermintreue-Analyse |
10 |
10 |
12 |
14 |
Zeitreihen, Lieferantenvergleich, komplexe SQL. |
| 4.4 |
Preisentwicklungs-Analyse |
10 |
10 |
11 |
12 |
Preishistorie, Abweichungsberechnung. |
| 4.5 |
Automatisierte Insights |
8 |
10 |
12 |
14 |
Schwellenwert-Warnungen, proaktive Erkennung. Neues Konzept. |
| 4.6 |
Abklärungen & Testing |
8 |
8 |
8 |
8 |
Standard. |
|
Subtotal |
60 |
60 |
70 |
80 |
|
Delta zur Offerte: +10h (Mitte) / +20h (Max)
Haupttreiber: Automatisierte Insights (Pos. 4.5) erfordern eine neue Logikschicht, die proaktiv Schwellenwerte überwacht und Empfehlungen generiert. Das ist im aktuellen Chat-Flow nicht vorgesehen.
Position 5: Use Case Wiki-Anbindung
| # |
Anforderung |
Offerte |
Min |
Mitte |
Max |
Begründung |
| 5.1 |
Wiki-Anbindung & Indexierung |
16 |
16 |
20 |
24 |
KnowledgeService existiert. Wiki-Zugang UNBEKANNT. |
| 5.2 |
RAG-Integration im Chatbot |
12 |
12 |
14 |
16 |
Pattern existiert (AgentService), muss portiert werden. |
| 5.3 |
Inkrementelle Aktualisierung |
8 |
8 |
11 |
14 |
Delta-Sync stark Wiki-abhängig. |
| 5.4 |
Abklärungen & Testing |
8 |
8 |
9 |
10 |
Relevanz-Tuning ist iterativ. |
|
Subtotal |
44 |
44 |
54 |
64 |
|
Delta zur Offerte: +10h (Mitte) / +20h (Max)
Haupttreiber: Wiki-System ist unbekannt. Bei Wiki mit guter API (Confluence, SharePoint) sind 44h erreichbar. Bei proprietärem System ohne API steigt der Aufwand erheblich.
Synergie: KnowledgeService mit pgvector, Chunking, Embedding und semanticSearch ist bereits produktiv. Die RAG-Pipeline (Ingestion → Embedding → Retrieval) muss nicht neu gebaut werden. Das spart geschätzt 20-30h gegenüber einer Neuentwicklung.
Position 6: Azure-Migration
| # |
Anforderung |
Offerte |
Min |
Mitte |
Max |
Begründung |
| 6.1 |
Migration Preprocessor |
6 |
4 |
6 |
8 |
Config-Änderungen, Env-Files, Netzwerk. |
| 6.2 |
Validierung & Smoke-Tests |
4 |
4 |
4 |
4 |
End-to-End-Tests. |
|
Subtotal |
10 |
8 |
10 |
12 |
|
Delta zur Offerte: 0h (Mitte)
Bewertung: Realistisch. Einfachste Position.
Position 7: Projektmanagement
| # |
Anforderung |
Offerte |
Min |
Mitte |
Max |
Begründung |
| 7.1 |
Kick-off & Workshop |
4 |
4 |
4 |
4 |
Standard. |
| 7.2 |
Projektmanagement |
8 |
10 |
12 |
14 |
10-14 Wochen, 3 Ansprechpartner, 7 Positionen. |
| 7.3 |
Deployment & Go-Live |
6 |
6 |
7 |
8 |
Staging + Prod + erste Betriebswoche. |
|
Subtotal |
18 |
20 |
23 |
26 |
|
Delta zur Offerte: +5h (Mitte) / +8h (Max)
Haupttreiber: PM-Aufwand bei 3-Monats-Projekt mit mehreren Stakeholdern ist erfahrungsgemäss höher.
3. Gesamtübersicht
| Pos. |
Beschreibung |
Offerte (h) |
Min (h) |
Mitte (h) |
Max (h) |
Offerte CHF |
Mitte CHF |
| 1 |
Basics |
54 |
53 |
61 |
68 |
8'100 |
9'150 |
| 2 |
Kalktool |
92 |
88 |
102 |
116 |
13'800 |
15'300 |
| 3 |
Materialmanagement 1 |
52 |
50 |
58 |
66 |
7'800 |
8'700 |
| 4 |
Materialmanagement 2 |
60 |
60 |
70 |
80 |
9'000 |
10'500 |
| 5 |
Wiki-Anbindung |
44 |
44 |
54 |
64 |
6'600 |
8'100 |
| 6 |
Azure-Migration |
10 |
8 |
10 |
12 |
1'500 |
1'500 |
| 7 |
Projektmanagement |
18 |
20 |
23 |
26 |
2'700 |
3'450 |
|
Gesamt |
330 |
323 |
378 |
432 |
49'500 |
56'700 |
Zusammenfassung
| Szenario |
Stunden |
CHF (à 150/h) |
Differenz zur Offerte |
| Offerte (Kostendach) |
330 |
49'500 |
-- |
| Eigene Schätzung (Minimum) |
323 |
48'450 |
-2% |
| Eigene Schätzung (Mitte) |
378 |
56'700 |
+15% |
| Eigene Schätzung (Maximum) |
432 |
64'800 |
+31% |
4. Risikobewertung
Risikomatrix
| # |
Risiko |
Wahrscheinlichkeit |
Auswirkung |
Betroffene Pos. |
Möglicher Mehraufwand |
| R1 |
Matching-Engine komplexer als erwartet |
Hoch |
Hoch |
2.2 |
+10-15h |
| R2 |
Wiki-System ohne API |
Mittel |
Hoch |
5.1, 5.3 |
+10-20h |
| R3 |
ERP-Datenqualität mangelhaft |
Mittel |
Mittel |
1.5, 2.2, 3.1, 4.1 |
+8-16h |
| R4 |
Preprocessor-Erweiterung aufwändiger |
Mittel |
Mittel |
1.5, 3.1, 4.1 |
+8-12h |
| R5 |
Frontend-Aufwand unterschätzt |
Mittel |
Gering |
1.2, 1.4 |
+4-8h |
| R6 |
KI-Modell-Qualität für SQL-Generierung |
Gering |
Mittel |
3, 4 |
+4-8h |
Synergien (Aufwandsreduktion durch bestehende Komponenten)
| Synergie |
Geschätzte Einsparung |
Betroffene Pos. |
| KnowledgeService/RAG existiert produktiv |
20-30h |
Pos. 5 |
| ChatbotDocument-Modell existiert |
4-6h |
Pos. 1.4, 2.1 |
| LangGraph modular erweiterbar |
6-10h |
Pos. 3, 4, 5 |
| Prompt-Engineering über DB-Config |
2-4h |
Pos. 1.1, 3.2, 4.2 |
| Excel-Export-Pattern existiert |
2-4h |
Pos. 2.5 |
| Gesamt Einsparung |
34-54h |
|
5. Empfehlungen
5.1 Zur Offerte
Die Offerte mit 330h als Kostendach ist ambitioniert, aber bei idealem Verlauf erreichbar. Die grössten Risiken liegen in:
- Position 2 (Kalktool): Die Matching-Engine ist die komplexeste Neuentwicklung
- Position 5 (Wiki): Komplett abhängig vom Wiki-System, das noch unklärt ist
Empfehlung: Offerte bei 330h als Kostendach belassen, aber intern mit 370-380h planen. Die Differenz (~40-50h) als interne Reserve einkalkulieren.
5.2 Priorisierung
- Must-Have (Prio 1): Pos. 1 (Basics) + Pos. 6 (Azure-Migration) -- Voraussetzung für alles
- High-Value (Prio 2): Pos. 2 (Kalktool) -- Höchster Kundennutzen, aber auch höchstes Risiko
- Quick-Win (Prio 3): Pos. 3+4 (Materialmanagement) -- Nutzen vorhandene Architektur
- Abhängig (Prio 4): Pos. 5 (Wiki) -- Erst nach Wiki-Klärung starten
5.3 Offene Punkte (vor Projektstart zu klären)
| # |
Offener Punkt |
Verantwortlich |
Kritisch für |
| O1 |
Wiki-System und Zugangsart klären |
Althaus (Samuel) |
Pos. 5 |
| O2 |
ERP-System identifizieren und Datenstrukturen dokumentieren |
Althaus (Stefan) |
Pos. 1.5, 3.1, 4.1 |
| O3 |
Preprocessor-Code-Review für Erweiterbarkeit |
PowerOn (Entwicklung) |
Pos. 1.5, 3.1, 4.1 |
| O4 |
Kalktool-Vorlage erhalten und analysieren |
Althaus (Reto) |
Pos. 2.5 |
| O5 |
Muster-Stücklisten für Matching-Test |
Althaus (Reto) |
Pos. 2.2 |
| O6 |
Azure-Subscription-Details |
Althaus |
Pos. 6 |
6. Zeitplan (2 Entwickler)
Woche 1-2: Kick-off + Azure-Migration (Pos. 6) + Basics 1.1-1.3
Entwickler A: Azure-Migration + 1.1 (Gesperrte Artikel)
Entwickler B: 1.2 (Chat-Verlauf Frontend) + 1.3 (Lange Antworten)
Woche 2-5: Basics 1.4-1.6 (Grundlage für Use Cases)
Entwickler A: 1.4 (File-Upload Full-Stack)
Entwickler B: 1.5 (Kundenartikelnummern + Preprocessor)
Woche 4-9: Kalktool (Pos. 2) -- längster Block, früh starten
Entwickler A: 2.1-2.2 (Upload + Matching-Engine)
Entwickler B: 2.3-2.5 (Feldergänzung + Export)
Woche 6-9: Materialmanagement 1+2 (Pos. 3+4) -- parallel zum Kalktool
Entwickler B: 3.1-3.4 + 4.1-4.5 (Preprocessor + Prompts)
(Entwickler A bleibt auf Kalktool)
Woche 9-12: Wiki-Anbindung (Pos. 5) -- nach Klärung des Wiki-Systems
Entwickler A: 5.1-5.2 (Connector + RAG-Integration)
Entwickler B: 5.3 (Delta-Sync) + Integrationstests
Woche 12-13: Integrationstests, UAT, Go-Live (Pos. 7.3)
Beide Entwickler: E2E-Tests + Deployment + Monitoring
Gesamtdauer: 12-14 Wochen
Kritischer Pfad: Pos. 1 → Pos. 2 (Kalktool braucht Upload + Kundenartikelnummern)
Dokument erstellt auf Basis der Code-Analyse des Gateway-Repository (Stand 13.04.2026)