← Paul Test
doc259 6a782d2c-24d7-45de-8de1-de2f86acc709_France_Server_Architecture_Diagram.pdf
⬇ Export JSONBadge numbers are the reading order (depth-first). Nested children have dashed borders; grandchildren dotted. Hover a box for its type, text and attributes.
Page 1
46 item(s)
JSON
figure (1)
footer (3)
header (1)
heading (3)
table (4)
table_cell (26)
text (8)
1 · HEADER
2 · HEADING
3 · TEXT
4 · TEXT
5 · HEADING
6 · TEXT
7 · TABLE
8
9
10
11
12
13
14
15 · TEXT
16 · TEXT
17 · HEADING
18 · TEXT
19 · FIGURE
20 · TABLE
21
22
23
24 · TABLE
25 ·✨
26 · TEXT
27 · TEXT
28 · TABLE
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 · FOOTER
45 · FOOTER
46 · FOOTER
Page 1 JSON
{
"document_id": 259,
"page": 1,
"width_pt": 841.92,
"height_pt": 594.96,
"engine": "paddleocr_vl",
"source_run_id": 384,
"item_count": 46,
"counts_by_type": {
"figure": 1,
"footer": 3,
"header": 1,
"heading": 3,
"table": 4,
"table_cell": 26,
"text": 8
},
"build_ms": 5,
"items": [
{
"id": "p1.1",
"order": 1,
"type": "header",
"bbox": {
"l": 29.28,
"t": 568.32,
"r": 226.56,
"b": 557.76
},
"text": "ARCHITECTURE & INTEGRATION MODEL",
"attrs": {
"block_label": "header"
}
},
{
"id": "p1.2",
"order": 2,
"type": "heading",
"bbox": {
"l": 29.52,
"t": 549.36,
"r": 372.96,
"b": 519.84
},
"text": "Split Deployment — France",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p1.3",
"order": 3,
"type": "text",
"bbox": {
"l": 29.04,
"t": 515.04,
"r": 540.24,
"b": 488.16
},
"text": "Their data plane and our analysis plane both run in France, on separate hardware, joined only by a federated message link.\nPROPOSED"
},
{
"id": "p1.4",
"order": 4,
"type": "text",
"bbox": {
"l": 671.28,
"t": 504.72,
"r": 803.52,
"b": 493.68
},
"text": "PROPOSED | AUGUST 2026"
},
{
"id": "p1.5",
"order": 5,
"type": "heading",
"bbox": {
"l": 42,
"t": 446.64,
"r": 337.68,
"b": 418.08
},
"text": "Their infrastructure\nDATA PLANE · FRANCE · THEIR HARDWARE · THEIR DPA · STATEFUL",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p1.6",
"order": 6,
"type": "text",
"bbox": {
"l": 42.24,
"t": 400.8,
"r": 358.32,
"b": 358.8
},
"text": "Gateway, 40+ frontends, ~30 data services, MySQL, object store and their own broker. Every finding, screenshot, document, PII analysis and user account lives here.\nPRIVATE LINK\nmTLS\nfederation\nWireGuard\nor IPsec"
},
{
"id": "p1.7",
"order": 7,
"type": "table",
"bbox": {
"l": 45.36,
"t": 352.32,
"r": 354.96,
"b": 291.12
},
"text": "",
"attrs": {
"block_label": "table",
"n_rows": 3,
"n_cols": 3,
"integrity": {
"cells_checked": 7,
"cells_flagged": 0
}
},
"children": [
{
"id": "p1.7.1",
"order": 8,
"type": "table_cell",
"bbox": {
"l": 51.749998,
"t": 349.16622,
"r": 125.999418,
"b": 338.44122100000004
},
"text": "Traefik gateway",
"attrs": {
"row": 0,
"col": 0,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true,
"column_header": true,
"header_source": "heuristic"
}
},
{
"id": "p1.7.2",
"order": 9,
"type": "table_cell",
"bbox": {
"l": 143.249994,
"t": 349.16622,
"r": 202.649539,
"b": 338.44122100000004
},
"text": "accounts-api",
"attrs": {
"row": 0,
"col": 1,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true,
"column_header": true,
"header_source": "heuristic"
}
},
{
"id": "p1.7.3",
"order": 10,
"type": "table_cell",
"bbox": {
"l": 219.902338,
"t": 349.16622,
"r": 284.251842,
"b": 338.44122100000004
},
"text": "40+ frontends",
"attrs": {
"row": 0,
"col": 2,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true,
"column_header": true,
"header_source": "heuristic"
}
},
{
"id": "p1.7.4",
"order": 11,
"type": "table_cell",
"bbox": {
"l": 51.749998,
"t": 327.416221,
"r": 135.899336,
"b": 316.69122200000004
},
"text": "~30 data services",
"attrs": {
"row": 1,
"col": 0,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true
}
},
{
"id": "p1.7.5",
"order": 12,
"type": "table_cell",
"bbox": {
"l": 153.152341,
"t": 327.416221,
"r": 197.70201,
"b": 316.69122200000004
},
"text": "MySQL 8.4",
"attrs": {
"row": 1,
"col": 1,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true
}
},
{
"id": "p1.7.6",
"order": 13,
"type": "table_cell",
"bbox": {
"l": 214.957026,
"t": 327.416221,
"r": 351.008907,
"b": 316.69122200000004
},
"text": "object store their broker",
"attrs": {
"row": 1,
"col": 2,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true
}
},
{
"id": "p1.7.7",
"order": 14,
"type": "table_cell",
"bbox": {
"l": 45.36,
"t": 311.52,
"r": 354.96,
"b": 291.12
},
"text": "DETAIL ON PAGE 2",
"attrs": {
"row": 2,
"col": 0,
"rowspan": 1,
"colspan": 3
}
}
]
},
{
"id": "p1.8",
"order": 15,
"type": "text",
"bbox": {
"l": 387.84,
"t": 427.44,
"r": 453.84,
"b": 364.08
},
"text": "PRIVATE LINK\nmTLS\nfederation\nWireGuard\nor IPsec"
},
{
"id": "p1.9",
"order": 16,
"type": "text",
"bbox": {
"l": 396.24,
"t": 334.08,
"r": 447.6,
"b": 315.6
},
"text": "← verdicts crawl jobs"
},
{
"id": "p1.10",
"order": 17,
"type": "heading",
"bbox": {
"l": 480.48,
"t": 446.64,
"r": 777.36,
"b": 418.32
},
"text": "Our infrastructure\nANALYSIS PLANE · FRANCE · OUR HARDWARE · OUR IP · STATELESS",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p1.11",
"order": 18,
"type": "text",
"bbox": {
"l": 481.68,
"t": 401.04,
"r": 777.84,
"b": 359.28
},
"text": "Broker, crawler fleet, engine-service, ai-facade and Redis. It holds the tests and prompts and nothing else — no findings, no accounts, no documents."
},
{
"id": "p1.12",
"order": 19,
"type": "figure",
"bbox": {
"l": 457.44,
"t": 347.28,
"r": 465.84,
"b": 338.16
},
"text": "",
"attrs": {
"block_label": "image"
}
},
{
"id": "p1.13",
"order": 20,
"type": "table",
"bbox": {
"l": 489.6,
"t": 349.16622,
"r": 705.36,
"b": 337.68
},
"text": "",
"attrs": {
"n_rows": 1,
"n_cols": 3,
"integrity": {
"cells_checked": 3,
"cells_flagged": 0
}
},
"children": [
{
"id": "p1.13.1",
"order": 21,
"type": "table_cell",
"bbox": {
"l": 490.68748,
"t": 349.16622,
"r": 540.187107,
"b": 338.44122100000004
},
"text": "our broker",
"attrs": {
"row": 0,
"col": 0,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true
}
},
{
"id": "p1.13.2",
"order": 22,
"type": "table_cell",
"bbox": {
"l": 557.437477,
"t": 349.16622,
"r": 631.686897,
"b": 338.44122100000004
},
"text": "crawler-manager",
"attrs": {
"row": 0,
"col": 1,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true
}
},
{
"id": "p1.13.3",
"order": 23,
"type": "table_cell",
"bbox": {
"l": 648.937473,
"t": 349.16622,
"r": 703.387059,
"b": 338.44122100000004
},
"text": "crawler × 10",
"attrs": {
"row": 0,
"col": 2,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true
}
}
]
},
{
"id": "p1.14",
"order": 24,
"type": "table",
"bbox": {
"l": 555.84,
"t": 348.96,
"r": 792,
"b": 337.2
},
"text": "crawler-manager | crawler x10 | engine-service",
"attrs": {
"ai_retyped_from": "text",
"ai_reason": "Item #24 duplicates the chip row already extracted as table cells; it is a row of chips, not standalone text."
},
"children": [
{
"type": "table_cell",
"bbox": {
"l": 711.42,
"t": 352.81,
"r": 799.82,
"b": 337.94
},
"text": "engine-service",
"attrs": {
"source": "ai_vision",
"reason": "The 'engine-service' chip in our-infrastructure chip row is not covered by any table_cell (only mentioned loosely in overlapping text item #24)."
},
"children": [],
"order": 25,
"id": "p1.14.1"
}
]
},
{
"id": "p1.15",
"order": 26,
"type": "text",
"bbox": {
"l": 489.6,
"t": 327.6,
"r": 579.36,
"b": 315.84
},
"text": "ai-facade Redis"
},
{
"id": "p1.16",
"order": 27,
"type": "text",
"bbox": {
"l": 482.4,
"t": 306.24,
"r": 569.76,
"b": 295.44
},
"text": "DETAIL ON PAGE 3"
},
{
"id": "p1.17",
"order": 28,
"type": "table",
"bbox": {
"l": 38.16,
"t": 259.2,
"r": 803.76,
"b": 120.72
},
"text": "",
"attrs": {
"block_label": "table",
"n_rows": 5,
"n_cols": 3,
"integrity": {
"cells_checked": 15,
"cells_flagged": 0
}
},
"children": [
{
"id": "p1.17.1",
"order": 29,
"type": "table_cell",
"bbox": {
"l": 45.749998,
"t": 254.666224,
"r": 154.154046,
"b": 243.94122500000003
},
"text": "WHERE THE LINE FALLS",
"attrs": {
"row": 0,
"col": 0,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true,
"column_header": true,
"header_source": "heuristic"
}
},
{
"id": "p1.17.2",
"order": 30,
"type": "table_cell",
"bbox": {
"l": 168.749993,
"t": 254.666224,
"r": 282.598991,
"b": 243.94122500000003
},
"text": "ANALYSIS PLANE - OURS",
"attrs": {
"row": 0,
"col": 1,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true,
"column_header": true,
"header_source": "heuristic"
}
},
{
"id": "p1.17.3",
"order": 31,
"type": "table_cell",
"bbox": {
"l": 487.68748,
"t": 254.666224,
"r": 590.646578,
"b": 243.94122500000003
},
"text": "DATA PLANE - THEIRS",
"attrs": {
"row": 0,
"col": 2,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true,
"column_header": true,
"header_source": "heuristic"
}
},
{
"id": "p1.17.4",
"order": 32,
"type": "table_cell",
"bbox": {
"l": 45.749998,
"t": 225.703776,
"r": 71.158529,
"b": 213.73857600000002
},
"text": "Holds",
"attrs": {
"row": 1,
"col": 0,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true
}
},
{
"id": "p1.17.5",
"order": 33,
"type": "table_cell",
"bbox": {
"l": 168.749993,
"t": 225.703776,
"r": 283.039643,
"b": 213.73857600000002
},
"text": "Tests, crawler, AI prompts",
"attrs": {
"row": 1,
"col": 1,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true
}
},
{
"id": "p1.17.6",
"order": 34,
"type": "table_cell",
"bbox": {
"l": 487.68748,
"t": 225.703776,
"r": 682.17094,
"b": 213.73857600000002
},
"text": "Every result, document, screenshot, account",
"attrs": {
"row": 1,
"col": 2,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true
}
},
{
"id": "p1.17.7",
"order": 35,
"type": "table_cell",
"bbox": {
"l": 45.749998,
"t": 195.703777,
"r": 68.779509,
"b": 183.73857700000002
},
"text": "State",
"attrs": {
"row": 2,
"col": 0,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true
}
},
{
"id": "p1.17.8",
"order": 36,
"type": "table_cell",
"bbox": {
"l": 168.749993,
"t": 195.703777,
"r": 289.240628,
"b": 183.73857700000002
},
"text": "None that survives a restart",
"attrs": {
"row": 2,
"col": 1,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true
}
},
{
"id": "p1.17.9",
"order": 37,
"type": "table_cell",
"bbox": {
"l": 487.68748,
"t": 195.703777,
"r": 518.214774,
"b": 183.73857700000002
},
"text": "All of it",
"attrs": {
"row": 2,
"col": 2,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true
}
},
{
"id": "p1.17.10",
"order": 38,
"type": "table_cell",
"bbox": {
"l": 45.749998,
"t": 165.703778,
"r": 104.484039,
"b": 153.73857800000002
},
"text": "Reachable by",
"attrs": {
"row": 3,
"col": 0,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true
}
},
{
"id": "p1.17.11",
"order": 39,
"type": "table_cell",
"bbox": {
"l": 168.749993,
"t": 165.703778,
"r": 312.591934,
"b": 153.73857800000002
},
"text": "Their broker, over the private link",
"attrs": {
"row": 3,
"col": 1,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true
}
},
{
"id": "p1.17.12",
"order": 40,
"type": "table_cell",
"bbox": {
"l": 487.68748,
"t": 165.703778,
"r": 590.589099,
"b": 153.73857800000002
},
"text": "Their browsers, directly",
"attrs": {
"row": 3,
"col": 2,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true
}
},
{
"id": "p1.17.13",
"order": 41,
"type": "table_cell",
"bbox": {
"l": 45.749998,
"t": 135.70378000000005,
"r": 99.745549,
"b": 123.73857900000002
},
"text": "If they leave",
"attrs": {
"row": 4,
"col": 0,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true
}
},
{
"id": "p1.17.14",
"order": 42,
"type": "table_cell",
"bbox": {
"l": 168.749993,
"t": 135.70378000000005,
"r": 235.001321,
"b": 123.73857900000002
},
"text": "We keep the IP",
"attrs": {
"row": 4,
"col": 1,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true
}
},
{
"id": "p1.17.15",
"order": 43,
"type": "table_cell",
"bbox": {
"l": 487.68748,
"t": 135.70378000000005,
"r": 577.026819,
"b": 123.73857900000002
},
"text": "They keep their data",
"attrs": {
"row": 4,
"col": 2,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true
}
}
]
},
{
"id": "p1.18",
"order": 44,
"type": "footer",
"bbox": {
"l": 29.04,
"t": 36,
"r": 263.04,
"b": 27.36
},
"text": "SPLIT DEPLOYMENT · FRANCE · ARCHITECTURE TEAM",
"attrs": {
"block_label": "footer"
}
},
{
"id": "p1.19",
"order": 45,
"type": "footer",
"bbox": {
"l": 359.52,
"t": 36.24,
"r": 685.2,
"b": 27.12
},
"text": "BLUE = THEIR HARDWARE, THEIR DPA · AMBER = OUR HARDWARE, OUR IP",
"attrs": {
"block_label": "footer"
}
},
{
"id": "p1.20",
"order": 46,
"type": "footer",
"bbox": {
"l": 782.4,
"t": 36.48,
"r": 812.16,
"b": 26.4
},
"text": "1 / 4",
"attrs": {
"block_label": "number"
}
}
],
"ai_vision": {
"model": "claude-opus-5",
"confidence": 78,
"added": 1,
"retyped": 1
}
}
Page 2
23 item(s)
JSON
figure (2)
footer (2)
heading (11)
list (1)
list_item (3)
text (4)
1 · FIGURE
2 · HEADING
3 · HEADING
4 · FIGURE
5
6
7
8
9
10
11
12
13 · HEADING
14 · TEXT
15 · HEADING
16 · LIST
17
18
19
20 · HEADING
21 · TEXT
22 · FOOTER
23 · FOOTER
Page 2 JSON
{
"document_id": 259,
"page": 2,
"width_pt": 841.92,
"height_pt": 594.96,
"engine": "paddleocr_vl",
"source_run_id": 384,
"item_count": 23,
"counts_by_type": {
"figure": 2,
"footer": 2,
"heading": 11,
"list": 1,
"list_item": 3,
"text": 4
},
"build_ms": 1,
"items": [
{
"id": "p2.1",
"order": 1,
"type": "figure",
"bbox": {
"l": 731.04,
"t": 566.4,
"r": 802.56,
"b": 530.16
},
"text": "",
"attrs": {
"role": "page_header",
"block_label": "header_image",
"embedded_text": "STATEFUL"
}
},
{
"id": "p2.2",
"order": 2,
"type": "heading",
"bbox": {
"l": 44.16,
"t": 553.92,
"r": 402.24,
"b": 537.12
},
"text": "Their infrastructure — what runs on their server",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p2.3",
"order": 3,
"type": "heading",
"bbox": {
"l": 43.92,
"t": 533.28,
"r": 309.6,
"b": 522.24
},
"text": "DATA PLANE · FRANCE · THEIR HARDWARE · THEIR DPA",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p2.4",
"order": 4,
"type": "figure",
"bbox": {
"l": 33.84,
"t": 495.36,
"r": 471.36,
"b": 205.68
},
"text": "",
"attrs": {
"block_label": "image",
"embedded_text": "FORWARD-AUTH →\ntheir domain · their TLS certificates accounts-api\nsessions & user accounts\nstatic JS served by nginx\n~30 read/write APIs\nlandscape evidence content seo geo security privacy okf stats\nroadmap academy guardian toolbar feedback accounts …\nTheir broker\nscreenshots · OKF · PDFs RabbitMQ · federated to ours"
},
"children": [
{
"id": "p2.4.1",
"order": 5,
"type": "text",
"bbox": {
"l": 41.28,
"t": 490.08,
"r": 221.28,
"b": 475.92
},
"text": "Their staff browsers, inside their estate",
"attrs": {
"block_label": "paragraph_title",
"ai_retyped_from": "heading",
"ai_reason": "Item combines heading 'Their staff' with running text; but primarily it is a diagram node label — the extracted span also mismatches; still it is a labeled row…"
}
},
{
"id": "p2.4.2",
"order": 6,
"type": "heading",
"bbox": {
"l": 443.04,
"t": 488.4,
"r": 471.84,
"b": 478.8
},
"text": "HTTPS",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p2.4.3",
"order": 7,
"type": "heading",
"bbox": {
"l": 41.76,
"t": 446.64,
"r": 127.68,
"b": 432
},
"text": "Traefik gateway",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p2.4.4",
"order": 8,
"type": "heading",
"bbox": {
"l": 40.56,
"t": 378.96,
"r": 118.56,
"b": 364.8
},
"text": "40+ frontends",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p2.4.5",
"order": 9,
"type": "heading",
"bbox": {
"l": 41.52,
"t": 332.4,
"r": 116.4,
"b": 318.96
},
"text": "Data services",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p2.4.6",
"order": 10,
"type": "heading",
"bbox": {
"l": 39.84,
"t": 240.72,
"r": 96,
"b": 227.04
},
"text": "MySQL 8.4",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p2.4.7",
"order": 11,
"type": "heading",
"bbox": {
"l": 188.88,
"t": 240.48,
"r": 252.24,
"b": 227.04
},
"text": "Object store",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p2.4.8",
"order": 12,
"type": "text",
"bbox": {
"l": 39.6,
"t": 224.88,
"r": 150,
"b": 214.08
},
"text": "16 schemas, one per service"
}
]
},
{
"id": "p2.5",
"order": 13,
"type": "heading",
"bbox": {
"l": 495.84,
"t": 488.4,
"r": 615.36,
"b": 477.6
},
"text": "EVERYTHING STORED HERE",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p2.6",
"order": 14,
"type": "text",
"bbox": {
"l": 494.64,
"t": 471.36,
"r": 798,
"b": 430.32
},
"text": "Findings, screenshots, documents, PII analysis, remediation tracking and every user account — on infrastructure they own, under their own DPA."
},
{
"id": "p2.7",
"order": 15,
"type": "heading",
"bbox": {
"l": 495.84,
"t": 396.96,
"r": 593.04,
"b": 383.04
},
"text": "What they control",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p2.8",
"order": 16,
"type": "list",
"bbox": {
"l": 495.36,
"t": 376.56,
"r": 784.56,
"b": 294.24
},
"text": "",
"attrs": {
"item_count": 3
},
"children": [
{
"id": "p2.8.1",
"order": 17,
"type": "list_item",
"bbox": {
"l": 495.6,
"t": 376.56,
"r": 750.48,
"b": 363.36
},
"text": "Database backups, access controls and disaster recovery."
},
{
"id": "p2.8.2",
"order": 18,
"type": "list_item",
"bbox": {
"l": 495.36,
"t": 356.16,
"r": 784.56,
"b": 328.8
},
"text": "No analytics and no telemetry leave this estate — we cannot read their results."
},
{
"id": "p2.8.3",
"order": 19,
"type": "list_item",
"bbox": {
"l": 495.36,
"t": 321.12,
"r": 774.48,
"b": 294.24
},
"text": "Single-jurisdiction infrastructure: no multi-region replication to reason about."
}
]
},
{
"id": "p2.9",
"order": 20,
"type": "heading",
"bbox": {
"l": 496.32,
"t": 262.08,
"r": 589.44,
"b": 251.04
},
"text": "HOW THEY REACH US",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p2.10",
"order": 21,
"type": "text",
"bbox": {
"l": 494.16,
"t": 246.96,
"r": 794.16,
"b": 218.88
},
"text": "They never call us over HTTP. Their frontends and services talk only to their own broker; the broker federates across the private link."
},
{
"id": "p2.11",
"order": 22,
"type": "footer",
"bbox": {
"l": 29.28,
"t": 36,
"r": 160.56,
"b": 27.12
},
"text": "SPLIT DEPLOYMENT · FRANCE",
"attrs": {
"block_label": "footer"
}
},
{
"id": "p2.12",
"order": 23,
"type": "footer",
"bbox": {
"l": 782.64,
"t": 36.24,
"r": 812.16,
"b": 26.4
},
"text": "2 / 4",
"attrs": {
"block_label": "number"
}
}
],
"ai_vision": {
"model": "claude-opus-5",
"confidence": 76,
"added": 0,
"retyped": 1
}
}
Page 3
32 item(s)
JSON
footer (2)
header (1)
heading (12)
table_cell (2)
text (15)
1 · HEADER
2 · HEADING
3 · HEADING
4 · HEADING
5 · TEXT
6 · HEADING
7 · TEXT
8
9
10 · TEXT
11 · HEADING
12 · HEADING
13 · TEXT
14 · HEADING
15 · TEXT
16 · TEXT
17 · HEADING
18 · TEXT
19 · HEADING
20 · TEXT
21 · HEADING
22 · TEXT
23 · TEXT
24 · TEXT
25 · TEXT
26 · TEXT
27 · TEXT
28 · HEADING
29 · HEADING
30 · TEXT
31 · FOOTER
32 · FOOTER
Page 3 JSON
{
"document_id": 259,
"page": 3,
"width_pt": 841.92,
"height_pt": 594.96,
"engine": "paddleocr_vl",
"source_run_id": 384,
"item_count": 32,
"counts_by_type": {
"footer": 2,
"header": 1,
"heading": 12,
"table_cell": 2,
"text": 15
},
"build_ms": 2,
"items": [
{
"id": "p3.1",
"order": 1,
"type": "header",
"bbox": {
"l": 732.24,
"t": 545.52,
"r": 788.16,
"b": 534.72
},
"text": "STATELESS",
"attrs": {
"block_label": "header"
}
},
{
"id": "p3.2",
"order": 2,
"type": "heading",
"bbox": {
"l": 44.4,
"t": 553.44,
"r": 380.64,
"b": 537.12
},
"text": "Our infrastructure — what runs on our server",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p3.3",
"order": 3,
"type": "heading",
"bbox": {
"l": 43.68,
"t": 533.52,
"r": 303.84,
"b": 522.24
},
"text": "ANALYSIS PLANE · FRANCE · OUR HARDWARE · OUR IP",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p3.4",
"order": 4,
"type": "heading",
"bbox": {
"l": 43.2,
"t": 487.44,
"r": 163.44,
"b": 473.52
},
"text": "Our RabbitMQ broker",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p3.5",
"order": 5,
"type": "text",
"bbox": {
"l": 42.96,
"t": 471.6,
"r": 197.52,
"b": 460.8
},
"text": "publishes results out · never stores them"
},
{
"id": "p3.6",
"order": 6,
"type": "heading",
"bbox": {
"l": 400.8,
"t": 480.24,
"r": 451.68,
"b": 469.2
},
"text": "FEDERATED",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p3.7",
"order": 7,
"type": "text",
"bbox": {
"l": 40.56,
"t": 429.12,
"r": 326.4,
"b": 415.92
},
"text": "",
"attrs": {
"n_rows": 1,
"n_cols": 2,
"integrity": {
"cells_checked": 1,
"cells_flagged": 0
},
"ai_retyped_from": "table",
"ai_reason": "The region is two side-by-side cards (crawler-manager / crawler ×10), not a table with cells."
},
"children": [
{
"id": "p3.7.1",
"order": 8,
"type": "table_cell",
"bbox": {
"l": 40.56,
"t": 429.12,
"r": 183.48,
"b": 415.92
},
"text": "",
"attrs": {
"row": 0,
"col": 0,
"rowspan": 1,
"colspan": 1
}
},
{
"id": "p3.7.2",
"order": 9,
"type": "table_cell",
"bbox": {
"l": 265.910149,
"t": 428.876367,
"r": 324.172698,
"b": 415.990767
},
"text": "crawler × 10",
"attrs": {
"row": 0,
"col": 1,
"rowspan": 1,
"colspan": 1,
"bbox_refit": true
}
}
]
},
{
"id": "p3.8",
"order": 10,
"type": "text",
"bbox": {
"l": 40.8,
"t": 413.76,
"r": 378.24,
"b": 402.48
},
"text": "assigns crawl slots renders pages · runs 6 passes"
},
{
"id": "p3.9",
"order": 11,
"type": "heading",
"bbox": {
"l": 41.28,
"t": 377.52,
"r": 116.64,
"b": 364.8
},
"text": "engine-service",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p3.10",
"order": 12,
"type": "heading",
"bbox": {
"l": 264.24,
"t": 377.52,
"r": 313.92,
"b": 365.28
},
"text": "ai-facade",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p3.11",
"order": 13,
"type": "text",
"bbox": {
"l": 41.04,
"t": 362.16,
"r": 345.12,
"b": 350.64
},
"text": "single-URL scans holds the prompt set"
},
{
"id": "p3.12",
"order": 14,
"type": "heading",
"bbox": {
"l": 496.8,
"t": 488.16,
"r": 599.76,
"b": 477.6
},
"text": "NOTHING STORED HERE",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p3.13",
"order": 15,
"type": "text",
"bbox": {
"l": 494.4,
"t": 471.36,
"r": 792.48,
"b": 430.32
},
"text": "No findings, no accounts, no documents. Their data never travels to or resides on our infrastructure — which is why no code disclosure is needed."
},
{
"id": "p3.14",
"order": 16,
"type": "text",
"bbox": {
"l": 496.08,
"t": 398.64,
"r": 571.44,
"b": 387.6
},
"text": "OUTBOUND HTTPS"
},
{
"id": "p3.15",
"order": 17,
"type": "heading",
"bbox": {
"l": 496.32,
"t": 384.48,
"r": 604.08,
"b": 371.28
},
"text": "Their public websites",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p3.16",
"order": 18,
"type": "text",
"bbox": {
"l": 495.12,
"t": 368.16,
"r": 682.08,
"b": 355.68
},
"text": "the pages under test, fetched by the crawlers"
},
{
"id": "p3.17",
"order": 19,
"type": "heading",
"bbox": {
"l": 41.04,
"t": 321.12,
"r": 72,
"b": 308.88
},
"text": "Redis",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p3.18",
"order": 20,
"type": "text",
"bbox": {
"l": 240.72,
"t": 319.44,
"r": 461.52,
"b": 308.64
},
"text": "frontier · seen-set · slot queue — nothing survives a restart"
},
{
"id": "p3.19",
"order": 21,
"type": "heading",
"bbox": {
"l": 43.44,
"t": 275.76,
"r": 174.72,
"b": 264.48
},
"text": "★ NEVER LEAVES THIS BOX",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p3.20",
"order": 22,
"type": "text",
"bbox": {
"l": 48.48,
"t": 254.88,
"r": 370.8,
"b": 242.16
},
"text": "content analyzer\nSEO / GEO analyzers"
},
{
"id": "p3.21",
"order": 23,
"type": "text",
"bbox": {
"l": 49.68,
"t": 254.64,
"r": 158.4,
"b": 242.64
},
"text": "86 WCAG SC test files"
},
{
"id": "p3.22",
"order": 24,
"type": "text",
"bbox": {
"l": 48.48,
"t": 231.36,
"r": 410.16,
"b": 219.12
},
"text": "PDF remediation engine"
},
{
"id": "p3.23",
"order": 25,
"type": "text",
"bbox": {
"l": 49.92,
"t": 230.88,
"r": 281.52,
"b": 219.36
},
"text": "web security analyzer data privacy analyzer"
},
{
"id": "p3.24",
"order": 26,
"type": "text",
"bbox": {
"l": 50.16,
"t": 208.32,
"r": 119.28,
"b": 196.56
},
"text": "AI prompt set"
},
{
"id": "p3.25",
"order": 27,
"type": "text",
"bbox": {
"l": 42,
"t": 185.28,
"r": 426,
"b": 159.6
},
"text": "Not compiled into their binaries, not shipped as an image they can inspect, not present in their database. They receive verdicts only."
},
{
"id": "p3.26",
"order": 28,
"type": "heading",
"bbox": {
"l": 496.32,
"t": 326.64,
"r": 581.28,
"b": 315.6
},
"text": "OUTBOUND HTTPS ▲",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p3.27",
"order": 29,
"type": "heading",
"bbox": {
"l": 496.08,
"t": 312.24,
"r": 537.84,
"b": 299.28
},
"text": "OpenAI",
"attrs": {
"block_label": "paragraph_title"
}
},
{
"id": "p3.28",
"order": 30,
"type": "text",
"bbox": {
"l": 494.88,
"t": 295.92,
"r": 790.32,
"b": 270.72
},
"text": "Calls may include page content. Their DPO should review OpenAI's DPA, or AI features can be disabled."
},
{
"id": "p3.29",
"order": 31,
"type": "footer",
"bbox": {
"l": 29.28,
"t": 36,
"r": 160.56,
"b": 27.12
},
"text": "SPLIT DEPLOYMENT · FRANCE",
"attrs": {
"block_label": "footer"
}
},
{
"id": "p3.30",
"order": 32,
"type": "footer",
"bbox": {
"l": 783.36,
"t": 36.24,
"r": 812.16,
"b": 26.4
},
"text": "3 / 4",
"attrs": {
"block_label": "number"
}
}
],
"ai_vision": {
"model": "claude-opus-5",
"confidence": 62,
"added": 0,
"retyped": 1
}
}
Page 4
47 item(s)
JSON
footer (2)
header (1)
heading (22)
list (2)
list_item (9)
text (11)
1 · HEADER
2 · HEADING
3 · HEADING
4 · HEADING
5 · HEADING
6 · HEADING
7 · HEADING
8 · HEADING
9 · TEXT
10 · HEADING
11 · TEXT
12 · HEADING
13 · TEXT
14 · HEADING
15 · HEADING
16 · HEADING
17 · TEXT
18 · HEADING
19 · TEXT
20 · HEADING
21 · TEXT
22 · HEADING
23 · TEXT
24 · HEADING
25 · TEXT
26 · HEADING
27 · HEADING
28 · HEADING
29 · TEXT
30 · HEADING
31 · TEXT
32 · TEXT
33 · HEADING
34 · LIST
35
36
37
38
39
40 · HEADING
41 · LIST
42
43
44
45
46 · FOOTER
47 · FOOTER
Page 4 JSON
{
"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
}
}