<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="eli.ai" agent="eli.ai diagram exporter" version="1">
  <diagram id="ai-platform-simplified-data-flow-963a6750" name="AI platform — simplified data flow">
    <mxGraphModel dx="1600" dy="1200" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1200" math="0" shadow="0">
      <root>
        <mxCell id="0"/>
        <object id="1" label="AI platform — simplified data flow" schemaVersion="1" diagramId="ai-platform-simplified-data-flow-963a6750" canonicalAppearanceKey="md:docs/architecture/workspace/04-ai-platform.md#3" sourceSha256="963a6750959dea6fb89d4c90566a00fbe97be9d7364bf7d109ba5bbb06a1001e" metadataPayloadSha256="c2c790045f258fbbfc58adec7d234f10b7c6c19313aff6c0de5c108158ca1738" generationKey="2a50450fefd340f985545fdb0c36863ad60f170f50f1dd8c76586e9a4fd0e910" concepts="[&quot;AI platform&quot;]" keywords="[&quot;new turn + threadId&quot;,&quot;Map: fast tier&quot;,&quot;word summary per chunk&quot;,&quot;Persist turns + reply&quot;,&quot;to owned thread&quot;,&quot;modelIds + key source&quot;,&quot;User message in VaultChat&quot;,&quot;Session auth + rate limit&quot;,&quot;hybridSearch on last user turn&quot;,&quot;top-8 notes, chunk , cap 24&quot;,&quot;Reduce: smart tier over full conversation&quot;,&quot;summaries corpus, tools cap 6 steps&quot;,&quot;Reply with cited sources&quot;,&quot;/api/ai/chat&quot;,&quot;60/min&quot;,&quot;3500/250&quot;,&quot;POST&quot;]" application="{&quot;name&quot;:&quot;eli-ai&quot;,&quot;version&quot;:&quot;0.1.0&quot;}" packages="{&quot;mermaid&quot;:&quot;11.16.0&quot;,&quot;mermaidCli&quot;:&quot;11.16.0&quot;,&quot;playwright&quot;:&quot;1.62.1&quot;,&quot;playwrightCore&quot;:&quot;1.62.1&quot;,&quot;puppeteer&quot;:&quot;25.6.0&quot;,&quot;puppeteerCore&quot;:&quot;25.6.0&quot;}" environment="{&quot;architecture&quot;:&quot;x64&quot;,&quot;containerImage&quot;:&quot;playwright:v1.62.1-noble@sha256:c091b21d9fae78c76e85cd4356431e9b018402f172a214fc7d7a5e9a7e29d8ac+node:26.3.1-bookworm-slim@sha256:209558c3e5e40e8adff68959d3c2ba7cd73723e716d89196878a0c362fa1e109&quot;,&quot;node&quot;:&quot;v26.3.1&quot;,&quot;platform&quot;:&quot;linux&quot;,&quot;yarn&quot;:&quot;4.17.1&quot;}" renderer="{&quot;browser&quot;:{&quot;executableSha256&quot;:&quot;0b20b130e7edd9dd51873be867761295fe0cfad490c2b9a64f95bd3cfc08fa71&quot;,&quot;name&quot;:&quot;chromium&quot;,&quot;revision&quot;:&quot;1234&quot;,&quot;version&quot;:&quot;151.0.7922.34&quot;},&quot;font&quot;:{&quot;family&quot;:&quot;Eli Diagram Inter Variable&quot;,&quot;fileSha256&quot;:&quot;3100e775e8616cd2611beecfa23a4263d7037586789b43f035236a2e6fbd4c62&quot;,&quot;licenseSha256&quot;:&quot;3b0a5fca3d17942cde889069889dedbbbd075e9b599968c82a95f4d944e9b345&quot;},&quot;mermaidConfigSha256&quot;:&quot;68c10966fe84406ee626034d58bfabd555df9f65f691204b7c46db24038da101&quot;,&quot;themeCssSha256&quot;:&quot;c80287a78d80ad63d27bd5ca348b2ef9a7e2f44da289e436be6484ea28a1b033&quot;}" adapterVersions="{&quot;diagramGenerator&quot;:&quot;2&quot;,&quot;drawioFlowchart&quot;:&quot;1&quot;,&quot;drawioGantt&quot;:&quot;1&quot;,&quot;drawioSequence&quot;:&quot;1&quot;,&quot;drawioState&quot;:&quot;1&quot;}" mermaidType="flowchart" direction="LR" generatedAt="2026-08-12T23:36:35.111Z" mermaidSource="flowchart LR&#10;  u[&quot;User message in VaultChat&quot;] --&gt; p[&quot;POST /api/ai/chat&lt;br/&gt;(new turn + threadId)&quot;]&#10;  p --&gt; a[&quot;Session auth + rate limit 60/min&quot;]&#10;  a --&gt; h[&quot;hybridSearch on last user turn&lt;br/&gt;top-8 notes, chunk 3500/250, cap 24&quot;]&#10;  h --&gt; m[&quot;Map: fast tier&lt;br/&gt;100-word summary per chunk&quot;]&#10;  m --&gt; r[&quot;Reduce: smart tier over full conversation&lt;br/&gt;+ summaries corpus, tools cap 6 steps&quot;]&#10;  r --&gt; s[&quot;Persist turns + reply&lt;br/&gt;to owned thread&quot;]&#10;  s --&gt; o[&quot;Reply with cited sources&lt;br/&gt;+ modelIds + key source&quot;]">
          <mxCell parent="0"/>
        </object>
        <object id="n:u" label="User message in VaultChat" mermaidId="u" mermaidShape="rectangle">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="8" y="32" width="256" height="76" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:p" label="POST /api/ai/chat(new turn + threadId)" mermaidId="p" mermaidShape="rectangle">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="314" y="32" width="216.578125" height="76" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:a" label="Session auth + rate limit 60/min" mermaidId="a" mermaidShape="rectangle">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="580.578125" y="32" width="256" height="76" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:h" label="hybridSearch on last user turntop-8 notes, chunk 3500/250, cap 24" mermaidId="h" mermaidShape="rectangle">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="886.578125" y="8" width="256" height="124" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:m" label="Map: fast tier100-word summary per chunk" mermaidId="m" mermaidShape="rectangle">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="1192.578125" y="20" width="256" height="100" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:r" label="Reduce: smart tier over full conversation+ summaries corpus, tools cap 6 steps" mermaidId="r" mermaidShape="rectangle">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="1498.578125" y="8" width="256" height="124" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:s" label="Persist turns + replyto owned thread" mermaidId="s" mermaidShape="rectangle">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="1804.578125" y="32" width="208.265625" height="76" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:o" label="Reply with cited sources+ modelIds + key source" mermaidId="o" mermaidShape="rectangle">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="2062.84375" y="32" width="242.484375" height="76" as="geometry"/>
          </mxCell>
        </object>
        <object id="e:L_u_p_0" label="" mermaidId="L_u_p_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:u" target="n:p" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="264" y="70" as="sourcePoint"/>
              <mxPoint x="314" y="70" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="289" y="70"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_p_a_0" label="" mermaidId="L_p_a_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:p" target="n:a" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="530.578125" y="70" as="sourcePoint"/>
              <mxPoint x="580.578125" y="70" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="555.578125" y="70"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_a_h_0" label="" mermaidId="L_a_h_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:a" target="n:h" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="836.578125" y="70" as="sourcePoint"/>
              <mxPoint x="886.578125" y="70" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="861.578125" y="70"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_h_m_0" label="" mermaidId="L_h_m_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:h" target="n:m" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="1142.578125" y="70" as="sourcePoint"/>
              <mxPoint x="1192.578125" y="70" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="1167.578125" y="70"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_m_r_0" label="" mermaidId="L_m_r_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:m" target="n:r" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="1448.578125" y="70" as="sourcePoint"/>
              <mxPoint x="1498.578125" y="70" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="1473.578125" y="70"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_r_s_0" label="" mermaidId="L_r_s_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:r" target="n:s" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="1754.578125" y="70" as="sourcePoint"/>
              <mxPoint x="1804.578125" y="70" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="1779.578125" y="70"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_s_o_0" label="" mermaidId="L_s_o_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:s" target="n:o" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="2012.84375" y="70" as="sourcePoint"/>
              <mxPoint x="2062.84375" y="70" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="2037.84375" y="70"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
