Enterprise Architecture Blueprint β the ktayl IARD Insurer IS
This is the authoritative functional target for the ktayl-solution IS. It models ktayl as a real commercial-lines / large-risk IARD insurer, so every product board, repo and roadmap item hangs off a named domain here. The detailed inventory lives in the Business Applications Catalog; the AI vision in the AI-First Operating Model. This page is the map.
Fine-grained target + the why: the Capability Map & Registry breaks the IS into 19 domains β ~150 capabilities (each mapped to our system, status, criticality, RTO/RPO) and frames priority against the four existential industry problems (insurability Β· margin Β· systemic accumulation Β· legacy/talent). Foundations: System of Record Β· Canonical Data Model.
New here? Start with πΊ Architecture at a Glance β the whole IS on one screen (value chain Β· legacy spine Β· shared platforms Β· foundations) with a reading path. This page is the detailed functional target behind it.
:::note Two-layer model β do not conflate ktayl-solution IS = the insurer's own information system (this blueprint). Retrieva is a separate product (RNCP cert / DORA third-party-risk) that merely runs on ktayl infrastructure β it is not a ktayl org system and appears nowhere in this blueprint. :::
1. Why a full functional architectureβ
An IARD/large-risk insurer does not run on a policy system alone. Its IS is 12 business domains plus 4 transversal layers. Mapping them explicitly is what turns "we have some apps" into "the business can actually run" β and it is where AI automation use-cases are found (per-domain pain points, not "where can we put a chatbot").
2. Functional architecture (target)β
ASSUREUR IARD / GRANDS RISQUES (ktayl)
ββββββββββββββββββββββ
β DISTRIBUTION / CRM β Broker portal Β· pipeline Β· DUA/binders
β Portals / API β commissions
ββββββββββββ¬βββββββββββ
β
ββββββββββββββΌβββββββββββββ
β UNDERWRITING / PRICING β Risk assessment Β· appetite Β· rating/quote
β Underwriting Workbench β referral / approval Β· portfolio compare
ββββββββββββββ¬βββββββββββββ
β
ββββββββββββββΌβββββββββββββ
β POLICY ADMINISTRATION β Contracts Β· endorsements Β· renewals
β (PAS) β
ββββββββββββββ¬βββββββββββββ
β
βββββββββββββββββββββββββΌββββββββββββββββββββββββ
βΌ βΌ βΌ
CLAIMS BILLING / FINANCE RISK ENGINEERING
FNOL Β· triage Premium Β· Γ©chΓ©ancier Prevention Β· site audits
reserves Β· recours encaissement Β· commissions inspections Β· recommendations
β β
ββββββββββββ¬βββββββββββββ
βΌ
REINSURANCE
Facultative / Treaty Β· cessions
recoveries Β· bordereaux
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
INTERNATIONAL PROGRAM MANAGEMENT
Master policy Β· local policies Β· network partners Β· cross-border premium/claims flows
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
DATA / ACTUARIAL COMPLIANCE / LEGAL ENTERPRISE IT
Reporting Β· Solvency II AML/KYC Β· sanctions IAM/SSO Β· ITSM/CMDB
reserving Β· exposure DORA Β· contract analysis M365-alt Β· cloud/k8s
accumulation Β· cat model observability Β· security Β· DevOps
ββββββββββββββ TRANSVERSAL LAYERS (serve every domain) ββββββββββββββ
DOCUMENTS (GED/OCR/IDP) Β· INTEGRATION (API GW/ESB/events/ETL/MFT/EDI)
MASTER DATA / RΓFΓRENTIELS (MDM) Β· AI / AUTOMATION
2b. Modernization architecture β the legacy core & the stranglerβ
The target above is not all clean greenfield microservices β that isn't how a real IARD insurer's IS exists. A real insurer runs a legacy core that still works (an old, authoritative, stored-procedure- heavy system on Oracle, SOAP interfaces, nightly batch) with a modern platform grown around it that wraps, intercepts and gradually strangles it β but rarely replaces it. This is the Strangler Fig + Anti-Corruption Layer pattern. On the ktayl IS it is delivered as Track C (Modernization Practice Lab) of the IS Build Roadmap, and it produces a real, needed business domain rather than a throwaway.
Where the legacy sits β a deliberate choice. Policy Administration is already modern (the live
ktayl-policy-service, #6), so the legacy is not policy. The legacy is a domain we need but haven't
built β Claims (#11) β so that wrapping it delivers a real capability. The legacy engine is
GlobalCore (globalcore-legacy): a deliberately-legacy carrier we own β Java 8 Β· SOAP Β· nightly
batch Β· stored procedures Β· Oracle Β· outside k8s Β· frozen β evolved to hold the Claims domain.
ββ LEGACY CORE (system of record β the domain we NEED, delivered via a legacy) β
β GlobalCore (globalcore-legacy) Β· Oracle Β· Java 8 / SOAP / batch / PL/SQL β
β OUTSIDE k8s (traditional infra) Β· FROZEN β wrapped, never modified β
β Holds the CLAIMS domain (claims Β· reserves Β· payments) + supporting refs β
βββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ACL translates SOAPβJSON + async batchβevents (CDC/Debezium β NATS)
βββββββββββββββββ΄βββ STRANGLER / ACL (the modern wrap = delivers the domain) βββββ
β ktayl-claims (#11) = the modern Claims capability, built AS the ACL/strangler β
β over GlobalCore β SOAPβJSON, batchβevents, read-model, workbench, AI tools β
βββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β clean domain events on NATS
βββββββββββββββββ΄βββ MODERN PLATFORM (greenfield β NOT wrapped) ββββββββββββββββββ
β ktayl-policy-service (#6, live PAS) Β· underwriting #12 Β· distribution Β· β
β finance Β· reinsurance Β· compliance β Postgres per service Β· Authentik Β· Kargo β
βββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β consume ONLY via ACL APIs + events (never raw legacy access)
βββββββββββββββββ΄βββ DATA + AI (read-through the ACL) ββββββββββββββββββββββββββββ
β Data Platform (#5, OLAP/BI) Β· AI: RAG(docs) + approved SQL-tools(data) β
β AI Ops Copilot (#19) β LAST, once domains hold real data β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The alignment rules:
- The legacy is the authoritative record for its domain; nothing writes around it β modern code reaches it only through the ACL (SOAP + CDC).
- The legacy delivers a domain we need but haven't built (Claims) β not a duplicate of something already modern (Policy is modern; don't wrap it).
- The legacy is FROZEN β you wrap/intercept/strangle it (SOAPβJSON, batchβevents), you never add modern capability inside it.
- CDC-over-polling β legacy changes become NATS events (Debezium); consumers react.
- AI reaches structured data only via approved SQL-tools behind the ACL; documents via RAG β never the LLM on the legacy, never an identity bypass.
- Legacy runs on traditional infra (outside k8s) β GlobalCore + Oracle as containers on the controller, mirroring "legacy core + modern k8s platform" and keeping Oracle off the constrained cluster.
Most domains are still greenfield-modern (underwriting #12, distribution, finance, β¦). The legacy spine is one deliberate initiative (Claims via GlobalCore), not the shape of every domain β it exists to build the real legacy-integration skill that modernizing enterprises need.
Full detail β the Oracle + GlobalCore evolution, the SOAP/batch wrap, the CDC/ACL seams β is in
Legacy-Core Modernization and the wrapper initiative spec
(ktayl-integration/docs/legacy-wrapper-initiative-spec.md).
3. Gap analysis β target vs deployed reality (verified on-cluster, 2026-09-14)β
This is the honest status from what's actually running (every Deployment/StatefulSet across all namespaces), not just what has a repo/board. Status: π’ deployed & serving Β· π‘ partial (platform up or repo exists, business capability not built/configured) Β· π΄ nothing running.
The 12 domainsβ
| # | Domain | Board | Deployed reality | Status |
|---|---|---|---|---|
| 1 | Distribution / CRM / Broker portal | #13 | ERPNext platform up (erp/) but CRM not configured; no broker portal | π‘ platform only |
| 2 | Underwriting workbench | #12 | nothing running (repo scaffold) | π΄ |
| 3 | Pricing / Rating engine | #12 | nothing running | π΄ |
| 4 | Policy Administration (PAS) | #6 | ktayl-policy-service + ktayl-postgres (ktayl + ktayl-prod) | π’ live |
| 5 | Claims | #11 | scaffold β planned as the modern ACL/strangler that wraps GlobalCore to deliver Claims (Β§2b) | π΄ |
| β | Legacy core β GlobalCore (globalcore-legacy) | Track C | Java 8 / SOAP / batch built β ; evolving to Oracle + the Claims domain as the deliberate legacy the modern Claims wrap delivers (Β§2b, Legacy-Core Modernization) | π‘ built, evolving |
| 6 | Risk Engineering / Prevention | #21 | nothing running (repo ktayl-risk-engineering scaffold) | π΄ |
| 7 | International Programs | #23 | nothing running (repo ktayl-international-programs scaffold) | π΄ |
| 8 | Billing / Premium & Finance | #14 | ERPNext finance up, insurance billing not configured | π‘ platform only |
| 9 | Reinsurance | #22 | nothing running (repo ktayl-reinsurance scaffold) | π΄ |
| 10 | Compliance / Legal | #15 | nothing (Presidio PII is a data tool, not a compliance system) | π΄ |
| 11 | Data / Actuarial | #5 | analytics stack (ClickHouse/dbt/Superset) not deployed; only MLflow up | π΄ |
| 12 | Enterprise IT | #3/#4/#10/#16/#17 | very strong β see note below (except ITSM/GLPI + CMDB) | π’ |
Enterprise IT (#12) deployed detail: π’ IAM (Authentik) Β· M365-alt suite (Nextcloud, OnlyOffice, Stalwart mail, Matrix/Element, Jitsi, Docuseal, n8n) Β· cloud/k8s (ArgoCD, Kargo, cert-manager + trust-manager, ESO, Vault, Harbor, Cilium, Longhorn, KEDA, VPA, Velero) Β· observability (Prometheus/Grafana/Loki/Tempo) Β· security (Falco, Gatekeeper, Polaris, Trivy) Β· DevPortal (Backstage) Β· project-mgmt (Plane CE). π΄ Not deployed: ITSM/GLPI (#16) + CMDB (Plane covers project-mgmt, not helpdesk).
:::info Scope boundary β BYOD, no managed endpoints (deliberate)
ktayl manages no company computers, phones, or desk telephony β employees use their own device,
access is browser-first. So endpoints / MDM-UEM (Intune-equivalent) / device hardening / hardware
asset lifecycle / telephony are OUT of scope within Enterprise IT for now. This is coherent with the
digital workplace being all SSO-gated web apps (Authentik + MFA over Tailscale/Cloudflare) β an
inherently zero-trust / identity-is-the-perimeter shape. Accepted risk (no remote wipe / device DLP)
is offset by MFA + SSO + browser-first + app/gateway DLP (Presidio, default-deny egress). Consequently
ITSM/CMDB (#16) scopes to software/services/logical assets, not a HW fleet, and IAM/IGA (#17) becomes
the primary control. Revisit when real employees + PII-at-volume or a production DORA claim arrive
(successor: Fleet/osquery or a UEM). Full decision: .claude/rules/project-governance.md IS scope boundaries.
:::
The 4 transversal layersβ
| Layer | Board | Deployed reality | Status |
|---|---|---|---|
| Enterprise Document Platform (GED / OCR / IDP) | #24 | Nextcloud (storage) + OnlyOffice (edit) + Docuseal (e-sign) + Docling + markitdown-proxy β Qdrant (OCR/parse/embed β RAG) all live; missing a records-mgmt DMS (Paperless-ngx) + the structured IDP pipeline as a product (repo ktayl-dms scaffold). Full spec: Business Applications Catalog Β§8 | π‘ partial |
| Integration (API-GW / ESB / ETL / MFT / EDI) | #25 | NATS (events) + Temporal (workflow) + n8n (low-code integration) live as primitives; missing the formal API-GW/ESB/ETL/MFT/EDI insurance fabric (repo ktayl-integration scaffold) | π‘ primitives only |
| Master Data / RΓ©fΓ©rentiels (MDM) | #20 | nothing running (repo scaffold, parked β see Β§5) | π΄ |
| Data | #5 | only MLflow; analytical Data Platform not deployed | π΄ |
:::info MDM (#20) vs Data Platform (#5) β different things, not a duplicate
MDM = operational OLTP golden records + low-latency lookup (PostgreSQL), consumed by the copilot
and domain services at transaction time ("which client/broker/entity is this?"). Data Platform =
analytical OLAP (Redpanda β ClickHouse β dbt β BI). MDM feeds the Data Platform via CDC
(Debezium, DATA-18i) β it is a source for analytics, not the analytics platform. Keep them separate.
:::
:::note Data Platform (#5) β why it is deferred + the build sequencing Three laws of a data platform: use cases drive it Β· sources constrain it Β· technology comes last. The generic foundation (medallion: ingest β raw β transform β curated β serve + cross-cutting governance/lineage/quality) is buildable source-agnostic, but the data products (Customer 360, Loss Ratio, Underwriting Mart) are impossible to build without their specific sources β a data product is a contract over specific source fields.
The ktayl twist β sources are our own domain services, and most aren't built yet. Unlike a generic
enterprise whose sources are external unknowns (SAP, mainframe, SharePoint, broker SFTP), ktayl's
sources are the domain microservices themselves: Loss Ratio needs ktayl-claims + Policy + Finance;
Customer 360 needs Claims β Policy β CRM joined (i.e. MDM). Today only Policy Admin (#6) + ERPNext (#8)
run β Claims/#11, Underwriting/#12, Distribution/#13, Finance/#14 are board-only. So #5 is π΄ not
because the tech is unchosen, but because the sources are unbuilt. Building the OLAP layer now = a
warehouse for empty warehouses.
Consequence for build order: this is why Β§5 sequences business domains first, Data Platform after β the domain services are the sources. When the first domain ships (e.g. Claims), do one thin vertical slice end-to-end (that source β just-enough foundation β one data product, e.g. Loss Ratio), then generalize the ingestion framework from 2-3 real pipelines β never design a generic connector framework up-front for sources that never arrive (the classic "impressive data lake nobody uses"). Same need-first discipline as the rest of the IS: a capability with no inputs waits. ::: | AI / Automation | #4/#18/#19 | very strong platform β LiteLLM, Qdrant, RAG-ingest/Docling, Open WebUI, minicloud-agent, minicloud-crew-agent, Presidio, MLflow, Langfuse, vLLM, Flowise all live; but zero insurance AI use-cases deployed (#18/#19 parked) | π’ platform / π΄ use-cases |
:::warning The headline finding The PLATFORM (Enterprise IT) and AI foundations are mature and heavily deployed. The CORE INSURANCE BUSINESS is almost entirely NOT deployed β only Policy Admin (#4) actually runs. ktayl has an excellent technology substrate but is not yet a runnable insurer (no underwriting, claims, billing, reinsurance, compliance, actuarial running). The gap is the insurance business domains themselves β which is exactly why the build order (Β§5) is business tools first, AI/automation last. :::
Deployed vs board (quick read): deployed β Policy #6 π’, ERPNext #8 π‘, AI Platform #4 π’, GitOps #3 π’, Digital Workplace #10 π’. Board/repo only, nothing running β Underwriting #12, Claims #11, Distribution #13, Finance #14, Compliance #15, ITSM #16, Data Platform #5, MDM #20, Knowledge Assistant #18, AI Ops Copilot #19, Risk Engineering #21, Reinsurance #22, International Programs #23, Documents/DMS #24, Integration #25 (boards + home repos created 2026-09-15 so the full IARD SI is represented; build not started). (Retrieva #2 is a separate product, not ktayl.)
4. AI / Automation is a transversal capability, not a domainβ
AI does not sit "next to" Claims or Underwriting β it serves every domain:
Underwriting βββΊ submission analysis Β· risk summary Β· referral scoring
Claims βββΊ triage Β· document extraction Β· fraud signals
Risk Engineering βββΊ report analysis Β· recommendation extraction
Broker/Distrib. βββΊ email / submission-pack classification
Compliance βββΊ screening Β· document analysis
Finance βββΊ invoice / reconciliation automation
Legal βββΊ contract analysis
Knowledge βββΊ enterprise RAG / search / assistant
Enterprise IT βββΊ support / incident automation
The two AI products realise this split cleanly (the "if Open WebUI already does it, don't rebuild it" test):
- ktayl Knowledge Assistant (#18) β chat-over-docs (grounded, cited Q&A over ktayl corpora). This is Open WebUI + curated content, config not code.
- ktayl AI Ops Copilot (#19) β everything Open WebUI cannot do: structured decisions, authorized actions into ktayl systems, multi-agent workflows. Makes and executes validated, audited insurance decisions.
Use-case discovery method (not "where can we put a chatbot?"):
business process β pain point β data/documents β existing systems
β decision/task β automation opportunity β AI capability β measurable outcome
β REGULATORY IMPACT β CONTROLS REQUIRED β AUDIT EVIDENCE β MONITORING
:::info The regulatory tail is mandatory β compliance by design (insurance FDE standard) ktayl is a regulated insurer: a Solvency II spine + transversal EU/FR frameworks (DORA, GDPR, EU AI Act, IDD/DDA, AML/sanctions, IFRS 17, SFDRβ¦). (Insurer β bank β CRR/CRD/PSD2 don't apply.) Regulation is not a silo β one capability (e.g. an AI Underwriting Assistant) fires **AI Act + GDPR
- DORA + Solvency II + IDD + Sanctions/AML + Outsourcing at once**, so the design lists all triggered
frameworks and the combined control set. Controls are declared at design time (verified at the
security/architecture gate), evidence accrues to the control library owned by Regulatory & Compliance
(#15), and every AI use case gets an AI-Act risk tier (controls spike the moment AI influences a
decision about a person). Reference: the Regulatory impact section of the underwriting FDE playbook;
standard:
bmad-compliance.mdThe regulatory layer. Frameworkβdomain ownership: Solvency II spans UWβPricingβClaimsβReservesβReinsuranceβFinance (not just Finance); DORA β Enterprise IT + Retrieva; IDD β Distribution; IFRS 17 β Finance; AML/Sanctions β Compliance. :::
5. Build order β business tools first; AI/automation lastβ
:::warning Corrected sequencing (2026-09-14) Build the business tools (domains) first; the AI/automation layer comes last. An earlier plan front-loaded the plumbing ("MDM β Documents β Data β UW β Copilot thin slice") β that is reversed. The AI Ops Copilot (#19) is an automation layer: it only delivers value once real business systems exist to reason over and act on. MDM (#20) is a foundation, but only pays off once a consumer exists. So #18 (Knowledge Assistant), #19 (AI Ops Copilot) and #20 (MDM) are PARKED β their briefs are captured as plans, not the next thing to build. :::
The correct order:
1. Build a real BUSINESS DOMAIN end-to-end (the thing that actually runs)
2. MDM emerges as that first domain needs shared entities (client/broker/β¦)
3. Documents/IDP + exposure-Data added as a domain needs them
4. The AI Ops Copilot LAST β the capstone, once there are real systems to automate
Why: the copilot automates over systems β no systems, nothing to automate. MDM with no consumer is infrastructure with no payoff. So value comes from standing up domains, not from building the automation layer against stubs.
Next decisions (in flight): Underwriting (#12) is planned (BMAD set done, binds the live PAS) and
is the current greenfield build. In parallel, the legacy spine (Β§2b, Track C) is being aligned: evolve
GlobalCore (globalcore-legacy) to Oracle + the Claims domain, and build ktayl-claims (#11)
as the modern ACL/strangler that delivers Claims by wrapping it (SOAPβJSON, batchβevents). Policy stays
modern (live PAS) β the legacy is the domain we need but haven't built (Claims), not a duplicate. Each
missing domain gets its board/repo when its work starts (portfolio discipline β no empty boards).
The parked copilot/MDM/KA briefs remain valid plans. Detail: Legacy-Core Modernization.
6. Governanceβ
- Each domain/layer = a product board (one Project per product; see the GitHub Projects rules). New boards are created when work starts, not pre-emptively.
- This blueprint is the EA governance artefact for the ktayl IS β reviewed at architecture gates and kept current as domains move π΄βπ‘βπ’. (It documents the insurer's business IS β the organisational context. It is not a certification deliverable; the RNCP cert is the separate Retrieva product.)
- Detailed per-app inventory + sprint state: Business Applications Catalog.