{
    "document_id": 259,
    "page": 4,
    "width_pt": 841.92,
    "height_pt": 594.96,
    "engine": "paddleocr_vl",
    "source_run_id": 384,
    "item_count": 47,
    "counts_by_type": {
        "footer": 2,
        "header": 1,
        "heading": 22,
        "list": 2,
        "list_item": 9,
        "text": 11
    },
    "build_ms": 3,
    "items": [
        {
            "id": "p4.1",
            "order": 1,
            "type": "header",
            "bbox": {
                "l": 218.16,
                "t": 558.96,
                "r": 513.84,
                "b": 545.76
            },
            "text": "every step stays in France; the only crossing is the federated queue",
            "attrs": {
                "block_label": "header"
            }
        },
        {
            "id": "p4.2",
            "order": 2,
            "type": "heading",
            "bbox": {
                "l": 30.24,
                "t": 564.72,
                "r": 210.72,
                "b": 545.28
            },
            "text": "One crawl, end to end",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.3",
            "order": 3,
            "type": "heading",
            "bbox": {
                "l": 40.08,
                "t": 506.64,
                "r": 59.52,
                "b": 492.48
            },
            "text": "01",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.4",
            "order": 4,
            "type": "heading",
            "bbox": {
                "l": 178.32,
                "t": 504.24,
                "r": 206.88,
                "b": 494.16
            },
            "text": "THEIRS",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.5",
            "order": 5,
            "type": "heading",
            "bbox": {
                "l": 237.36,
                "t": 506.4,
                "r": 256.08,
                "b": 492.24
            },
            "text": "02",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.6",
            "order": 6,
            "type": "heading",
            "bbox": {
                "l": 374.64,
                "t": 504.24,
                "r": 404.4,
                "b": 494.16
            },
            "text": "THEIRS",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.7",
            "order": 7,
            "type": "heading",
            "bbox": {
                "l": 39.84,
                "t": 486,
                "r": 119.28,
                "b": 473.28
            },
            "text": "Scan requested",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.8",
            "order": 8,
            "type": "heading",
            "bbox": {
                "l": 237.12,
                "t": 486,
                "r": 341.28,
                "b": 473.28
            },
            "text": "Job onto their queue",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.9",
            "order": 9,
            "type": "text",
            "bbox": {
                "l": 39.6,
                "t": 468,
                "r": 409.68,
                "b": 443.76
            },
            "text": "A user in their UI asks for a crawl; the data service records the job.\nThe request is published to their broker — no HTTP call to us."
        },
        {
            "id": "p4.10",
            "order": 10,
            "type": "heading",
            "bbox": {
                "l": 433.92,
                "t": 506.64,
                "r": 452.88,
                "b": 492.24
            },
            "text": "03",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.11",
            "order": 11,
            "type": "text",
            "bbox": {
                "l": 576.48,
                "t": 505.2,
                "r": 602.64,
                "b": 492.96
            },
            "text": "",
            "attrs": {
                "block_label": "image",
                "embedded_text": "LINK",
                "ai_retyped_from": "figure",
                "ai_reason": "This is the 'LINK' badge label text on card 03, not a figure."
            }
        },
        {
            "id": "p4.12",
            "order": 12,
            "type": "heading",
            "bbox": {
                "l": 433.44,
                "t": 485.76,
                "r": 521.28,
                "b": 474
            },
            "text": "Federated across",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.13",
            "order": 13,
            "type": "text",
            "bbox": {
                "l": 433.2,
                "t": 468.24,
                "r": 597.36,
                "b": 444.48
            },
            "text": "The job crosses the mTLS private link to our broker."
        },
        {
            "id": "p4.14",
            "order": 14,
            "type": "heading",
            "bbox": {
                "l": 630.72,
                "t": 506.4,
                "r": 649.44,
                "b": 492.48
            },
            "text": "04",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.15",
            "order": 15,
            "type": "heading",
            "bbox": {
                "l": 774.72,
                "t": 504.24,
                "r": 797.76,
                "b": 493.92
            },
            "text": "OURS",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.16",
            "order": 16,
            "type": "heading",
            "bbox": {
                "l": 630.24,
                "t": 486.24,
                "r": 703.68,
                "b": 473.04
            },
            "text": "Slots assigned",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.17",
            "order": 17,
            "type": "text",
            "bbox": {
                "l": 630,
                "t": 468,
                "r": 789.6,
                "b": 444
            },
            "text": "crawler-manager claims a slot in Redis and dispatches crawlers."
        },
        {
            "id": "p4.18",
            "order": 18,
            "type": "heading",
            "bbox": {
                "l": 40.32,
                "t": 405.36,
                "r": 59.52,
                "b": 391.2
            },
            "text": "05",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.19",
            "order": 19,
            "type": "text",
            "bbox": {
                "l": 183.6,
                "t": 403.44,
                "r": 208.32,
                "b": 392.4
            },
            "text": "",
            "attrs": {
                "block_label": "image",
                "embedded_text": "OURS",
                "ai_retyped_from": "figure",
                "ai_reason": "This is the 'OURS' badge label text on card 05, not a figure."
            }
        },
        {
            "id": "p4.20",
            "order": 20,
            "type": "heading",
            "bbox": {
                "l": 39.84,
                "t": 384.72,
                "r": 114.24,
                "b": 372.24
            },
            "text": "Six passes run",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.21",
            "order": 21,
            "type": "text",
            "bbox": {
                "l": 39.36,
                "t": 366.72,
                "r": 203.28,
                "b": 329.52
            },
            "text": "Crawlers fetch their public pages and run WCAG, Content, SEO, GEO, Security and Privacy."
        },
        {
            "id": "p4.22",
            "order": 22,
            "type": "heading",
            "bbox": {
                "l": 237.36,
                "t": 405.12,
                "r": 255.6,
                "b": 390.96
            },
            "text": "06",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.23",
            "order": 23,
            "type": "text",
            "bbox": {
                "l": 380.16,
                "t": 403.44,
                "r": 406.08,
                "b": 392.16
            },
            "text": "",
            "attrs": {
                "block_label": "image",
                "embedded_text": "LINK",
                "ai_retyped_from": "figure",
                "ai_reason": "This is the 'LINK' badge label text on card 06, not a figure."
            }
        },
        {
            "id": "p4.24",
            "order": 24,
            "type": "heading",
            "bbox": {
                "l": 236.88,
                "t": 384.96,
                "r": 330.96,
                "b": 371.76
            },
            "text": "Verdicts published",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.25",
            "order": 25,
            "type": "text",
            "bbox": {
                "l": 235.68,
                "t": 366.72,
                "r": 406.08,
                "b": 342.72
            },
            "text": "Structured results — not rules — federate back to their broker."
        },
        {
            "id": "p4.26",
            "order": 26,
            "type": "heading",
            "bbox": {
                "l": 433.92,
                "t": 405.36,
                "r": 452.64,
                "b": 390.96
            },
            "text": "07",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.27",
            "order": 27,
            "type": "heading",
            "bbox": {
                "l": 570.24,
                "t": 402.72,
                "r": 601.2,
                "b": 393.36
            },
            "text": "THEIRS",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.28",
            "order": 28,
            "type": "heading",
            "bbox": {
                "l": 433.44,
                "t": 384.96,
                "r": 524.88,
                "b": 372.24
            },
            "text": "Stored and shown",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.29",
            "order": 29,
            "type": "text",
            "bbox": {
                "l": 433.44,
                "t": 366.72,
                "r": 593.76,
                "b": 342.48
            },
            "text": "Their data services write to MySQL and the object store; the UI updates."
        },
        {
            "id": "p4.30",
            "order": 30,
            "type": "heading",
            "bbox": {
                "l": 630.96,
                "t": 408.24,
                "r": 682.32,
                "b": 399.36
            },
            "text": "NET EFFECT",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.31",
            "order": 31,
            "type": "text",
            "bbox": {
                "l": 630.72,
                "t": 395.04,
                "r": 769.2,
                "b": 382.8
            },
            "text": "Verdicts move, data doesn't"
        },
        {
            "id": "p4.32",
            "order": 32,
            "type": "text",
            "bbox": {
                "l": 630.72,
                "t": 376.8,
                "r": 791.28,
                "b": 352.56
            },
            "text": "They hold every byte of customer data; we hold every line of analysis IP."
        },
        {
            "id": "p4.33",
            "order": 33,
            "type": "heading",
            "bbox": {
                "l": 43.68,
                "t": 291.36,
                "r": 146.16,
                "b": 275.76
            },
            "text": "Why this holds up",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.34",
            "order": 34,
            "type": "list",
            "bbox": {
                "l": 42.24,
                "t": 267.6,
                "r": 396.96,
                "b": 143.52
            },
            "text": "",
            "attrs": {
                "item_count": 5
            },
            "children": [
                {
                    "id": "p4.34.1",
                    "order": 35,
                    "type": "list_item",
                    "bbox": {
                        "l": 42.24,
                        "t": 267.6,
                        "r": 396.96,
                        "b": 254.4
                    },
                    "text": "No shared secrets — the link authenticates with mTLS certificates, not API keys."
                },
                {
                    "id": "p4.34.2",
                    "order": 36,
                    "type": "list_item",
                    "bbox": {
                        "l": 42.96,
                        "t": 246.72,
                        "r": 375.6,
                        "b": 219.12
                    },
                    "text": "No API exposure — our analysis services answer no HTTP; the queue is the only door."
                },
                {
                    "id": "p4.34.3",
                    "order": 37,
                    "type": "list_item",
                    "bbox": {
                        "l": 42.96,
                        "t": 211.44,
                        "r": 360.24,
                        "b": 198.24
                    },
                    "text": "Outage resilient — if the link drops, both queues buffer until it recovers."
                },
                {
                    "id": "p4.34.4",
                    "order": 38,
                    "type": "list_item",
                    "bbox": {
                        "l": 42.96,
                        "t": 191.52,
                        "r": 379.92,
                        "b": 178.32
                    },
                    "text": "Independent audit — both brokers log federation, reviewable on either side."
                },
                {
                    "id": "p4.34.5",
                    "order": 39,
                    "type": "list_item",
                    "bbox": {
                        "l": 43.2,
                        "t": 170.16,
                        "r": 383.04,
                        "b": 143.52
                    },
                    "text": "One exception — ai-facade calls OpenAI and may include page content; their DPO decides."
                }
            ]
        },
        {
            "id": "p4.35",
            "order": 40,
            "type": "heading",
            "bbox": {
                "l": 440.16,
                "t": 291.12,
                "r": 513.12,
                "b": 276.24
            },
            "text": "If they leave",
            "attrs": {
                "block_label": "paragraph_title"
            }
        },
        {
            "id": "p4.36",
            "order": 41,
            "type": "list",
            "bbox": {
                "l": 438.96,
                "t": 267.6,
                "r": 789.84,
                "b": 163.68
            },
            "text": "",
            "attrs": {
                "item_count": 4
            },
            "children": [
                {
                    "id": "p4.36.1",
                    "order": 42,
                    "type": "list_item",
                    "bbox": {
                        "l": 438.96,
                        "t": 267.6,
                        "r": 755.52,
                        "b": 240.48
                    },
                    "text": "They export findings, evidence and remediation tracking from their own data services."
                },
                {
                    "id": "p4.36.2",
                    "order": 43,
                    "type": "list_item",
                    "bbox": {
                        "l": 439.2,
                        "t": 232.8,
                        "r": 765.36,
                        "b": 219.12
                    },
                    "text": "We stop publishing to their queue and the private link is decommissioned."
                },
                {
                    "id": "p4.36.3",
                    "order": 44,
                    "type": "list_item",
                    "bbox": {
                        "l": 439.44,
                        "t": 211.44,
                        "r": 752.16,
                        "b": 185.28
                    },
                    "text": "They keep every finding, screenshot, document and account – no data escrow needed."
                },
                {
                    "id": "p4.36.4",
                    "order": 45,
                    "type": "list_item",
                    "bbox": {
                        "l": 439.2,
                        "t": 177.36,
                        "r": 789.84,
                        "b": 163.68
                    },
                    "text": "We retain the full analysis IP; no code was ever disclosed, so none is recovered."
                }
            ]
        },
        {
            "id": "p4.37",
            "order": 46,
            "type": "footer",
            "bbox": {
                "l": 29.52,
                "t": 36,
                "r": 262.8,
                "b": 27.36
            },
            "text": "SPLIT DEPLOYMENT · FRANCE · ARCHITECTURE TEAM",
            "attrs": {
                "block_label": "footer"
            }
        },
        {
            "id": "p4.38",
            "order": 47,
            "type": "footer",
            "bbox": {
                "l": 783.12,
                "t": 36.24,
                "r": 812.16,
                "b": 26.4
            },
            "text": "4 / 4",
            "attrs": {
                "block_label": "number"
            }
        }
    ],
    "ai_vision": {
        "model": "claude-opus-5",
        "confidence": 78,
        "added": 0,
        "retyped": 3
    }
}