<mxfile host="ai-architect-catalog"><diagram id="document-intake-pipeline-gcp" name="Document intake pipeline / gcp"><mxGraphModel grid="1" gridSize="10"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="senders" value="Suppliers and claimants
Person" data-role="user" data-service="external" data-class="confidential" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#8AB4FF33;strokeColor=#8AB4FF;fontColor=#0f1017;fontSize=12;" vertex="1" parent="1"><mxGeometry x="40" y="220" width="252" height="112" as="geometry"/></mxCell><mxCell id="intake" value="Upload portal and inbox
Cloud Run" data-role="experience" data-service="gcp.cloud-run" data-class="confidential" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#8AB4FF33;strokeColor=#8AB4FF;fontColor=#0f1017;fontSize=12;" vertex="1" parent="1"><mxGeometry x="340" y="220" width="252" height="112" as="geometry"/></mxCell><mxCell id="landing" value="Landing bucket
Cloud Storage" data-role="objects" data-service="gcp.cloud-storage" data-class="confidential" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#FFC07A33;strokeColor=#FFC07A;fontColor=#0f1017;fontSize=12;" vertex="1" parent="1"><mxGeometry x="640" y="220" width="252" height="112" as="geometry"/></mxCell><mxCell id="queue" value="Intake queue
Eventarc" data-role="queue" data-service="gcp.eventarc" data-class="confidential" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#5EE6CF33;strokeColor=#5EE6CF;fontColor=#0f1017;fontSize=12;" vertex="1" parent="1"><mxGeometry x="640" y="40" width="252" height="112" as="geometry"/></mxCell><mxCell id="pipeline" value="Extraction workflow
Workflows" data-role="workflow" data-service="gcp.workflows" data-class="confidential" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#5EE6CF33;strokeColor=#5EE6CF;fontColor=#0f1017;fontSize=12;" vertex="1" parent="1"><mxGeometry x="940" y="220" width="252" height="112" as="geometry"/></mxCell><mxCell id="parser" value="Layout and OCR parser
Document AI" data-role="ingest" data-service="gcp.document-ai" data-class="confidential" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#FFC07A33;strokeColor=#FFC07A;fontColor=#0f1017;fontSize=12;" vertex="1" parent="1"><mxGeometry x="940" y="40" width="252" height="112" as="geometry"/></mxCell><mxCell id="gateway" value="Model gateway
Apigee (AI gateway policies)" data-role="gateway" data-service="gcp.apigee" data-class="confidential" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#B9A7FF33;strokeColor=#B9A7FF;fontColor=#0f1017;fontSize=12;" vertex="1" parent="1"><mxGeometry x="1240" y="40" width="252" height="112" as="geometry"/></mxCell><mxCell id="model" value="Extraction model
Gemini 3.8 Flash (Agent Platform)" data-role="model" data-service="gcp.gemini" data-class="confidential" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#5EE6CF33;strokeColor=#5EE6CF;fontColor=#0f1017;fontSize=12;" vertex="1" parent="1"><mxGeometry x="1540" y="40" width="252" height="112" as="geometry"/></mxCell><mxCell id="rules" value="Validation and master data
MCP server on Cloud Run" data-role="tools" data-service="gcp.cloud-run-mcp" data-class="confidential" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#5EE6CF33;strokeColor=#5EE6CF;fontColor=#0f1017;fontSize=12;" vertex="1" parent="1"><mxGeometry x="1240" y="220" width="252" height="112" as="geometry"/></mxCell><mxCell id="ledger" value="Case and field ledger
AlloyDB for PostgreSQL" data-role="store" data-service="gcp.alloydb" data-class="confidential" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#FFC07A33;strokeColor=#FFC07A;fontColor=#0f1017;fontSize=12;" vertex="1" parent="1"><mxGeometry x="1240" y="400" width="252" height="112" as="geometry"/></mxCell><mxCell id="exceptions" value="Exception console
Review console on Cloud Run" data-role="review" data-service="gcp.review-console" data-class="confidential" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#FF9FCB33;strokeColor=#FF9FCB;fontColor=#0f1017;fontSize=12;" vertex="1" parent="1"><mxGeometry x="940" y="400" width="252" height="112" as="geometry"/></mxCell><mxCell id="erp" value="ERP or claims system
External system" data-role="system" data-service="external" data-class="confidential" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#8AB4FF33;strokeColor=#8AB4FF;fontColor=#0f1017;fontSize=12;" vertex="1" parent="1"><mxGeometry x="1540" y="220" width="252" height="112" as="geometry"/></mxCell><mxCell id="traces" value="Pipeline telemetry
Cloud Logging, Monitoring, Trace" data-role="observability" data-service="gcp.observability" data-class="operational" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#FF9FCB33;strokeColor=#FF9FCB;fontColor=#0f1017;fontSize=12;" vertex="1" parent="1"><mxGeometry x="340" y="40" width="252" height="112" as="geometry"/></mxCell><mxCell id="evals" value="Field-level eval set
Evaluation service (Agent Platform)" data-role="evals" data-service="gcp.evaluation" data-class="confidential" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#FF9FCB33;strokeColor=#FF9FCB;fontColor=#0f1017;fontSize=12;" vertex="1" parent="1"><mxGeometry x="1540" y="400" width="252" height="112" as="geometry"/></mxCell><mxCell id="submit" value="Document" data-kind="data" data-class="confidential" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=0;fontSize=10;" edge="1" source="senders" target="intake" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="store-original" value="Original with content hash" data-kind="data" data-class="confidential" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=0;fontSize=10;" edge="1" source="intake" target="landing" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="enqueue" value="Object created event" data-kind="control" data-class="confidential" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=0;fontSize=10;dashed=1;" edge="1" source="landing" target="queue" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="start" value="Start run keyed by hash" data-kind="control" data-class="confidential" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=0;fontSize=10;dashed=1;" edge="1" source="queue" target="pipeline" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="parse" value="Pages" data-kind="data" data-class="confidential" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=0;fontSize=10;" edge="1" source="pipeline" target="parser" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="extract" value="Layout text and schema" data-kind="data" data-class="confidential" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=0;fontSize=10;" edge="1" source="pipeline" target="gateway" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="infer" value="Model call" data-kind="data" data-class="confidential" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=0;fontSize=10;" edge="1" source="gateway" target="model" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="validate" value="Fields to check" data-kind="data" data-class="confidential" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=0;fontSize=10;" edge="1" source="pipeline" target="rules" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="record" value="Fields, coordinates, rule results" data-kind="data" data-class="confidential" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=0;fontSize=10;" edge="1" source="pipeline" target="ledger" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="post" value="Post with idempotency key" data-kind="data" data-class="confidential" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=0;fontSize=10;" edge="1" source="pipeline" target="erp" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="except" value="Exception with failing field" data-kind="control" data-class="confidential" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=0;fontSize=10;dashed=1;" edge="1" source="pipeline" target="exceptions" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="resolve" value="Corrected field resumes run" data-kind="control" data-class="confidential" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=0;fontSize=10;dashed=1;" edge="1" source="exceptions" target="pipeline" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="telemetry" value="Step timings and cost" data-kind="telemetry" data-class="operational" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=0;fontSize=10;dashed=1;dashPattern=1 3;" edge="1" source="pipeline" target="traces" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="score" value="Replay labelled set per release" data-kind="control" data-class="confidential" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=0;fontSize=10;dashed=1;" edge="1" source="evals" target="pipeline" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell></root></mxGraphModel></diagram></mxfile>
