[{"data":1,"prerenderedAt":210},["ShallowReactive",2],{"case-study-de-ale-business-bookkeeping":3,"case-study-related-de-ale-business-bookkeeping":186},{"id":4,"title":5,"card":6,"diagrams":12,"extension":28,"eyebrow":29,"facts":30,"intro":40,"layout":41,"locale":60,"meta":61,"order":62,"results":63,"slug":76,"stem":77,"storySections":78,"techGroups":90,"__hash__":185},"caseStudies\u002Fcase-studies\u002Fde\u002Fale-business-bookkeeping.json","AWS-Architektur für Buchhaltung per Chat, mit einem LLM-Harness",{"title":7,"badges":8,"thumb":11},"Buchhaltung per Chat",[9,10],"LLM-Harness","Amazon Bedrock","\u002Fcase-studies\u002Fale-business-bookkeeping\u002Fsystem-architecture.webp",[13,16,20,24],{"src":11,"alt":14,"caption":15},"Systemarchitektur: Chat, Finanz-API und LLM-Harness in einer EU-Region","Die Systemarchitektur.",{"src":17,"alt":18,"caption":19},"\u002Fcase-studies\u002Fale-business-bookkeeping\u002Fllm-harness.webp","LLM-Harness: von der Chatnachricht zur korrekten Buchung","Das LLM-Harness. Das Modell schreibt nie direkt ins Journal.",{"src":21,"alt":22,"caption":23},"\u002Fcase-studies\u002Fale-business-bookkeeping\u002Finvoice-pipeline.webp","Rechnungspipeline: korrekt vor dem Versand, unveränderlich danach","Die Rechnungspipeline, darunter die Datenschutz- und Backup-Ebene.",{"src":25,"alt":26,"caption":27},"\u002Fcase-studies\u002Fale-business-bookkeeping\u002Fcore-stack.webp","Kern-Stack","","json","Case Study · ale.business",[31,34,37],{"label":32,"value":33},"Branche","Finanzen, Buchhaltung",{"label":35,"value":36},"Meine Rolle","Architektur, LLM-Harness, Rechnungspipeline",{"label":38,"value":39},"Schwerpunkt","Datenschutz, Korrektheit, Automatisierung","Finanzlösungen für kleine Unternehmen. Ausgaben buchen und Rechnungen versenden, indem man eine Chatnachricht schreibt. Das LLM schlägt vor, deterministischer Code entscheidet.",[42,44,46,49,51,53,54,56,58],{"type":43},"header",{"type":45},"results",{"type":47,"index":48},"section",0,{"type":50,"index":48},"diagram",{"type":50,"index":52},1,{"type":47,"index":52},{"type":50,"index":55},2,{"type":57},"technology",{"type":50,"index":59},3,"de",{},4,[64,68,72],{"tag":65,"title":66,"body":67},"Automatisierung","Buchhaltung aus einer Chatnachricht","Schreiben, was passiert ist, Beleg anhängen. Das Harness macht daraus eine korrekte Buchung oder fragt nach.",{"tag":69,"title":70,"body":71},"Korrektheit","Rechnungen gehen korrekt und automatisch raus","Nummeriert, geprüft und archiviert, bevor irgendetwas das System verlässt.",{"tag":73,"title":74,"body":75},"Datenschutz","Finanzdaten bleiben geschützt","Nur EU-Region, durchgehend verschlüsselt, gesichert und vollständig auditierbar.","ale-business-bookkeeping","case-studies\u002Fde\u002Fale-business-bookkeeping",[79,86],{"heading":80,"paragraphs":81},"Die Geschichte",[82,83,84,85],"Buchhaltung ist der Teil am eigenen Unternehmen, den niemand machen will. ale.business macht daraus ein Gespräch: \"49 € für Software bezahlt\" schreiben und den Beleg anhängen, oder eine Rechnung an einen Kunden anfordern, den Rest erledigt das System.","Ein LLM allein ist für Finanzen nicht gut genug. Es kann einen Betrag falsch lesen, den falschen Steuersatz wählen oder ein Konto erfinden. Deshalb habe ich ein Harness darum gebaut: Bedrock liefert nur einen strukturierten Vorschlag, und Python-Code prüft Schema, doppelte Buchführung, Steuerregeln und Dubletten, bevor etwas gebucht wird. Unklare Fälle gehen im Chat an den Nutzer zurück.","Rechnungen folgen demselben Prinzip. Jede bekommt eine lückenlose Nummer, wird auf Pflichtangaben und Summen geprüft, als PDF und E-Rechnung erzeugt, über SES versendet und in S3 mit Object Lock archiviert, sodass sie danach nicht mehr geändert werden kann.","Weil es Finanzdaten sind, hat der Datenschutz jede Entscheidung geprägt: alles läuft in der Region Frankfurt, Daten sind mit KMS verschlüsselt, Backups sind verschlüsselt und bleiben in der EU, und CloudTrail protokolliert jeden Zugriff.",{"heading":87,"paragraphs":88},"Rechnungsstellung",[89],"Eine Rechnung ist ein rechtliches Dokument, und die Pipeline behandelt sie auch so. Schlägt eine Prüfung fehl, geht nichts raus und der Nutzer bekommt im Chat einen konkreten Hinweis, was zu korrigieren ist.",[91,118,140,168],{"title":92,"items":93},"Anwendung",[94,100,106,110,114],{"name":95,"role":96,"icon":97,"icons":98},"Nuxt, Vue","Chat und Web-App","\u002Ficons\u002Ftech\u002Fnuxt.svg",[97,99],"\u002Ficons\u002Ftech\u002Fvuejs.svg",{"name":101,"role":102,"icon":103,"icons":104},"Python, FastAPI","Finanz-API, LLM-Harness","\u002Ficons\u002Ftech\u002Fpython.svg",[103,105],"\u002Ficons\u002Ftech\u002Ffastapi.svg",{"name":107,"role":108,"icon":109},"Amazon EC2","App- und Harness-Server","\u002Ficons\u002Faws\u002FAmazon-EC2.svg",{"name":111,"role":112,"icon":113},"Amazon DynamoDB","Journal ohne Änderung, Rechnungsnummern","\u002Ficons\u002Faws\u002FAmazon-DynamoDB.svg",{"name":115,"role":116,"icon":117},"Amazon S3","Belege, Rechnungsarchiv mit Object Lock","\u002Ficons\u002Faws\u002FAmazon-S3.svg",{"title":119,"items":120},"KI und Automatisierung",[121,124,128,132,136],{"name":10,"role":122,"icon":123},"LLM und Guardrails in der EU-Region","\u002Ficons\u002Faws\u002FAmazon-Bedrock.svg",{"name":125,"role":126,"icon":127},"AWS Lambda","Rechnungs-Worker","\u002Ficons\u002Faws\u002FAWS-Lambda.svg",{"name":129,"role":130,"icon":131},"Amazon EventBridge","wiederkehrende Rechnungen, Mahnungen","\u002Ficons\u002Faws\u002FAmazon-EventBridge.svg",{"name":133,"role":134,"icon":135},"Amazon SES","Rechnungsversand","\u002Ficons\u002Faws\u002FAmazon-SES.svg",{"name":137,"role":138,"icon":139},"API Gateway","WebSocket-Chat","\u002Ficons\u002Faws\u002FAmazon-API-Gateway.svg",{"title":141,"items":142},"Sicherheit und Datenschutz",[143,147,151,157,164],{"name":144,"role":145,"icon":146},"Amazon Cognito","Login, MFA, Rollen","\u002Ficons\u002Faws\u002FAmazon-Cognito.svg",{"name":148,"role":149,"icon":150},"AWS IAM","Rollen nach Least Privilege","\u002Ficons\u002Faws\u002FAWS-IAM.svg",{"name":152,"role":153,"icon":154,"icons":155},"AWS KMS, Secrets Manager","Verschlüsselung, Zugangsdaten","\u002Ficons\u002Faws\u002FAWS-KMS.svg",[154,156],"\u002Ficons\u002Faws\u002FAWS-Secrets-Manager.svg",{"name":158,"role":159,"icon":160,"icons":161},"Amazon VPC, CloudFront, WAF","privates Netz, Edge, Schutz","\u002Ficons\u002Faws\u002FAmazon-VPC.svg",[160,162,163],"\u002Ficons\u002Faws\u002FAmazon-CloudFront.svg","\u002Ficons\u002Faws\u002FAWS-WAF.svg",{"name":165,"role":166,"icon":167},"AWS Backup","verschlüsselte Backups, nur EU","\u002Ficons\u002Faws\u002FAWS-Backup.svg",{"title":169,"items":170},"Delivery und Betrieb",[171,175,179],{"name":172,"role":173,"icon":174},"Docker","Container","\u002Ficons\u002Ftech\u002Fdocker.svg",{"name":176,"role":177,"icon":178},"GitHub Actions","CI\u002FCD","\u002Ficons\u002Ftech\u002Fgithubactions.svg",{"name":180,"role":181,"icon":182,"icons":183},"CloudWatch, CloudTrail","Observability, Audit-Trail","\u002Ficons\u002Faws\u002FAmazon-CloudWatch.svg",[182,184],"\u002Ficons\u002Faws\u002FAWS-CloudTrail.svg","krjJsPv_7hNwpW2vyLaivsm3QlTnxIMLPp96cwWZewM",[187,195,203],{"slug":188,"card":189},"kv-cache-storage-tiering",{"title":190,"badges":191,"thumb":194},"KV-Cache-Storage-Tiering",[192,193],"vLLM","LMCache","\u002Fcase-studies\u002Fkv-cache-storage-tiering\u002Ftier-hierarchy.webp",{"slug":196,"card":197},"live-product-data-pipeline",{"title":198,"badges":199,"thumb":202},"Live-Produktdaten-Pipeline",[200,201],"Kafka Streams","Amazon MSK","\u002Fcase-studies\u002Flive-product-data-pipeline\u002Fafter.webp",{"slug":204,"card":205},"product-classification",{"title":206,"badges":207,"thumb":209},"Produktklassifizierung mit MLOps",[10,208],"PyTorch","\u002Fcase-studies\u002Fproduct-classification\u002Ftraining-pipeline.webp",1790607906794]