{
  "schema": "provider-compliance.github-document-automation.v1",
  "snapshot_date": "2026-08-31",
  "public_safe": true,
  "scope": "document-pack generation, inspection, conversion, review and deterministic finalisation",
  "search_queries": [
    "docx templating", "ooxml docx", "docx template language:Python", "docx merge language:Python", "xlsx python", "pdf forms acroform", "pdf xfa", "document conversion parsing", "ocr documents", "document schema validation", "redline comments docx", "zip manifest diff documents", "esignature api", "pii redaction documents", "document storage s3", "workflow document approval", "pdf form library", "document management edms", "electronic signature open source"
  ],
  "candidate_count": 44,
  "deep_profile_count": 12,
  "closest_single_repo": {
    "repo": "python-openxml/python-docx",
    "url": "https://github.com/python-openxml/python-docx",
    "reason": "Best Python-level access to paragraphs, runs, tables, sections and headers/footers; still requires custom template, manifest, precedence and finalisation logic."
  },
  "recommended_combination": {
    "repos": ["python-openxml/python-docx", "openpyxl/openpyxl", "pypdf/pypdf", "pydantic/pydantic"],
    "optional_workers": ["docling-project/docling", "ocrmypdf/OCRmyPDF", "gotenberg/gotenberg", "qpdf/qpdf"],
    "reason": "Covers the common artifact formats while keeping case authority, approvals, source precedence, census and immutable finalisation in SISO-owned glue."
  },
  "deep_profiles": [
    {"repo":"open-xml-templating/docxtemplater","url":"https://github.com/open-xml-templating/docxtemplater","role":"OOXML template expansion","verified_metadata":{"stars":3613,"forks":383,"license":"NOASSERTION","pushed_at":"2026-08-04","language":"JavaScript"},"verdict":"probe","how_it_works":"Parses tags in OOXML ZIP parts, resolves scalar/loop/condition data and writes a new DOCX; modules add tables, images and subdocuments.","harrison_fit":"Strong JS template candidate; test split runs, headers, tables and licensing/modules before adoption."},
    {"repo":"elapouya/python-docx-template","url":"https://github.com/elapouya/python-docx-template","role":"Jinja-like DOCX templates","verified_metadata":{"stars":2698,"forks":452,"license":"NOASSERTION","pushed_at":"2026-07-07","language":"Python"},"verdict":"probe","how_it_works":"Places Jinja tags in Word XML and renders paragraphs, tables, headers/footers, subdocuments, images and rich text.","harrison_fit":"Good Python-first renderer; requires unresolved-token and cross-run pre/postflight checks."},
    {"repo":"python-openxml/python-docx","url":"https://github.com/python-openxml/python-docx","role":"Direct DOCX editing","verified_metadata":{"stars":5699,"forks":1303,"license":"MIT","pushed_at":"2026-08-01","language":"Python"},"verdict":"reuse","how_it_works":"Object model over WordprocessingML parts exposes paragraphs, runs, tables, sections, headers/footers and relationships.","harrison_fit":"Best custom-glue base for token walking and census; not a complete template or comments engine."},
    {"repo":"dotnet/Open-XML-SDK","url":"https://github.com/dotnet/Open-XML-SDK","role":"OOXML model and validation","verified_metadata":{"stars":4597,"forks":605,"license":"MIT","pushed_at":"2026-08-18","language":"C#"},"verdict":"probe","how_it_works":"Typed SDK for WordprocessingML and SpreadsheetML parts, relationships and markup validation.","harrison_fit":"Use for exact package traversal/schema checks if Python round-trips lose required constructs."},
    {"repo":"ClosedXML/ClosedXML","url":"https://github.com/ClosedXML/ClosedXML","role":"XLSX manipulation","verified_metadata":{"stars":5687,"forks":932,"license":"MIT","pushed_at":"2026-07-26","language":"C#"},"verdict":"probe","how_it_works":"High-level workbook/worksheet/table/style API over SpreadsheetML.","harrison_fit":"Useful for register generation; formula and unsupported-extension fidelity need fixtures."},
    {"repo":"openpyxl/openpyxl","url":"https://github.com/openpyxl/openpyxl","role":"Python XLSX inspection/editing","verified_metadata":{"metadata":"authenticated gh api target verified","license":"MIT"},"verdict":"reuse","how_it_works":"Reads/writes cells, formulas, styles, tables, defined names and workbook structure.","harrison_fit":"Natural register/census tool; cannot calculate formulas and needs ZIP-part diffing."},
    {"repo":"pypdf/pypdf","url":"https://github.com/pypdf/pypdf","role":"PDF objects, pages and AcroForms","verified_metadata":{"metadata":"authenticated gh api target verified","license":"BSD-style"},"verdict":"probe","how_it_works":"Parses/writes PDF objects, annotations, metadata and standard AcroForm fields; merges and splits pages.","harrison_fit":"First exact Commission-form probe; detect XFA/appearance/signature hard edges and fail closed."},
    {"repo":"qpdf/qpdf","url":"https://github.com/qpdf/qpdf","role":"PDF inspection/normalisation","verified_metadata":{"stars":5362,"forks":399,"license":"Apache-2.0","pushed_at":"2026-08-30","language":"C++"},"verdict":"reuse","how_it_works":"CLI/library for object inspection, stream handling, encryption, linearisation and structural repair.","harrison_fit":"Normalise and validate while preserving original hash; not a business form mapper."},
    {"repo":"docling-project/docling","url":"https://github.com/docling-project/docling","role":"Layout-aware extraction","verified_metadata":{"stars":65777,"forks":4724,"license":"MIT","pushed_at":"2026-08-30","language":"Python"},"verdict":"probe","how_it_works":"Converts PDF, DOCX, XLSX, HTML and images into structured layout/table-aware representations with OCR integrations.","harrison_fit":"Strong mixed-evidence ingestion probe; extracted text remains non-authoritative and provenance-bearing."},
    {"repo":"ocrmypdf/OCRmyPDF","url":"https://github.com/ocrmypdf/OCRmyPDF","role":"Searchable OCR/PDF-A","verified_metadata":{"stars":34631,"forks":2401,"license":"MPL-2.0","pushed_at":"2026-08-30","language":"Python"},"verdict":"reuse fallback","how_it_works":"Adds an OCR text layer and PDF/A processing around scanned PDFs.","harrison_fit":"Fallback only when extraction fails; retain confidence and page provenance."},
    {"repo":"gotenberg/gotenberg","url":"https://github.com/gotenberg/gotenberg","role":"Office-to-PDF service","verified_metadata":{"stars":12966,"forks":846,"license":"MIT","pushed_at":"2026-08-21","language":"Go"},"verdict":"probe","how_it_works":"HTTP service wrapping Chromium and LibreOffice for conversion, merging and PDF operations.","harrison_fit":"Useful preview/final-render boundary; pin image/version and compare output census."},
    {"repo":"documenso/documenso","url":"https://github.com/documenso/documenso","role":"Signing workflow reference","verified_metadata":{"stars":14824,"forks":3152,"license":"AGPL-3.0","pushed_at":"2026-08-31","language":"TypeScript"},"verdict":"boundary/reference","how_it_works":"Self-hostable signing application with document upload, recipients, fields, signing states and audit-oriented workflow.","harrison_fit":"Model client declaration boundary; do not embed without AGPL, tenancy and security review."}
  ],
  "coverage": {
    "direct_or_probe": ["DOCX tokens/runs/tables/headers", "OOXML relationships", "XLSX register/census", "PDF AcroForm inspection", "scanned evidence", "mixed-format extraction", "PDF preview/conversion", "schema validation"],
    "custom_required": ["edition selection", "source precedence", "inclusion flags", "case backstory", "deterministic census", "client/consultant approvals", "metadata scrubbing", "PII review", "output manifests", "immutable finalisation", "replay fixtures"]
  },
  "adoption_rules": {"reuse":"MIT/BSD/Apache components after fixture and license checks","probe":"run against real Commission/master-pack fixtures","defer":"requires persistence/tenancy proof not yet needed","reject":"toy/demo/no-license/one-off implementation without deterministic provenance"},
  "source_note":"Repository metadata is mutable and was captured via authenticated gh on 2026-08-31. GitHub license fields are metadata; read actual LICENSE/NOTICE and package licenses before shipping. README descriptions are repository claims; fit assessments are analysis/inference.",
  "report":"16-github-document-automation.md"
}
