<mxfile host="app.diagrams.net" agent="architecture-deliverables" version="24.0.0">
  <diagram name="Multimodal Ingestion Pipeline — One Lane per Modality" id="05-multimodal-ingestion-pipeline">
    <mxGraphModel dx="1400" dy="900" background="#ffffff" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1640" pageHeight="850" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="_st1" value="Intake" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="190" y="60" width="250" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_st2" value="Extract" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="470" y="60" width="250" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_st3" value="Interpret" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="750" y="60" width="250" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_st4" value="Chunk &amp; enrich" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="1030" y="60" width="250" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_st5" value="Index" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="1310" y="60" width="250" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_box6" value="" style="rounded=1;arcSize=3;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#c9d3de;verticalAlign=top;align=left;spacingLeft=12;spacingTop=6;fontSize=11;fontStyle=2;fontColor=#5b6b7d;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="90" width="1550" height="110" as="geometry" />
        </mxCell>
        <mxCell id="_lh7" value="Text &amp; Markdown" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontStyle=1;fontColor=#42536a;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="60" y="130" width="130" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_n8" value="&lt;b&gt;Upload / crawl&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="210" y="110" width="210" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_n9" value="&lt;b&gt;Normalise encoding&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="490" y="110" width="210" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_n10" value="&lt;b&gt;Heading structure&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="770" y="110" width="210" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_n11" value="&lt;b&gt;Semantic chunks&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;512 tok, 15% lap&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="1050" y="110" width="210" height="70" as="geometry" />
        </mxCell>
        <mxCell id="_n12" value="&lt;b&gt;Dense + sparse&lt;/b&gt;" style="shape=cylinder3;boundedLbl=1;backgroundOutline=1;size=11;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#1e3a1e;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="1330" y="110" width="210" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_box13" value="" style="rounded=1;arcSize=3;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#c9d3de;verticalAlign=top;align=left;spacingLeft=12;spacingTop=6;fontSize=11;fontStyle=2;fontColor=#5b6b7d;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="220" width="1550" height="110" as="geometry" />
        </mxCell>
        <mxCell id="_lh14" value="PDF &amp; Office" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontStyle=1;fontColor=#42536a;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="60" y="260" width="130" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_n15" value="&lt;b&gt;Upload / connector&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="210" y="240" width="210" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_n16" value="&lt;b&gt;Layout parse&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;reading order&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="490" y="240" width="210" height="70" as="geometry" />
        </mxCell>
        <mxCell id="_n17" value="&lt;b&gt;OCR fallback&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;scanned pages&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="770" y="240" width="210" height="70" as="geometry" />
        </mxCell>
        <mxCell id="_n18" value="&lt;b&gt;Page-anchored chunks&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="1050" y="240" width="210" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_n19" value="&lt;b&gt;Dense + sparse&lt;/b&gt;" style="shape=cylinder3;boundedLbl=1;backgroundOutline=1;size=11;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#1e3a1e;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="1330" y="240" width="210" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_box20" value="" style="rounded=1;arcSize=3;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#c9d3de;verticalAlign=top;align=left;spacingLeft=12;spacingTop=6;fontSize=11;fontStyle=2;fontColor=#5b6b7d;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="340" width="1550" height="110" as="geometry" />
        </mxCell>
        <mxCell id="_lh21" value="Images &amp; charts" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontStyle=1;fontColor=#42536a;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="60" y="390" width="130" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_n22" value="&lt;b&gt;Standalone or embedded&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="210" y="360" width="210" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_n23" value="&lt;b&gt;Region crop&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;bbox retained&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="490" y="360" width="210" height="70" as="geometry" />
        </mxCell>
        <mxCell id="_n24" value="&lt;b&gt;VLM description&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;Claude vision&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="770" y="360" width="210" height="70" as="geometry" />
        </mxCell>
        <mxCell id="_n25" value="&lt;b&gt;Caption + OCR text&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="1050" y="360" width="210" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_n26" value="&lt;b&gt;Text + image vector&lt;/b&gt;" style="shape=cylinder3;boundedLbl=1;backgroundOutline=1;size=11;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#1e3a1e;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="1330" y="360" width="210" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_box27" value="" style="rounded=1;arcSize=3;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#c9d3de;verticalAlign=top;align=left;spacingLeft=12;spacingTop=6;fontSize=11;fontStyle=2;fontColor=#5b6b7d;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="470" width="1550" height="110" as="geometry" />
        </mxCell>
        <mxCell id="_lh28" value="Tables &amp; sheets" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontStyle=1;fontColor=#42536a;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="60" y="510" width="130" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_n29" value="&lt;b&gt;Upload / extracted&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="210" y="490" width="210" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_n30" value="&lt;b&gt;Table detect&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;cell structure&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="490" y="490" width="210" height="70" as="geometry" />
        </mxCell>
        <mxCell id="_n31" value="&lt;b&gt;Header + type infer&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="770" y="490" width="210" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_n32" value="&lt;b&gt;Markdown linearise&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="1050" y="490" width="210" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_n33" value="&lt;b&gt;Vector + typed rows&lt;/b&gt;" style="shape=cylinder3;boundedLbl=1;backgroundOutline=1;size=11;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#1e3a1e;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="1330" y="490" width="210" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_box34" value="" style="rounded=1;arcSize=3;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#c9d3de;verticalAlign=top;align=left;spacingLeft=12;spacingTop=6;fontSize=11;fontStyle=2;fontColor=#5b6b7d;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="590" width="1550" height="110" as="geometry" />
        </mxCell>
        <mxCell id="_lh35" value="Audio &amp; video" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontStyle=1;fontColor=#42536a;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="60" y="640" width="130" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_n36" value="&lt;b&gt;Upload / archive pull&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="210" y="610" width="210" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_n37" value="&lt;b&gt;Demux + keyframes&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="490" y="610" width="210" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_n38" value="&lt;b&gt;ASR + diarisation&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;word timings&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="770" y="610" width="210" height="70" as="geometry" />
        </mxCell>
        <mxCell id="_n39" value="&lt;b&gt;Timecoded windows&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="1050" y="610" width="210" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_n40" value="&lt;b&gt;Vector + frame refs&lt;/b&gt;" style="shape=cylinder3;boundedLbl=1;backgroundOutline=1;size=11;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#1e3a1e;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;" vertex="1" parent="1">
          <mxGeometry x="1330" y="610" width="210" height="50" as="geometry" />
        </mxCell>
        <mxCell id="title" value="Multimodal Ingestion Pipeline — One Lane per Modality" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=20;fontStyle=1;fontColor=#16202c;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="20" width="1550" height="30" as="geometry" />
        </mxCell>
        <mxCell id="rule" value="" style="line;strokeWidth=1;html=1;strokeColor=#c9d3de;" vertex="1" parent="1">
          <mxGeometry x="40" y="50" width="1550" height="10" as="geometry" />
        </mxCell>
        <mxCell id="note" value="Every lane emits the same chunk record: text projection, provenance, modality tag." style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="790" width="1550" height="20" as="geometry" />
        </mxCell>
        <mxCell id="foot-rule" value="" style="line;strokeWidth=1;html=1;strokeColor=#e3e9ef;" vertex="1" parent="1">
          <mxGeometry x="40" y="810" width="1550" height="10" as="geometry" />
        </mxCell>
        <mxCell id="foot" value="v 1.0   ·   owner Solution Architecture" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=9;fontColor=#9aa7b4;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="820" width="1550" height="10" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
