<mxfile host="app.diagrams.net" modified="2026-05-08T12:00:00.000Z" agent="Claude" version="24.0.0">
  <diagram name="ANi Architecture" id="ani-arch-v2">
    <mxGraphModel dx="1422" dy="800" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1400" pageHeight="1100" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />

        <!-- ============ TITLE ============ -->
        <mxCell id="title" value="ANi - AI Capability Layer Architecture" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=20;fontStyle=1" vertex="1" parent="1">
          <mxGeometry x="450" y="20" width="500" height="40" as="geometry" />
        </mxCell>

        <!-- ============ PERSONA LAYER (with role context) ============ -->
        <mxCell id="persona-layer" value="Persona Layer (Role-Based Context &amp; Permissions)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=12;fontStyle=1;verticalAlign=top;" vertex="1" parent="1">
          <mxGeometry x="60" y="80" width="1280" height="180" as="geometry" />
        </mxCell>

        <!-- Exco -->
        <mxCell id="exco" value="Exco" style="shape=umlActor;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;html=1;outlineConnect=0;fontSize=11;fontStyle=1" vertex="1" parent="1">
          <mxGeometry x="140" y="120" width="40" height="60" as="geometry" />
        </mxCell>
        <mxCell id="exco-ctx" value="Strategic dashboards&#10;Board reports&#10;Cross-functional KPIs&#10;Read-mostly access" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#6c8ebf;fontSize=9;align=center;" vertex="1" parent="1">
          <mxGeometry x="100" y="195" width="120" height="50" as="geometry" />
        </mxCell>

        <!-- Technical -->
        <mxCell id="tech" value="Technical" style="shape=umlActor;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;html=1;outlineConnect=0;fontSize=11;fontStyle=1" vertex="1" parent="1">
          <mxGeometry x="340" y="120" width="40" height="60" as="geometry" />
        </mxCell>
        <mxCell id="tech-ctx" value="Code &amp; system context&#10;Admin actions&#10;Integration config&#10;Elevated permissions" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#6c8ebf;fontSize=9;align=center;" vertex="1" parent="1">
          <mxGeometry x="300" y="195" width="120" height="50" as="geometry" />
        </mxCell>

        <!-- Client-facing -->
        <mxCell id="client" value="Client-facing" style="shape=umlActor;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;html=1;outlineConnect=0;fontSize=11;fontStyle=1" vertex="1" parent="1">
          <mxGeometry x="540" y="120" width="40" height="60" as="geometry" />
        </mxCell>
        <mxCell id="client-ctx" value="Customer records&#10;CRM workflows&#10;Quote/order actions&#10;Scoped to portfolio" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#6c8ebf;fontSize=9;align=center;" vertex="1" parent="1">
          <mxGeometry x="500" y="195" width="120" height="50" as="geometry" />
        </mxCell>

        <!-- Business emp -->
        <mxCell id="biz" value="Business Emp" style="shape=umlActor;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;html=1;outlineConnect=0;fontSize=11;fontStyle=1" vertex="1" parent="1">
          <mxGeometry x="740" y="120" width="40" height="60" as="geometry" />
        </mxCell>
        <mxCell id="biz-ctx" value="Functional workflows&#10;Approvals &amp; reviews&#10;Reporting requests&#10;Department-scoped" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#6c8ebf;fontSize=9;align=center;" vertex="1" parent="1">
          <mxGeometry x="700" y="195" width="120" height="50" as="geometry" />
        </mxCell>

        <!-- Ops emp -->
        <mxCell id="ops" value="Ops Emp" style="shape=umlActor;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;html=1;outlineConnect=0;fontSize=11;fontStyle=1" vertex="1" parent="1">
          <mxGeometry x="940" y="120" width="40" height="60" as="geometry" />
        </mxCell>
        <mxCell id="ops-ctx" value="Transactional tasks&#10;Process execution&#10;Exception handling&#10;Action-heavy" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#6c8ebf;fontSize=9;align=center;" vertex="1" parent="1">
          <mxGeometry x="900" y="195" width="120" height="50" as="geometry" />
        </mxCell>

        <!-- External / Customer -->
        <mxCell id="ext" value="External User&#10;(API / Customer)" style="shape=umlActor;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;html=1;outlineConnect=0;fontSize=11;fontStyle=1" vertex="1" parent="1">
          <mxGeometry x="1140" y="120" width="40" height="60" as="geometry" />
        </mxCell>
        <mxCell id="ext-ctx" value="Self-service queries&#10;Public-facing actions&#10;Heavily sandboxed&#10;Read-restricted" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#6c8ebf;fontSize=9;align=center;" vertex="1" parent="1">
          <mxGeometry x="1100" y="195" width="120" height="50" as="geometry" />
        </mxCell>

        <!-- ============ ACCESS LAYER (Dumb Terminal / Devices) ============ -->
        <mxCell id="access-layer" value="Access Layer - Secure Thin Client &amp; Session Portability" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=12;fontStyle=1;verticalAlign=top;" vertex="1" parent="1">
          <mxGeometry x="60" y="290" width="1280" height="80" as="geometry" />
        </mxCell>
        <mxCell id="access-desc" value="Dumb Terminal | Mobile | Watch | Voice&#10;Zero local data &#8226; Hardened &#8226; Continuous session handoff &#8226; SSO &amp; device attestation" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=11;" vertex="1" parent="1">
          <mxGeometry x="80" y="315" width="1240" height="50" as="geometry" />
        </mxCell>

        <!-- ============ ANi AI ENGINE - DECOMPOSED ============ -->
        <mxCell id="engine-layer" value="ANi AI Engine" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=14;fontStyle=1;verticalAlign=top;" vertex="1" parent="1">
          <mxGeometry x="60" y="400" width="1280" height="240" as="geometry" />
        </mxCell>

        <!-- Experience / UI Generation -->
        <mxCell id="exp-layer" value="Experience Layer&#10;&#10;Generative UI&#10;Conversational + Visual&#10;Role-aware rendering" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#82b366;fontSize=10;fontStyle=1;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="90" y="440" width="180" height="90" as="geometry" />
        </mxCell>

        <!-- Orchestration / Agents -->
        <mxCell id="orch-layer" value="Orchestration &amp; Agents&#10;&#10;Planner / router&#10;Tool use&#10;Multi-step workflows" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#82b366;fontSize=10;fontStyle=1;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="290" y="440" width="180" height="90" as="geometry" />
        </mxCell>

        <!-- Memory / Context -->
        <mxCell id="mem-layer" value="Memory &amp; Context&#10;&#10;Vector + relational store&#10;Session &amp; long-term memory&#10;RAG over client data" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#82b366;fontSize=10;fontStyle=1;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="490" y="440" width="180" height="90" as="geometry" />
        </mxCell>

        <!-- Model Layer -->
        <mxCell id="model-layer" value="Model Layer&#10;&#10;Frontier models (multi-vendor)&#10;Fine-tuned domain models&#10;Routing &amp; fallback" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#82b366;fontSize=10;fontStyle=1;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="690" y="440" width="180" height="90" as="geometry" />
        </mxCell>

        <!-- Guardrails / Governance -->
        <mxCell id="guard-layer" value="Guardrails &amp; Governance&#10;&#10;Policy engine, PII redaction&#10;Action approval workflows&#10;Audit trail" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;fontSize=10;fontStyle=1;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="890" y="440" width="180" height="90" as="geometry" />
        </mxCell>

        <!-- Observability -->
        <mxCell id="obs-layer" value="Observability &amp; Cost&#10;&#10;Tracing, evals&#10;Token metering&#10;Quality monitoring" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#82b366;fontSize=10;fontStyle=1;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="1090" y="440" width="180" height="90" as="geometry" />
        </mxCell>

        <!-- Integration / Tool Layer -->
        <mxCell id="int-layer" value="Integration &amp; Tool Layer - Connector library, schema-aware API navigation, MCP / function-calling, change detection" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontSize=11;fontStyle=1;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="90" y="550" width="1180" height="70" as="geometry" />
        </mxCell>

        <!-- ============ CLIENT BUSINESS APPS ============ -->
        <mxCell id="apps-layer" value="Client Business Applications (system of record - existing investments preserved)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontSize=12;fontStyle=1;verticalAlign=top;" vertex="1" parent="1">
          <mxGeometry x="60" y="670" width="1280" height="130" as="geometry" />
        </mxCell>

        <mxCell id="fin" value="FIN&#10;(ERP / GL / AP / AR)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;fontSize=11;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="120" y="710" width="200" height="70" as="geometry" />
        </mxCell>
        <mxCell id="hr" value="HR&#10;(HRIS / Payroll / Talent)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;fontSize=11;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="380" y="710" width="200" height="70" as="geometry" />
        </mxCell>
        <mxCell id="opsapp" value="OPS&#10;(Core operational systems)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;fontSize=11;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="640" y="710" width="200" height="70" as="geometry" />
        </mxCell>
        <mxCell id="crm" value="CRM&#10;(Sales / Service)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;fontSize=11;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="900" y="710" width="200" height="70" as="geometry" />
        </mxCell>
        <mxCell id="data" value="Data &amp; BI&#10;(Warehouse / Lake)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;fontSize=11;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="1140" y="710" width="160" height="70" as="geometry" />
        </mxCell>

        <!-- ============ 3RD PARTY ============ -->
        <mxCell id="third-layer" value="3rd Party Apps &amp; Integrations (SaaS, partner APIs, regulatory feeds, public data)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=12;fontStyle=1;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="60" y="830" width="1280" height="70" as="geometry" />
        </mxCell>

        <!-- ============ CROSS-CUTTING: Security / Identity (left rail) ============ -->
        <mxCell id="sec-rail" value="Security &amp; Identity&#10;&#10;Zero-trust&#10;SSO / MFA&#10;Encryption&#10;Tenant isolation" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;fontSize=10;fontStyle=1;verticalAlign=middle;align=center;rotation=-90;" vertex="1" parent="1">
          <mxGeometry x="-50" y="540" width="180" height="60" as="geometry" />
        </mxCell>

        <!-- ============ CROSS-CUTTING: Handover / Portability (right rail) ============ -->
        <mxCell id="port-rail" value="Anti Lock-in&#10;&#10;Open schemas&#10;Data export&#10;Handover toolkit&#10;Exit assistance" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=10;fontStyle=1;verticalAlign=middle;align=center;rotation=-90;" vertex="1" parent="1">
          <mxGeometry x="1270" y="540" width="180" height="60" as="geometry" />
        </mxCell>

        <!-- ============ ARROWS - Personas to Access Layer ============ -->
        <mxCell id="a1" style="endArrow=classic;html=1;rounded=0;strokeColor=#6c8ebf;" edge="1" parent="1" source="exco-ctx" target="access-layer">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="a2" style="endArrow=classic;html=1;rounded=0;strokeColor=#6c8ebf;" edge="1" parent="1" source="tech-ctx" target="access-layer">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="a3" style="endArrow=classic;html=1;rounded=0;strokeColor=#6c8ebf;" edge="1" parent="1" source="client-ctx" target="access-layer">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="a4" style="endArrow=classic;html=1;rounded=0;strokeColor=#6c8ebf;" edge="1" parent="1" source="biz-ctx" target="access-layer">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="a5" style="endArrow=classic;html=1;rounded=0;strokeColor=#6c8ebf;" edge="1" parent="1" source="ops-ctx" target="access-layer">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="a6" style="endArrow=classic;html=1;rounded=0;strokeColor=#6c8ebf;" edge="1" parent="1" source="ext-ctx" target="access-layer">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <!-- Access to Engine -->
        <mxCell id="a7" style="endArrow=classic;startArrow=classic;html=1;rounded=0;strokeColor=#82b366;strokeWidth=2;" edge="1" parent="1" source="access-layer" target="engine-layer">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <!-- Engine internal flow (Experience -> Orchestration -> Memory/Model -> Guardrails) -->
        <mxCell id="i1" style="endArrow=classic;startArrow=classic;html=1;rounded=0;strokeColor=#82b366;" edge="1" parent="1" source="exp-layer" target="orch-layer">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="i2" style="endArrow=classic;startArrow=classic;html=1;rounded=0;strokeColor=#82b366;" edge="1" parent="1" source="orch-layer" target="mem-layer">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="i3" style="endArrow=classic;startArrow=classic;html=1;rounded=0;strokeColor=#82b366;" edge="1" parent="1" source="mem-layer" target="model-layer">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="i4" style="endArrow=classic;startArrow=classic;html=1;rounded=0;strokeColor=#82b366;" edge="1" parent="1" source="model-layer" target="guard-layer">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="i5" style="endArrow=classic;startArrow=classic;html=1;rounded=0;strokeColor=#82b366;" edge="1" parent="1" source="guard-layer" target="obs-layer">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <!-- Engine to Integration Layer (via Guardrails - all actions gated) -->
        <mxCell id="g1" value="all actions gated" style="endArrow=classic;html=1;rounded=0;strokeColor=#b85450;strokeWidth=2;fontSize=9;fontStyle=2;" edge="1" parent="1" source="guard-layer" target="int-layer">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <!-- Integration to Business Apps -->
        <mxCell id="b1" style="endArrow=classic;startArrow=classic;html=1;rounded=0;strokeColor=#9673a6;" edge="1" parent="1" source="int-layer" target="fin">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="b2" style="endArrow=classic;startArrow=classic;html=1;rounded=0;strokeColor=#9673a6;" edge="1" parent="1" source="int-layer" target="hr">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="b3" style="endArrow=classic;startArrow=classic;html=1;rounded=0;strokeColor=#9673a6;" edge="1" parent="1" source="int-layer" target="opsapp">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="b4" style="endArrow=classic;startArrow=classic;html=1;rounded=0;strokeColor=#9673a6;" edge="1" parent="1" source="int-layer" target="crm">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="b5" style="endArrow=classic;startArrow=classic;html=1;rounded=0;strokeColor=#9673a6;" edge="1" parent="1" source="int-layer" target="data">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <!-- Business apps to 3rd party (and direct integration path) -->
        <mxCell id="c1" style="endArrow=classic;startArrow=classic;html=1;rounded=0;strokeColor=#666666;" edge="1" parent="1" source="apps-layer" target="third-layer">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <!-- Direct path: Integration layer can also reach 3rd party (governed) -->
        <mxCell id="c2" value="governed direct path" style="endArrow=classic;startArrow=classic;html=1;rounded=0;strokeColor=#9673a6;dashed=1;fontSize=9;fontStyle=2;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="int-layer" target="third-layer">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1310" y="585" />
              <mxPoint x="1310" y="830" />
            </Array>
          </mxGeometry>
        </mxCell>

        <!-- ============ LEGEND ============ -->
        <mxCell id="legend" value="Legend" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;fontSize=11;fontStyle=1;verticalAlign=top;align=left;" vertex="1" parent="1">
          <mxGeometry x="60" y="930" width="1280" height="120" as="geometry" />
        </mxCell>
        <mxCell id="leg1" value="🟦 Persona &amp; access  &#160;&#160;&#160;  🟩 ANi engine components  &#160;&#160;&#160;  🟥 Governance / security (cross-cutting)  &#160;&#160;&#160;  🟪 Integration &amp; tool layer  &#160;&#160;&#160;  ⬜ Client / 3rd party systems&#10;&#10;Key design principles reflected in this view:&#10;  &#8226; AI engine is decomposed into a real stack (experience, orchestration, memory, model, guardrails, observability) - not a single black box&#10;  &#8226; Personas have distinct context, permissions and interaction patterns - not identical access&#10;  &#8226; All actions on client systems and 3rd parties pass through the guardrails / governance layer with audit trail&#10;  &#8226; Anti lock-in is a first-class architectural commitment, not a marketing line - exposed via open schemas, export APIs and handover toolkit" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=10;" vertex="1" parent="1">
          <mxGeometry x="80" y="955" width="1240" height="90" as="geometry" />
        </mxCell>

      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
