Open-Source Demo für automatisierte KI-gestützte Angebotserstellung mit n8n und AWS Bedrock Claude 3.5 Sonnet. Produziert strukturierte Angebots-JSONs aus Kundenanfragen.
Blogpost: KI-Angebotserstellung mit Bedrock & n8n
Diese Demo automatisiert die Angebotserstellung für B2B-Dienstleistungen:
Webhook (CRM/Form)
↓
n8n Validation & Orchestration
↓
AWS Bedrock Claude (Textgenerierung)
↓
Strukturiertes Angebots-JSON
↓
PDF/E-Mail (optional)
graph LR
A["📋 Kundenanfrage<br/>Webhook/CRM"] --> B["✅ n8n Validation<br/>Pflichtfelder Check"]
B --> C["🤖 AWS Bedrock<br/>Claude 3.5 Sonnet"]
C --> D["📄 JSON Angebot<br/>Leistungen + Kosten"]
D --> E["📧 Optional:<br/>PDF + E-Mail"]
style A fill:#e1f5ff
style B fill:#fff3e0
style C fill:#f3e5f5
style D fill:#e8f5e9
style E fill:#fce4ec
{
"angebotsnummer": "ANG-2026-0042",
"datum": "2026-02-28",
"gueltig_bis": "2026-03-30",
"projektbeschreibung": "Wir entwickeln eine KI-gestützte Pipeline zur automatischen Verarbeitung Ihrer Eingangsrechnungen...",
"leistungen": [
{
"titel": "Anforderungsanalyse & Konzeption",
"beschreibung": "Workshop zur Analyse Ihrer Rechnungsprozesse...",
"tage": 2,
"tagessatz": 1200
}
],
"gesamtpreis_netto": 18900,
"mwst_satz": 19,
"mwst": 3591,
"gesamtpreis_brutto": 22491,
"zeitraum": "4-5 Wochen",
"zahlungsbedingungen": "50% bei Auftragserteilung, 50% nach Fertigstellung"
}- Docker & Docker Compose (v23+)
- AWS Bedrock Access (Claude 3.5 Sonnet Model)
- AWS IAM Credentials mit entsprechenden Berechtigungen
- curl oder Postman für Webhook-Tests
- Node 18+ (für lokale n8n CLI-Befehle, optional)
# Repository klonen
git clone https://github.com/vibtellect/quote-generation-automation.git
cd quote-generation-automation
# .env aus Template erstellen
make setupDann .env mit AWS-Credentials und Firmendaten füllen:
# .env
AWS_ACCESS_KEY_ID=AKIA...
AWS_SECRET_ACCESS_KEY=...
AWS_REGION=eu-central-1
COMPANY_NAME=BOJATSCHKIN LTD
COMPANY_EMAIL=info@bojatschkin.demake upErgebnis: n8n läuft auf http://localhost:5680
make smokeErwartet: HTTP 200 auf http://localhost:5680
- Browser:
http://localhost:5680öffnen - Workflows → Import from File
workflows/quote-generation.jsonauswählen- AWS Bedrock Node: Credentials setzen
- Workflow aktivieren
# KI-Chatbot (SMB, 15-25k Budget)
curl -X POST http://localhost:5680/webhook/quote-generation \
-H "Content-Type: application/json" \
-d @demo-data/anfrage-chatbot.json
# Dokumentenverarbeitung (Enterprise, 50-80k Budget)
curl -X POST http://localhost:5680/webhook/quote-generation \
-H "Content-Type: application/json" \
-d @demo-data/anfrage-dokumentenverarbeitung.json
# Datenanalyse (Mittelstand, 20-35k Budget)
curl -X POST http://localhost:5680/webhook/quote-generation \
-H "Content-Type: application/json" \
-d @demo-data/anfrage-datenanalyse.jsonIm demo-data/ Verzeichnis stehen 3 realistische Kundenanfragen zur Verfügung:
Datei: demo-data/anfrage-chatbot.json
{
"firma": "Nordwerk GmbH",
"kontakt": {
"name": "Klaus-Dieter Hoffmann",
"email": "hoffmann@nordwerk.example.de",
"telefon": "+49 40 5551234"
},
"projektart": "KI-Chatbot für Kundenservice",
"anforderungen": "Online-Shop mit 2.000 Bestellungen/Tag, Support-Team mit 8 Personen...",
"budget": "15.000 - 25.000 EUR",
"zeitrahmen": "Go-Live Q3 2026"
}Erwartetes Output:
- Angebotsnummer:
ANG-2026-XXXX - Leistungen: Anforderungsanalyse, Chatbot-Entwicklung, Zendesk-Integration, Testing
- Gesamtpreis: ~18-22k EUR (netto)
- Zeitraum: 4-5 Wochen
Datei: demo-data/anfrage-dokumentenverarbeitung.json
{
"firma": "Bayerische Logistik Gruppe",
"kontakt": {
"name": "Dr. Andreas Bergmann",
"email": "bergmann@blg-logistics.example.de",
"telefon": "+49 89 7777-100"
},
"projektart": "KI-Dokumentenverarbeitung",
"anforderungen": "4.000 Eingangsrechnungen/Monat, OCR + KI-Extraktion, SAP-Integration...",
"budget": "50.000 - 80.000 EUR (Pilot + Rollout)",
"zeitrahmen": "Pilot ab Q2 2026, Rollout Q4 2026"
}Erwartetes Output:
- Angebotsnummer:
ANG-2026-XXXX - Leistungen: Analyse, Textract/Bedrock-Integration, SAP-Mapping, Testing
- Gesamtpreis: ~48-65k EUR (netto)
- Zeitraum: 8-12 Wochen (Pilot + Rollout)
Datei: demo-data/anfrage-datenanalyse.json
{
"firma": "Musterfirma GmbH",
"kontakt": {
"name": "Max Mustermann",
"email": "max@musterfirma.example.de",
"telefon": "+49 123 456789"
},
"projektart": "KI-gestützte Datenanalyse",
"anforderungen": "Snowflake Data Warehouse, Vorhersagen für Churn & Cross-Selling, wöchentliches Dashboard...",
"budget": "20.000 - 35.000 EUR",
"zeitrahmen": "Start ab April 2026"
}Erwartetes Output:
- Angebotsnummer:
ANG-2026-XXXX - Leistungen: Data Exploration, Modellentwicklung, Dashboard, Dokumentation
- Gesamtpreis: ~20-28k EUR (netto)
- Zeitraum: 5-7 Wochen
POST /webhook/quote-generation
Content-Type: application/json
{
"firma": "string - Firmenname",
"projektart": "string - Art des Projekts (z.B. 'KI-Chatbot', 'Dokumentenverarbeitung')",
"anforderungen": "string - Detaillierte Anforderungsbeschreibung",
"kontakt": {
"name": "string - Ansprechpartner",
"email": "string - E-Mail",
"telefon": "string - Telefonnummer (optional)"
},
"budget": "string - Budget-Rahmen (z.B. '15.000 - 25.000 EUR')",
"zeitrahmen": "string - Zeitrahmen (z.B. 'Q3 2026')"
}{
"success": true,
"angebotsnummer": "ANG-2026-0042",
"datum": "2026-02-28",
"gueltig_bis": "2026-03-30",
"projektbeschreibung": "...",
"leistungen": [...],
"gesamtpreis_netto": 18900,
"gesamtpreis_brutto": 22491,
"mwst": 3591,
"zeitraum": "4-5 Wochen"
}{
"success": false,
"error": "Pflichtfelder fehlen: firma, projektart",
"status": 400
}Format: ANG-{YYYY}-{ID} (z.B. ANG-2026-0042)
YYYY= aktuelles JahrID= 4-stellige, inkrementelle ID
| Feld | Typ | Beispiel |
|---|---|---|
angebotsnummer |
string | ANG-2026-0042 |
datum |
ISO date | 2026-02-28 |
gueltig_bis |
ISO date | 2026-03-30 (+30 Tage) |
projektbeschreibung |
string | Professionelle Zusammenfassung (3-4 Sätze) |
leistungen[].titel |
string | z.B. "Anforderungsanalyse & Konzeption" |
leistungen[].beschreibung |
string | Details der Leistung |
leistungen[].tage |
number | Realistische Schätzung (z.B. 5) |
leistungen[].tagessatz |
number | EUR/Tag (1200-1500 für Senior) |
gesamtpreis_netto |
number | Summe aller Leistungen (EUR) |
mwst_satz |
number | 19 |
mwst |
number | 19% auf Netto |
gesamtpreis_brutto |
number | Netto + MwSt |
zeitraum |
string | z.B. "4-6 Wochen" |
zahlungsbedingungen |
string | "50% bei Auftragserteilung, 50% nach Fertigstellung" |
anmerkungen |
string | Optionale Hinweise (z.B. Skalierungshinweise) |
KI-Chatbot:
- Anforderungsanalyse (1-2 Tage)
- Chatbot-Entwicklung (5-7 Tage)
- Integration (Zendesk/Shopify, 2-3 Tage)
- Testing & Deployment (2-3 Tage)
Dokumentenverarbeitung:
- Analyse & Konzeption (2-3 Tage)
- Textract/Bedrock Integration (3-5 Tage)
- n8n Workflow (2-3 Tage)
- Testing & Deployment (2-3 Tage)
Datenanalyse:
- Data Exploration (2-3 Tage)
- Modellentwicklung (5-7 Tage)
- Dashboard-Entwicklung (3-5 Tage)
- Dokumentation & Schulung (2-3 Tage)
make setup # .env aus .env.example erstellen
make up # Docker Compose starten (Hintergrund)
make down # Container stoppen & entfernen
make logs # Live-Logs folgen
make smoke # Health Check (n8n erreichbar?)
make import # Workflow in laufendes n8n importieren (Vorbereitung)quote-generation-automation/
├── README.md # Dieses Dokument
├── LICENSE # MIT License
├── Makefile # Automation Targets
├── docker-compose.yml # n8n + Volumes
├── .env.example # Template für Umgebungsvariablen
├── .gitignore # Git-Ignorier-Muster
├── iam/
│ └── n8n-automation-policy.json # AWS IAM Policy für n8n
├── workflows/
│ └── quote-generation.json # n8n Workflow (importierbar)
├── prompts/
│ └── quote-writer.txt # System-Prompt für Claude
├── templates/
│ └── angebot-template.html # HTML-Template für PDF (optional)
└── demo-data/
├── anfrage-chatbot.json # Demo: KI-Chatbot (SMB)
├── anfrage-dokumentenverarbeitung.json # Demo: Dokumentenverarbeitung (Enterprise)
└── anfrage-datenanalyse.json # Demo: Datenanalyse (Mittelstand)
Siehe iam/n8n-automation-policy.json.
Erforderliche AWS-Services:
| Service | Aktion | Grund |
|---|---|---|
| Bedrock | InvokeModel, InvokeModelWithResponseStream |
Claude 3.5 Sonnet API Calls |
| S3 | GetObject, PutObject, ListBucket |
Optional: Angebot speichern |
| Lambda | InvokeFunction |
Optional: PDF-Generierung |
| SES/SMTP | SendEmail, SendRawEmail |
E-Mail-Versand |
| CloudWatch Logs | GetLogEvents |
Debugging |
| SSM Parameter Store | GetParameter |
Secrets-Management |
Wichtig: Policy enthält auch explizite Denies für destruktive Operationen (IAM, S3-Bucket-Löschung, CloudFormation Stack-Löschung, etc.).
| Komponente | Technologie |
|---|---|
| Automation Engine | n8n 1.76+ |
| LLM | AWS Bedrock Claude 3.5 Sonnet |
| Containerization | Docker & Docker Compose |
| Optional: PDF | wkhtmltopdf / puppeteer |
| Optional: E-Mail | SMTP / AWS SES |
| Optional: Storage | AWS S3 |
- Input: $3 pro 1M Tokens
- Output: $15 pro 1M Tokens
- Durchschnitt pro Angebot: ~2-5k Input + 1-2k Output Tokens = ~0,02-0,05 EUR
Monatlich (100 Angebote): ~2-5 EUR
- Self-hosted Docker: Kostenlos
- Cloud (n8n.cloud): ab $25/Monat
- AWS SES: $0,10 pro 1.000 Mails
- SMTP (Gmail App): Kostenlos (unter Limits)
- PDF-Generierung: Integriert (n8n) oder external (z.B. Pdfshift: $0,01-0,05/PDF)
1. Webhook POST /webhook/quote-generation
↓
2. Validation Node
- Pflichtfelder prüfen (firma, projektart, anforderungen, kontakt)
- Fehlerbehandlung → 400 Bad Request
↓
3. AWS Bedrock Node
- Input: firma, projektart, anforderungen, budget, kontakt
- System-Prompt: quote-writer.txt
- Output: JSON mit Leistungen, Preisen, Zeitraum
↓
4. JSON Parsing
- Bedrock-Response parsen
- Feldvalidierung
↓
5. Optional: HTML/PDF Generation
- angebot-template.html mit JSON-Daten rendern
- In PDF umwandeln (wkhtmltopdf)
↓
6. Optional: E-Mail Versand
- PDF anhängen
- SMTP/SES versenden
↓
7. Response / Storage
- JSON zurück an Webhook-Caller
- Optional: S3 speichern für Archiv
# Container-Status prüfen
docker compose ps
# Logs ansehen
make logs
# Container neu starten
make down
make up- Bedrock-Zugang aktiviert? → AWS Console: Bedrock → Model access
- Claude 3.5 Sonnet verfügbar? →
eu-central-1oderus-east-1? - Credentials korrekt in .env? →
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY - IAM Policy attached? →
iam/n8n-automation-policy.json
- Bedrock Node überprüfen: Credentials, Modell-ID
- Input-Validierung: Alle Pflichtfelder vorhanden?
- Logs ansehen:
make logs | grep error
- Bedrock-Prompt überprüfen:
prompts/quote-writer.txt - Model-Version: Cloud-Update möglich (n8n auto-updated)
- Test mit einfacher Anfrage starten
- Blog: KI-Angebotserstellung mit Bedrock & n8n
- Website: bojatschkin.de
- n8n Docs: https://docs.n8n.io
- AWS Bedrock: https://docs.aws.amazon.com/bedrock/
- Claude 3.5 Sonnet: https://www.anthropic.com/claude
MIT License © 2026 Vitalij Bojatschkin / BOJATSCHKIN LTD
Siehe LICENSE für Details.
Diese Demo ist ein Proof-of-Concept für KI-gestützte Angebotserstellung. Sie ist nicht für produktive Kundengenerierung ohne weitere Validierung geeignet:
- Fachliche Preislogik muss branchenspezifisch kalibriert werden
- Freigabeprozesse sollten für echte Angebote integriert sein
- Compliance (DSGVO, Audit-Trail): Kundenanfragen loggen & speichern empfohlen
- Genauigkeit: Bedrock-Output sollte vor Versand vom Vertrieb überprüft werden
- Liabilities: Automatisch erzeugte Angebote tragen Geschäftsrisiken — Haftungsfreistellung überprüfen
Für produktive Implementierung: Kontakt aufnehmen oder Erstgespräch buchen
- Bug Reports: GitHub Issues
- Diskussionen: GitHub Discussions
- Beratung: https://bojatschkin.de
Made with ❤️ by Vitalij Bojatschkin