<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="app.diagrams.net" modified="2026-09-12T00:00:00.000Z" agent="Mozilla/5.0" version="23.1.5">
  <diagram id="processing-pipeline" name="Processing Pipeline">
    <mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1000" math="0" shadow="0">
      <root>
        <mxCell id="title" />
        <mxCell id="page" parent="title" />

        <mxCell id="user" value="User" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="page">
          <mxGeometry x="60" y="220" width="120" height="60" as="geometry" />
        </mxCell>

        <mxCell id="cli" value="CLI" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="page">
          <mxGeometry x="230" y="220" width="120" height="60" as="geometry" />
        </mxCell>

        <mxCell id="service" value="Summarizer Service" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="page">
          <mxGeometry x="420" y="220" width="170" height="60" as="geometry" />
        </mxCell>

        <mxCell id="notion" value="Notion Client" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="page">
          <mxGeometry x="650" y="120" width="150" height="60" as="geometry" />
        </mxCell>

        <mxCell id="youtube" value="YouTube Client" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;" vertex="1" parent="page">
          <mxGeometry x="650" y="220" width="150" height="60" as="geometry" />
        </mxCell>

        <mxCell id="llm" value="LLM Client" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;" vertex="1" parent="page">
          <mxGeometry x="650" y="320" width="150" height="60" as="geometry" />
        </mxCell>

        <mxCell id="loop" value="For each video" style="shape=hexagon;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="page">
          <mxGeometry x="430" y="420" width="180" height="70" as="geometry" />
        </mxCell>

        <mxCell id="summary" value="Generate collection-level summary" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="page">
          <mxGeometry x="350" y="560" width="240" height="60" as="geometry" />
        </mxCell>

        <mxCell id="edge1" value="Execute with options" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" edge="1" parent="page" source="user" target="cli">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <mxCell id="edge2" value="Initialize configured storage and LLM clients" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" edge="1" parent="page" source="cli" target="service">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <mxCell id="edge3" value="Query records" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" edge="1" parent="page" source="service" target="notion">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <mxCell id="edge4" value="Return video URLs and metadata" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;dashed=1;" edge="1" parent="page" source="notion" target="service">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <mxCell id="edge5" value="Add playlist videos when configured" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" edge="1" parent="page" source="cli" target="service">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="290" y="380" />
              <mxPoint x="505" y="380" />
            </Array>
          </mxGeometry>
        </mxCell>

        <mxCell id="edge6" value="Fetch missing title and transcript" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" edge="1" parent="page" source="service" target="youtube">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <mxCell id="edge7" value="Return transcript and title" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;dashed=1;" edge="1" parent="page" source="youtube" target="service">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <mxCell id="edge8" value="Generate summary" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" edge="1" parent="page" source="service" target="llm">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <mxCell id="edge9" value="Return summary" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;dashed=1;" edge="1" parent="page" source="llm" target="service">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <mxCell id="edge10" value="Extract main points" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" edge="1" parent="page" source="service" target="llm">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="560" y="360" />
              <mxPoint x="640" y="360" />
            </Array>
          </mxGeometry>
        </mxCell>

        <mxCell id="edge11" value="Update database with results" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" edge="1" parent="page" source="service" target="notion">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="590" y="150" />
            </Array>
          </mxGeometry>
        </mxCell>

        <mxCell id="edge12" value="Confirm update" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;dashed=1;" edge="1" parent="page" source="notion" target="service">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="720" y="190" />
              <mxPoint x="560" y="190" />
            </Array>
          </mxGeometry>
        </mxCell>

        <mxCell id="edge13" value="Return executive summary" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" edge="1" parent="page" source="service" target="cli">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="505" y="520" />
              <mxPoint x="290" y="520" />
            </Array>
          </mxGeometry>
        </mxCell>

        <mxCell id="edge14" value="Print executive summary" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" edge="1" parent="page" source="cli" target="user">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="290" y="310" />
              <mxPoint x="120" y="310" />
            </Array>
          </mxGeometry>
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
