[{"data":1,"prerenderedAt":213},["ShallowReactive",2],{"case-study-de-property-management-platform":3,"case-study-related-de-property-management-platform":189},{"id":4,"title":5,"card":6,"diagrams":12,"extension":28,"eyebrow":29,"facts":30,"intro":40,"layout":41,"locale":60,"meta":61,"order":59,"results":62,"slug":75,"stem":76,"storySections":77,"techGroups":89,"__hash__":188},"caseStudies\u002Fcase-studies\u002Fde\u002Fproperty-management-platform.json","AWS-Architektur für eine mandantenfähige Hausverwaltungs-Plattform mit KI-Workflows",{"title":7,"badges":8,"thumb":11},"Mandantenfähige Hausverwaltungs-Plattform",[9,10],"Mandantenfähigkeit","Amazon Bedrock","\u002Fcase-studies\u002Fproperty-management-platform\u002Fsystem-architecture.webp",[13,16,20,24],{"src":11,"alt":14,"caption":15},"Systemarchitektur: Web-App, API und KI-Agenten in einem AWS-Konto","Die Systemarchitektur.",{"src":17,"alt":18,"caption":19},"\u002Fcase-studies\u002Fproperty-management-platform\u002Fai-workflow.webp","KI-Workflow: eine Schadensmeldung, von der Nachricht bis zum terminierten Handwerker","Der Workflow zur Schadensmeldung. Dasselbe Muster bedient Fragen zu Abrechnungen, Dokumenten und Terminen.",{"src":21,"alt":22,"caption":23},"\u002Fcase-studies\u002Fproperty-management-platform\u002Faccess-model.webp","Zugriffsmodell: fünf Rollen, ein Regelwerk, vier Schichten der Durchsetzung","Rollen und Berechtigungen je Organisation.",{"src":25,"alt":26,"caption":27},"\u002Fcase-studies\u002Fproperty-management-platform\u002Fcore-stack.webp","Kern-Stack","","json","Case Study · Builders & Creatives",[31,34,37],{"label":32,"value":33},"Branche","Immobilien, Hausverwaltung",{"label":35,"value":36},"Meine Rolle","Architektur, Full-Stack-Entwicklung, KI-Workflows",{"label":38,"value":39},"Schwerpunkt","Mandantenfähigkeit, LLM-Integration, AWS","Software für Hausverwaltungen, Eigentümer, Mieter und Hausmeister. Eine Web-App, ein gehostetes LLM im eigenen AWS-Konto und KI-Agenten, die die Routinearbeit übernehmen.",[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",{},[63,67,71],{"tag":64,"title":65,"body":66},"KI-Workflows","Routineanfragen erledigt die KI","Mieteranfragen werden von Agenten eingeordnet, beantwortet und weitergeleitet. Alles, was zählt, gibt ein Mensch frei.",{"tag":68,"title":69,"body":70},"Sicherheit","Strikte Trennung zwischen Organisationen","Jeder Nutzer sieht genau seine Daten, durchgesetzt im Token, in der API, in der Datenbank und im Speicher.",{"tag":72,"title":73,"body":74},"Datenschutz","Das LLM bleibt im AWS-Konto","Die Modelle laufen auf Bedrock mit Guardrails. Objektdaten gehen nicht an Dritte.","property-management-platform","case-studies\u002Fde\u002Fproperty-management-platform",[78,85],{"heading":79,"paragraphs":80},"Die Geschichte",[81,82,83,84],"Hausverwaltung läuft über Nachrichten: eine kaputte Heizung, eine Frage zur Nebenkostenabrechnung, ein Mietvertrag, den jemand bis Freitag braucht. Verwalter, Eigentümer, Mieter und Hausmeister brauchen dieselben Informationen, aber jeder soll nur seinen Teil davon sehen.","Ich habe die Plattform als mandantenfähiges SaaS auf AWS entworfen. Eine Nuxt-Web-App und eine Python-API laufen in Docker auf EC2 in einer privaten VPC, hinter CloudFront und einem Load Balancer. Cognito stellt Token mit Rolle und Organisations-ID aus, und diese ID begleitet jeden Request bis in die Row-Level Security von PostgreSQL und die S3-Präfixe je Organisation.","Darüber liegt die KI-Schicht. Die API legt Anfragen in eine SQS-Queue, ein Lambda-Agent ruft Bedrock auf und arbeitet eine Reihe von Werkzeugen ab: die Einheit nachschlagen, die Dokumente durchsuchen, die Fotos auswerten, das Ticket entwerfen. Step Functions führen die längeren Workflows aus, einschließlich der Freigabe, bei der ein Verwalter bestätigt, bevor etwas rausgeht.","Alles ist in CloudWatch beobachtbar, von der API-Latenz bis zu jedem Prompt, jedem Tool-Aufruf und den Token-Kosten, und der gesamte Stack wird über GitHub Actions ausgeliefert.",{"heading":9,"paragraphs":86},[87,88],"Jede Hausverwaltung ist eine eigene Organisation. Darin sehen fünf Rollen verschiedene Ausschnitte derselben Daten, und der KI-Assistent sieht immer nur das, was der aktuelle Nutzer sehen darf.","Der Zugriff wird in vier Schichten durchgesetzt statt einer einzigen anvertraut, damit ein Fehler allein in der App keine Daten einer anderen Organisation preisgeben kann.",[90,119,139,171],{"title":91,"items":92},"Anwendung",[93,99,105,111,115],{"name":94,"role":95,"icon":96,"icons":97},"Nuxt, Vue","Web-App für alle Rollen","\u002Ficons\u002Ftech\u002Fnuxt.svg",[96,98],"\u002Ficons\u002Ftech\u002Fvuejs.svg",{"name":100,"role":101,"icon":102,"icons":103},"Python, FastAPI","API, Geschäftslogik, KI-Werkzeuge","\u002Ficons\u002Ftech\u002Fpython.svg",[102,104],"\u002Ficons\u002Ftech\u002Ffastapi.svg",{"name":106,"role":107,"icon":108,"icons":109},"PostgreSQL on Amazon RDS","mandantenfähige Daten, Row-Level Security","\u002Ficons\u002Ftech\u002Fpostgresql.svg",[108,110],"\u002Ficons\u002Faws\u002FAmazon-RDS.svg",{"name":112,"role":113,"icon":114},"Amazon EC2","App-Server","\u002Ficons\u002Faws\u002FAmazon-EC2.svg",{"name":116,"role":117,"icon":118},"Amazon S3","Dokumente und Fotos","\u002Ficons\u002Faws\u002FAmazon-S3.svg",{"title":120,"items":121},"KI",[122,125,129,133],{"name":10,"role":123,"icon":124},"gehostetes LLM, Wissensbasis, Guardrails","\u002Ficons\u002Faws\u002FAmazon-Bedrock.svg",{"name":126,"role":127,"icon":128},"AWS Lambda","KI-Agent mit Werkzeugen","\u002Ficons\u002Faws\u002FAWS-Lambda.svg",{"name":130,"role":131,"icon":132},"AWS Step Functions","mehrstufige KI-Workflows","\u002Ficons\u002Faws\u002FAWS-Step-Functions.svg",{"name":134,"role":135,"icon":136,"icons":137},"Amazon SQS, Amazon SNS","Job-Queue, Benachrichtigungen","\u002Ficons\u002Faws\u002FAmazon-SQS.svg",[136,138],"\u002Ficons\u002Faws\u002FAmazon-SNS.svg",{"title":140,"items":141},"Sicherheit und Netzwerk",[142,146,150,154,161,165],{"name":143,"role":144,"icon":145},"Amazon Cognito","Nutzer, Rollen, Organisations-Claim","\u002Ficons\u002Faws\u002FAmazon-Cognito.svg",{"name":147,"role":148,"icon":149},"AWS IAM","Rollen nach Least Privilege","\u002Ficons\u002Faws\u002FAWS-IAM.svg",{"name":151,"role":152,"icon":153},"Amazon VPC","private Subnetze, Security Groups","\u002Ficons\u002Faws\u002FAmazon-VPC.svg",{"name":155,"role":156,"icon":157,"icons":158},"CloudFront, Route 53, WAF","Edge, DNS, Schutz","\u002Ficons\u002Faws\u002FAmazon-CloudFront.svg",[157,159,160],"\u002Ficons\u002Faws\u002FAmazon-Route-53.svg","\u002Ficons\u002Faws\u002FAWS-WAF.svg",{"name":162,"role":163,"icon":164},"Load Balancer","TLS, Routing","\u002Ficons\u002Faws\u002FElastic-Load-Balancing.svg",{"name":166,"role":167,"icon":168,"icons":169},"Secrets Manager, KMS","Zugangsdaten, Verschlüsselung","\u002Ficons\u002Faws\u002FAWS-Secrets-Manager.svg",[168,170],"\u002Ficons\u002Faws\u002FAWS-KMS.svg",{"title":172,"items":173},"Delivery und Betrieb",[174,180,184],{"name":175,"role":176,"icon":177,"icons":178},"Docker, Amazon ECR","Container, Image-Registry","\u002Ficons\u002Ftech\u002Fdocker.svg",[177,179],"\u002Ficons\u002Faws\u002FAmazon-ECR.svg",{"name":181,"role":182,"icon":183},"GitHub Actions","CI\u002FCD","\u002Ficons\u002Ftech\u002Fgithubactions.svg",{"name":185,"role":186,"icon":187},"Amazon CloudWatch","Logs, Metriken, Traces, Alarme","\u002Ficons\u002Faws\u002FAmazon-CloudWatch.svg","PeSzPPPPG9_ipQnk1KKoVSigVmUPieZVpBsLNNOh4PA",[190,197,205],{"slug":191,"card":192},"ale-business-bookkeeping",{"title":193,"badges":194,"thumb":196},"Buchhaltung per Chat",[195,10],"LLM-Harness","\u002Fcase-studies\u002Fale-business-bookkeeping\u002Fsystem-architecture.webp",{"slug":198,"card":199},"kv-cache-storage-tiering",{"title":200,"badges":201,"thumb":204},"KV-Cache-Storage-Tiering",[202,203],"vLLM","LMCache","\u002Fcase-studies\u002Fkv-cache-storage-tiering\u002Ftier-hierarchy.webp",{"slug":206,"card":207},"live-product-data-pipeline",{"title":208,"badges":209,"thumb":212},"Live-Produktdaten-Pipeline",[210,211],"Kafka Streams","Amazon MSK","\u002Fcase-studies\u002Flive-product-data-pipeline\u002Fafter.webp",1790607906468]