{
 "version": "1.8.0",
 "slug": "specialty-trade-product-data-submittal-completeness-desk",
 "title": "CutSheet Clear — First-Pass Product Data Pack for one CSI section",
 "vertical": "Construction / specialty-trade subcontracting — product-data submittal operations",
 "seed": {
  "s": "specialty-trade-product-data-submittal-completeness-desk",
  "t": "CutSheet Clear — First-Pass Product Data Pack for one CSI section",
  "v": "Construction / specialty-trade subcontracting — product-data submittal operations",
  "r": "Medium-high",
  "m": "M"
 },
 "product": {
  "slug": "specialty-trade-product-data-submittal-completeness-desk",
  "project_name": "CutSheet Clear",
  "project_type": "outcome-priced, per-section product-data submittal completeness desk",
  "vertical": "Construction / specialty-trade subcontracting — product-data submittal operations",
  "audience": "US commercial specialty-trade subcontractors (electrical, HVAC/mechanical, plumbing, fire protection), 5-75 employees, submitting product data through GC portals without a dedicated submittals coordinator",
  "geography": "United States commercial construction; beachhead in TX, FL, and the Southeast/Sun Belt, no single-state licensing required for documentation work",
  "scale_expectation": "8-firm / 20-pack pilot cap in the first 60-90 days; 40+ packs/month by year 1 as per-trade SOPs and templates harden",
  "core_workflows": [
   "Intake and qualification of one CSI section + cut sheets + certificates",
   "OCR, page classification, and requirement extraction from the section",
   "Attribute crosswalk into a page-cited compliance matrix + chase list",
   "Deterministic rules gate, specialist QA, contractor attestation, and pack delivery"
  ],
  "discovery": {
   "one_line_purpose": "On CutSheet Clear, specialty-trade subcontractors stop having product-data submittals bounce for completeness and start getting a GC/AE-ready First-Pass Product Data Pack for one CSI section, before their submittal due date.",
   "primary_users": [
    "Specialty-trade subcontractor principal or owner (5-75 employees, no in-house submittals coordinator)",
    "Project manager or estimator who owns the submittal while already running jobs",
    "Manufacturer rep / distributor who wants the sub's package to clear so their product releases faster"
   ],
   "jobs_to_be_done": [
    "Get a first-pass, GC/AE-ready product-data pack for one CSI section without hiring a submittals coordinator",
    "Stop losing 2-4 weeks and ~$805 every time a package bounces Revise and Resubmit for completeness",
    "Release a long-lead item on time by clearing its product-data submittal the first time"
   ],
   "value_prop": "CutSheet Clear turns one CSI spec section plus manufacturer cut sheets into a first-pass, GC/AE-ready First-Pass Product Data Pack — compliance matrix, highlighted cut sheets, chase list with draft vendor emails, and a filled transmittal — with a trade-specialist QA signature, delivered before the due date.",
   "competitors": [
    "GC portals (Procore, Autodesk Build/ACC) that route and log submittals but do not assemble a complete, compliant pack",
    "AI submittal tooling (BuildSync/Datagrid-class) the sub has to operate, with no trade-aware human QA or done-for-you deliverable",
    "Managed submittal services (historically referenced week-priced) that sell a retainer, not a flat per-section outcome",
    "An in-house submittals coordinator ($50k-$90k loaded) that lumpy submittal volume cannot justify"
   ],
   "differentiation": "Done-for-you completeness, not a tool to operate: a per-section requirement/attribute crosswalk with a deterministic completeness gate and a trade-specialist QA signature, priced flat per CSI section with a completeness guarantee — strictly on the documentation side of the design-professional line.",
   "positioning_statement": "For specialty-trade subcontractor principals whose product-data submittals bounce for completeness, CutSheet Clear is the done-for-you desk that returns a GC/AE-ready First-Pass Product Data Pack for one CSI section before the due date — unlike submittal software or a full-time coordinator, we sell the completed section, flat per section, and never approve a substitution or claim AE approval."
  },
  "assumptions": [
   {
    "id": "specialty-trade-product-data-submittal-completeness-desk-a1",
    "statement": "Subcontractor principals will pay for a done-for-you Completeness outcome over continuing to book cut sheet totals unverified, once shown a concrete Rejection Risk Scan finding.",
    "confidence": "medium",
    "impact_if_wrong": "severe",
    "revisit_trigger": "First 10 pilot Rejection Risk Scan sales conversations — reject the wedge if willingness-to-pay signal is absent."
   },
   {
    "id": "specialty-trade-product-data-submittal-completeness-desk-a2",
    "statement": "A pack cycle can hit the 5-business-day (10 at pilot) delivery SLA from Subcontractor-supplied Spec section and cut sheets alone, without Subcontractor-side software integration.",
    "confidence": "medium",
    "impact_if_wrong": "high",
    "revisit_trigger": "First 3-6 pilot Rejection Risk Scans."
   },
   {
    "id": "specialty-trade-product-data-submittal-completeness-desk-a3",
    "statement": "Subcontractors tolerate AI-assisted cut sheet parsing and Gap drafting when an trade-specialist QA reviewer's approval and signature are explicit on every Submittal Pack.",
    "confidence": "medium",
    "impact_if_wrong": "high",
    "revisit_trigger": "First AE-comment dispute resolved off a CutSheet Clear Pack."
   },
   {
    "id": "specialty-trade-product-data-submittal-completeness-desk-a4",
    "statement": "Scan-to-desk conversion reaches at least 25-40% among qualified, warm-led Subcontractors.",
    "confidence": "low",
    "impact_if_wrong": "severe",
    "revisit_trigger": "Day-90 pilot-cohort conversion measurement (explicit kill/pivot gate at 25%)."
   },
   {
    "id": "specialty-trade-product-data-submittal-completeness-desk-a5",
    "statement": "Logical, row-level tenant isolation (not single-tenant infrastructure per client) is acceptable to the pilot cohort.",
    "confidence": "medium",
    "impact_if_wrong": "high",
    "revisit_trigger": "Any prospect (e.g. a multi-Subcontractor network) with a hard single-tenant compliance clause."
   }
  ],
  "unknowns": [
   {
    "id": "specialty-trade-product-data-submittal-completeness-desk-u1",
    "question": "Which specific trade-specialist QA reviewer signs off on the first cohort's Submittal Packs?",
    "blocks": "Any commercial engagement; the reviewer signature invariant.",
    "resolution_path": "Named reviewer + engagement letter on file before the first paid scan."
   },
   {
    "id": "specialty-trade-product-data-submittal-completeness-desk-u2",
    "question": "What is the true scan-to-desk conversion rate among warm, qualified leads?",
    "blocks": "Pricing hypothesis; scaling decision.",
    "resolution_path": "10-Subcontractor pilot cohort with explicit pricing conversation, measured against the Day-90 checkpoint (25% kill gate, 40% target)."
   },
   {
    "id": "specialty-trade-product-data-submittal-completeness-desk-u3",
    "question": "How much does per-section parser coverage actually reduce review minutes by day 90?",
    "blocks": "Unit-economics model; throughput assumptions.",
    "resolution_path": "Instrument reviewer minutes per cycle from pilot 1; compare to the 3.8h-launch to 1.9h-day-90 target."
   }
  ],
  "expert_panel": [
   {
    "role": "Product Strategy",
    "key_concern": "Is the Rejection Risk Scan narrow enough to sell in weeks without a custom integration?",
    "recommendation": "Launch scoped to a 3-month cut sheet lookback against a single Spec section; expand scope only after the pilot converts.",
    "dissent": "May understate the recurring-revenue story to early prospects expecting an always-on dashboard."
   },
   {
    "role": "Software Architecture",
    "key_concern": "Are we defaulting to a client-facing portal the pilot doesn't need yet?",
    "recommendation": "Single deployable modular monolith; upload-link/email intake only at launch, no client portal.",
    "dissent": "May read as under-built to a referral partner expecting a branded dashboard."
   },
   {
    "role": "Frontend / UX",
    "key_concern": "Is the evidence chain (cut sheet line to spec policy to reviewer approval) visible in every reviewer-facing view?",
    "recommendation": "Every Gap ComplianceMatrix line renders its cut sheet citation, matched requirement, and reviewer decision in one glance.",
    "dissent": "Adds density a non-Construction reviewer might call cluttered."
   },
   {
    "role": "Backend / Data",
    "key_concern": "Is the audit trail append-only and reconstructable for a AE comment dispute or diligence request years later?",
    "recommendation": "Event-sourced audit log for every pack-cycle state transition; hash-chained artifact snapshots.",
    "dissent": "More write-path complexity than plain CRUD; requires schema discipline as manufacturer formats evolve."
   },
   {
    "role": "AI / ML",
    "key_concern": "Are Gap classifications grounded in the spec requirement and never a free-form guess?",
    "recommendation": "Retrieval-first classification citing the specific Submittal-schedule line; deterministic money math in code, never the model; mandatory reviewer gate before any client- or vendor-facing claim.",
    "dissent": "Slower per-cycle than a fully automated tool; may frustrate a prospect expecting instant results."
   },
   {
    "role": "Security",
    "key_concern": "Is one subcontractor's financial and policy data isolated from every other subcontractor's?",
    "recommendation": "Row-level auth, per-tenant retrieval indices, log-scrubbing of financial figures.",
    "dissent": "None recorded this run."
   }
  ],
  "strategy": {
   "business_model": "Flat per-CSI-section pack fee ($149-$249; beachhead $179) plus a Resubmittal Sprint, a per-project Continuity Desk retainer, and a rush add-on; the free Rejection Risk Scan is the wedge.",
   "revenue_streams": [
    "Rejection Risk Scan (free wedge / primary CTA)",
    "First-Pass Product Data Pack ($149-$249 per CSI section; beachhead $179)",
    "Resubmittal Sprint ($99-$149 when AE comments are completeness-driven)",
    "Continuity Desk ($149-$299 per active project per month) + rush add-on (+$75-$125)"
   ],
   "moat": [
    "Per-section requirement/attribute library and per-GC/per-AE packaging-quirk knowledge, compounding with every pack",
    "Trade-specialist QA signature that converts a skeptical AE reviewer's default",
    "A defensible documentation-only boundary that keeps AEs comfortable and us out of design-practice risk",
    "Gold-standard pack library per trade/section that speeds each new pack"
   ],
   "gtm": [
    "Founder-led educational content + anonymized Rejection Risk Scan teardowns",
    "State AGC/ABC association webinars and Subcontractor-network member-benefit pilots",
    "Trade user-community how-to content + CPA/bookkeeper referral partnerships"
   ],
   "pricing_hypothesis": "Scan free; First-Pass Pack $179 beachhead (Div 22/23/26), $229-$249 for complex equipment sections; blended ~$190 by year 1 at 50%+ gross margin as specialist minutes/pack fall.",
   "kill_criteria": [
    "No signed pilot Subcontractor in 4 weeks of qualified outreach",
    "Reviewer median cycle time exceeds 115 minutes/client after pilot 5",
    "No paid standard-price conversion by Day 90",
    "A released Submittal Pack or vendor chase email causes a documented, CutSheet Clear-caused reputational or client-relationship incident"
   ]
  },
  "security": {
   "stride": [
    {
     "threat": "Spoofing",
     "scenario": "Attacker impersonates an trade-specialist QA reviewer to approve a fabricated Gap or sign a Submittal Pack.",
     "mitigation": "SSO with MFA; reviewer signatures bound to a cryptographic session claim, not a form field."
    },
    {
     "threat": "Tampering",
     "scenario": "Historical cut sheet or Pack entries edited after the fact to hide a bad match.",
     "mitigation": "Append-only audit log; hash-chained artifact snapshots; diff view on every reviewer surface."
    },
    {
     "threat": "Repudiation",
     "scenario": "Reviewer denies approving a Gap or signing a Pack that later proves wrong.",
     "mitigation": "Signed attestations with server-side timestamp + reviewer identity; export bundle includes signature manifest."
    },
    {
     "threat": "Information Disclosure",
     "scenario": "Cross-tenant leak of one subcontractor's Submittal/policy data through shared indices, logs, or prompts.",
     "mitigation": "Tenant-scoped row-level auth; PII/financial-data scrubbing in logs; retrieval indices partitioned per Subcontractor."
    },
    {
     "threat": "Denial of Service",
     "scenario": "A runaway extraction job or bulk export exhausts shared workers during a month-end delivery crunch.",
     "mitigation": "Per-tenant concurrency + budget caps; circuit breaker on model calls; degrade-gracefully queue."
    },
    {
     "threat": "Elevation of Privilege",
     "scenario": "A standard operator acquires reviewer-approval or vendor-chase-send capability via a workflow shortcut.",
     "mitigation": "Roles stored in a separate table; capability checks server-side; no client-only role checks."
    }
   ],
   "privacy_posture": "Data-minimization by default; per-Subcontractor isolation; data-processing terms on file; deletion-schedule runbook published.",
   "compliance_targets": [
    "Confidential project-data handling program",
    "SOC 2 Type I (year 2 roadmap)",
    "Engineering-practice boundary + collection-Subcontractor-statute review per state before scaling",
    "Manufacturer-portal terms-of-service log for any automated cut sheet pull"
   ],
   "data_classifications": [
    "Subcontractor spec basis-of-design set (sensitive business data)",
    "Manufacturer Submittal cut sheets (sensitive, third-party-sourced)",
    "Trade scope splits / furnish decision data (sensitive, HR-adjacent)",
    "Contact/PII (standard)"
   ]
  },
  "devops": {
   "ci_cd": "PR -> typecheck + unit + snapshot tests -> preview deploy -> main auto-deploys to a single production region; migrations gated on review.",
   "environments": [
    "local",
    "preview (per-PR)",
    "staging (shared)",
    "production (single region + multi-AZ)"
   ],
   "observability": [
    "Structured logs with tenant + request IDs",
    "RED metrics per workflow",
    "Error tracking with source maps",
    "Model-call spans with cost + latency",
    "Weekly SLO review, with a month-end delivery-crunch capacity review"
   ],
   "testing_pyramid": [
    "Unit tests on matching-derivation and source-page check validation modules",
    "Component tests on reviewer exception-queue surfaces",
    "Contract tests on manufacturer-cut sheet-schema parsers",
    "End-to-end smoke test on the intake -> match -> reviewer-signoff -> delivery path"
   ],
   "accessibility_tests": [
    "axe-core in CI on reviewer-facing surfaces",
    "Keyboard-only walkthrough per workflow",
    "Prefers-reduced-motion honored"
   ],
   "performance_budget": "p95 workflow latency published per module; cut sheet-extraction cold-path under 30s or shown as a background job."
  },
  "accessibility_i18n_ethics": {
   "wcag_target": "AA",
   "locales": [
    "en-US"
   ],
   "rtl_support": false,
   "ethical_risks": [
    "A Gap or recovered-dollar claim released without reviewer approval",
    "Vendor-chase language read as a demand or collection threat rather than an chase email",
    "An error in a AE comment record attributed to AI rather than owned by the reviewer"
   ],
   "ethical_guardrails": [
    "Human trade-specialist QA reviewer approval required before any Gap or vendor chase email ships",
    "Deterministic output filter blocks demand/collection-style language in every drafted vendor chase email",
    "AI-usage disclosure available in the engagement letter where relevant"
   ]
  },
  "governance": {
   "ownership": [
    {
     "area": "Product + roadmap",
     "owner": "Executive Sponsor"
    },
    {
     "area": "Architecture + platform",
     "owner": "Engineering Lead"
    },
    {
     "area": "Completeness + reviewer workflow",
     "owner": "Named trade-specialist QA reviewer"
    },
    {
     "area": "Compliance + privacy",
     "owner": "Compliance Lead"
    },
    {
     "area": "Design system",
     "owner": "Design Lead"
    },
    {
     "area": "SEO + content",
     "owner": "Content Lead"
    }
   ],
   "docs_required": [
    "ADR log (checked in)",
    "Owner-action Pack",
    "Evidence register",
    "STRIDE threat model",
    "Runbook: incident, restore, breach notification",
    "Reviewer playbook + signature policy"
   ],
   "naming_conventions": [
    "kebab-case slugs for blueprints and routes",
    "camelCase for TypeScript identifiers",
    "SCREAMING_SNAKE_CASE for environment variables",
    "Verb-first action names (e.g., generate-Completeness-pack)"
   ],
   "change_control": "ADR-per-major-decision; migrations require review; production deploys gated on green CI + owner-action Pack check."
  },
  "risk_register": [
   {
    "id": "specialty-trade-product-data-submittal-completeness-desk-r1",
    "risk": "A vendor-facing claim proves incorrect",
    "likelihood": "medium",
    "impact": "severe",
    "mitigation": "Every Gap claim linked to a cited Submittal-schedule version + reviewer signoff",
    "contingency": "Transmittal workflow; Subcontractor-notification template; audit-log export within 24 hours",
    "owner": "legal"
   },
   {
    "id": "specialty-trade-product-data-submittal-completeness-desk-r2",
    "risk": "AI hallucination in a delivered Gap line or vendor chase email",
    "likelihood": "medium",
    "impact": "high",
    "mitigation": "Retrieval-first pipeline + structured output validation + reviewer gate",
    "contingency": "Reviewer-triggered rollback + regeneration; incident postmortem published to the Subcontractor",
    "owner": "engineering"
   },
   {
    "id": "specialty-trade-product-data-submittal-completeness-desk-r3",
    "risk": "Cross-tenant Subcontractor financial data leak",
    "likelihood": "low",
    "impact": "severe",
    "mitigation": "Row-level auth + per-tenant retrieval indices + log-scrubbing",
    "contingency": "Breach-notification runbook; forced credential rotation; scoped tenant kill switch",
    "owner": "engineering"
   },
   {
    "id": "specialty-trade-product-data-submittal-completeness-desk-r4",
    "risk": "Pilot Subcontractor churns before converting to a paid desk",
    "likelihood": "medium",
    "impact": "high",
    "mitigation": "Weekly working-session cadence during pilot; documented value moments; owner-action Pack",
    "contingency": "Structured exit interview; write learnings into ICP + pricing hypothesis",
    "owner": "owner"
   },
   {
    "id": "specialty-trade-product-data-submittal-completeness-desk-r5",
    "risk": "An GC-portal vendor ships free, good-enough Completeness with a chase workflow",
    "likelihood": "medium-high",
    "impact": "high",
    "mitigation": "Portal-agnostic positioning; resubmittal/chase as the human moat software won't replicate",
    "contingency": "Reposition as \"we operate whatever spec tool exists\"; lean harder into the Diligence Source-page check line",
    "owner": "owner"
   }
  ],
  "roadmap": [
   {
    "phase": "Phase 0 — Discovery + pilot LOI",
    "weeks": "Weeks 1-2",
    "outcomes": [
     "3-5 pilot Subcontractor LOIs",
     "Evidence pack from each pilot Subcontractor",
     "Written ICP + pricing hypothesis"
    ],
    "exit_criteria": [
     "≥3 LOIs signed",
     "Owner-action Pack populated per Subcontractor",
     "Reviewer identity confirmed"
    ],
    "kill_criteria": [
     "<2 LOIs after 2 weeks",
     "No willingness-to-pay signal above pilot price"
    ]
   },
   {
    "phase": "Phase 1 — Thin vertical slice",
    "weeks": "Weeks 3-4",
    "outcomes": [
     "Intake -> match -> reviewer signoff -> delivery working end-to-end for one spec format",
     "Audit trail wired",
     "Instrumentation live"
    ],
    "exit_criteria": [
     "1 real Rejection Risk Scan delivered + reviewer-signed",
     "p95 workflow latency published"
    ],
    "kill_criteria": [
     "Reviewer signoff cycle >10 business days",
     "Evidence bundle cannot be reconstructed on demand"
    ]
   },
   {
    "phase": "Phase 2 — Pilot cohort",
    "weeks": "Weeks 3-8",
    "outcomes": [
     "10 pilot Subcontractors scanned",
     "First standard-price desk conversion",
     "SOC 2 Type I scoping"
    ],
    "exit_criteria": [
     "≥1 standard-price contract",
     "Post-scan debrief trust signal captured",
     "Postmortem cadence in place"
    ],
    "kill_criteria": [
     "No standard-price conversion by Day 90",
     "Scan-to-desk conversion below 25%"
    ]
   },
   {
    "phase": "Phase 3 — Recurring-desk scale-up",
    "weeks": "Weeks 9-13 (Day 90 checkpoint)",
    "outcomes": [
     "Public commercial launch of the microsite as 'ready'",
     "Rush rider and Diligence Source-page check line active",
     "Owner-action Pack closed for launch"
    ],
    "exit_criteria": [
     "COGS/rework/cycle-time measured against target",
     "Expansion beyond the pilot cohort gated on targets, not calendar time"
    ],
    "kill_criteria": [
     "Rework rate persistently above 3%",
     "Reviewer minutes per client not falling with volume"
    ]
   }
  ],
  "metrics": {
   "north_star": "Signed Monthly Completeness Packs delivered per week, per client, with zero client-caught material errors",
   "leading": [
    "Pilot Subcontractor LOIs signed",
    "Scan-request-to-delivered-scan cycle time",
    "Reviewer signoff cycle time",
    "Evidence coverage per Gap ComplianceMatrix line",
    "Owner-action Pack closure rate"
   ],
   "lagging": [
    "Paid standard-price desk contracts signed",
    "Scan-to-desk conversion (target ≥40%, pilot gate 25%)",
    "Client-caught material error rate (target <0.5%)",
    "Logo retention (target ≥85% annualized)"
   ],
   "guardrails": [
    "Model spend per tenant per week",
    "PII/financial data in logs (target: 0)",
    "Cross-tenant access attempts (target: 0)",
    "p95 workflow latency ceiling"
   ]
  },
  "executive_review": {
   "consensus": "Ship a thin, evidence-linked, reviewer-gated vertical slice for CutSheet Clear, wedged on the Rejection Risk Scan. Prefer a boring, single-region modular monolith. Do not launch commercially until owner-action facts close and at least one reviewer-signed Submittal Pack has shipped.",
   "dissent": "Executive Sponsor and Privacy/Compliance disagree on launch tempo — Privacy recommends waiting for the full state-by-state collection-Subcontractor-statute review before enabling the rush rider anywhere.",
   "go_no_go": "conditional-go",
   "top_3_risks": [
    "A vendor-facing claim proves incorrect",
    "AI hallucination in a delivered Gap line or vendor chase email",
    "Cross-tenant Subcontractor financial data leak"
   ],
   "first_10_steps": [
    "Confirm the named trade-specialist QA reviewer + engagement letter on file",
    "Populate owner-action Pack with entity, jurisdiction, contact inbox, privacy inbox",
    "Open pilot-cohort intake (cap 10) with explicit pricing conversation",
    "Write ICP + kill/pivot criteria in the plan file",
    "Stand up the evidence-linked intake -> match -> reviewer signoff loop",
    "Wire append-only audit log + hash-chained snapshots",
    "Add row-level auth + tenant-scoped retrieval indices",
    "Instrument scan-request, pack-delivery, and reviewer-signoff events",
    "Publish the microsite with FAQPage schema only and noindex until owner-facts close",
    "Schedule the Day-90 kill/pivot review with executive sponsor"
   ]
  }
 },
 "project_site": {
  "slug": "specialty-trade-product-data-submittal-completeness-desk",
  "app_name": "CutSheet Clear completeness desk",
  "archetype": "product-data completeness desk",
  "archetype_label": "product-data submittal completeness desk",
  "reader_role": "Subcontractor Principal",
  "one_sentence_app": "CutSheet Clear is a product-data completeness desk for specialty-trade subcontractors who need a GC/AE-ready pack for one CSI section, delivered before the submittal due date.",
  "homepage_sequence": [
   "scene",
   "workflow",
   "instrument",
   "offer",
   "proof",
   "qualification",
   "objections"
  ],
  "hero": {
   "frame_label": "Commercial specialty-trade subcontracting · product-data submittal completeness desk",
   "eyebrow": "Specialty-trade subcontractor / product-data submittals bounce for completeness",
   "interface_title": "CutSheet Clear completeness desk",
   "primary_panel_title": "Pack #CSC-000142 · §26 05 19 conductors · pack cycle open",
   "primary_panel_body": "Open pack: extract the section's required items, highlight the cut sheets to the intended model, crosswalk every required item to a source page, and chase any missing UL/AHRI/NSF listing before the due date.",
   "side_panel_title": "Before this ships",
   "side_panel_items": [
    "Every required item matched to a source page or on the chase list",
    "Every catalog page highlighted; every named cert attached or chased",
    "Transmittal fields complete; specialist QA signed; contractor attested"
   ],
   "status_metric": "QA",
   "status_label": "specialist QA gate active"
  },
  "language": {
   "problem_heading": "The subcontractor's moment",
   "mechanism_heading": "Inside the CutSheet Clear completeness desk",
   "proof_heading": "Why this survives an AE review and a buyout deadline",
   "offer_heading": "What leaves the room",
   "objection_heading": "The hard questions",
   "qualification_heading": "Who should not use this",
   "cta_close": "Start a free Rejection Risk Scan — reviewed and signed by a trade-aware specialist before delivery."
  },
  "modules": [
   {
    "name": "Section intake",
    "job": "Turns one CSI section, the cut sheets, and held certificates into a named pack with an intake checklist and qualification (trade, due date, private commercial).",
    "artifact": "pack intake record"
   },
   {
    "name": "Crosswalk & completeness",
    "job": "Extracts required items, OCRs and highlights the cut sheets, and drafts a page-cited compliance matrix and chase list — every row tied to a source page.",
    "artifact": "compliance matrix + chase list"
   },
   {
    "name": "Specialist QA & delivery",
    "job": "Runs the deterministic rules gate, gets a trade-specialist QA signature and the contractor's attestation, then delivers the pack with a rejection-risk score.",
    "artifact": "delivered First-Pass Product Data Pack"
   }
  ],
  "checkpoints": [
   {
    "label": "required-item match",
    "pass": "matched with a cited source page",
    "fail": "routed to the specialist exception queue"
   },
   {
    "label": "named certificate",
    "pass": "attached or on the chase list with a draft vendor email",
    "fail": "hard-fail: missing named cert blocks delivery"
   },
   {
    "label": "transmittal fields",
    "pass": "all fields complete with the spec-section reference",
    "fail": "hard-fail: blank transmittal field blocks delivery"
   }
  ],
  "signature_scene": "You run a 20-person electrical sub. It's the week after a §26 05 19 conductor package came back Revise and Resubmit — an unmarked catalog page and a missing UL listing, not the product. Buyout on the switchgear is three weeks out. You send CutSheet Clear the section and the cut sheets, and a GC/AE-ready pack comes back, specialist-QA signed, before your due date."
 },
 "ddd": {
  "slug": "specialty-trade-product-data-submittal-completeness-desk",
  "project_name": "CutSheet Clear",
  "business_understanding": {
   "summary": "CutSheet Clear — specialty-trade subcontractors stop guessing whether manufacturers paid correctly and start getting a signed Submittal Pack every pack cycle. Cut sheets are extracted at intake, matched against the subcontractor's own Spec basis-of-design set, every Gap is classified against the applicable spec requirement, and every Monthly Completeness Pack releases with an trade-specialist QA reviewer's signature and an audit trail.",
   "customer_profile": "independent electrical/HVAC/plumbing-led (fire-protection book welcome) Subcontractors, $500K-$5M submittal volume, 3-20 staff, 15-80 GC spec sections, no in-house dedicated submittals coordinator",
   "customer_pain": "Cut sheets arrive in 40+ inconsistent formats a month; nobody has the hours to verify a line item against the Spec set; missing, rejected, or late submittals are never chased; AE comment disputes have no cut sheet-backed answer; submittal volume can't tie to source cut sheets at tax time, in a lender review, or in an acquisition.",
   "paid_outcome": "A reliably delivered, reviewer-signed Monthly Completeness Pack per client per cycle (Submittal Pack, Gap ComplianceMatrix, cleared-first report, AE comment cut sheets, posting file), plus a living Completeness history — reconstructable on demand, defensible to a Subcontractor, a CPA, or an acquirer.",
   "value_creation": "AI compresses cut sheet extraction, requirement matching, and Gap-draft generation; deterministic code owns every source-page check, materiality threshold, and aging date; humans own reviewer approval, manufacturer-chase judgment, and anything client- or vendor-facing; the platform binds them with an append-only audit trail and per-Subcontractor isolation.",
   "why_ai_native": "The extract-match-classify-chase loop is only economical with a bounded AI layer feeding deterministic rules. A pure-manual specialist hire cannot hit flat sub-$1,000/mo pricing at the volumes small Subcontractors need; a pure-automated SaaS cannot draft a vendor chase email a Subcontractor will trust, hold the reviewer-approval gate, or absorb the judgment calls (as-earned timing, resubmittal netting) that keep the Pack defensible.",
   "operational_risks": [
    "Reviewer bottleneck during a month-end delivery crunch across many clients at once",
    "Prompt injection via uploaded manufacturer-cut sheet document content",
    "Cross-Subcontractor retrieval leak",
    "Complete records unobtainable at scale (cycles stuck in evidence-gap status)",
    "A vendor-facing chase email read as a demand rather than a routine chase email, damaging the client relationship"
   ],
   "assumptions": [
    "Subcontractor principals will pay for evidence-linked, human-reviewed Completeness over continuing to book cut sheet totals unverified.",
    "The workflow can be reconstructed from an Subcontractor-supplied Spec section and cut sheets within the 5-business-day (10 at pilot) cycle-time target.",
    "The vertical tolerates AI-assisted drafts when reviewer approval is explicit and every vendor-facing send is Subcontractor-authorized.",
    "Single-tenant infrastructure per customer is not required for the first cohort — logical isolation with row-level auth is acceptable.",
    "Demand persists as a recurring monthly need, not a one-time event — unlike a single-deadline filing business."
   ],
   "validation_questions": [
    "Which specific trade-specialist QA reviewer will sign off on the first cohort's Packs?",
    "Which spec platforms and manufacturer mixes are in scope for launch?",
    "What is the actual scan-to-desk conversion rate at pilot pricing vs. standard pricing?",
    "Which existing systems (spec exports, QuickBooks) must this integrate with day one?",
    "Is there a data-residency or on-prem constraint for any pilot subcontractor's financial data?"
   ]
  },
  "domain_discovery": {
   "actors": [
    {
     "actor": "Subcontractor principal",
     "role": "Owns the subcontractor's Submittal-Completeness engagement; supplies records and authorizes vendor-chase sends",
     "goals": [
      "Recover missing/rejected submittals",
      "Avoid losing staff hours to cut sheet matching",
      "Have a defensible Pack for subcontractors, CPA, and acquirers"
     ],
     "decisions": [
      "Whether to engage CutSheet Clear",
      "Which records to supply",
      "Whether to authorize vendor chase emails and the rush rider"
     ],
     "pain_points": [
      "No time for line-item cut sheet verification",
      "Doesn't know which of 40+ manufacturer formats are shortchanging the Subcontractor"
     ]
    },
    {
     "actor": "Trade-specialist QA reviewer",
     "role": "Reviews AI-matched cut sheets and drafted gaps; signs off before delivery or manufacturer send",
     "goals": [
      "Release only evidence-backed, source-page-complete Packs",
      "Protect Subcontractor and manufacturer relationships"
     ],
     "decisions": [
      "Approve, escalate, or reject a Gap",
      "Sign or withhold the Submittal Pack"
     ],
     "pain_points": [
      "Volume spikes during month-end delivery windows",
      "Ambiguous fuzzy matches requiring judgment"
     ]
    },
    {
     "actor": "Subcontractor",
     "role": "Receives furnish decision cut sheets computed from verified data; may dispute a furnish decision",
     "goals": [
      "Get paid correctly and on time"
     ],
     "decisions": [
      "Whether to escalate a furnish decision dispute"
     ],
     "pain_points": [
      "No cut sheet-backed answer when a furnish decision looks wrong"
     ]
    },
    {
     "actor": "Manufacturer Submittal Department (external)",
     "role": "Receives chase emails about missing/rejected submittals",
     "goals": [
      "Resolve chase emails without escalation"
     ],
     "decisions": [
      "Confirm, correct, or dispute an chase email"
     ],
     "pain_points": [
      "High chase email volume across many Subcontractors and formats"
     ]
    }
   ],
   "glossary": [
    {
     "term": "Rejection Risk Scan",
     "definition": "The one-time, $495 Completeness of the last 3 months of cut sheets against the Spec set.",
     "used_by": "Subcontractor principal",
     "context": "Completeness & Matching",
     "example": "Scan for Subcontractor #AG-2291 across 34 spec sections",
     "notes": "Never called 'audit', 'check', or 'review'."
    },
    {
     "term": "Completeness cycle",
     "definition": "One calendar month's worth of cut sheet collection, matching, and pack delivery for one client.",
     "used_by": "Trade-specialist QA reviewer",
     "context": "Completeness & Matching",
     "example": "The July pack cycle for Subcontractor #AG-2291",
     "notes": "The unit of recurring work."
    },
    {
     "term": "Submittal Pack",
     "definition": "The signed source-page check artifact: every cut sheet line matched to a policy, balanced to the penny.",
     "used_by": "Trade-specialist QA reviewer, Subcontractor principal",
     "context": "Completeness & Matching",
     "example": "July Submittal Pack, 34 manufacturers, traces to $128,410 in stated submittals",
     "notes": "Never called 'report' or 'cut sheet'."
    },
    {
     "term": "Gap ComplianceMatrix",
     "definition": "The list of missing, rejected, late, or resubmittal lines with dollar value and evidence.",
     "used_by": "Trade-specialist QA reviewer, Subcontractor principal",
     "context": "Completeness & Matching",
     "example": "3 rejected lines, 1 missing renewal, est. $2,140",
     "notes": "Never called 'exceptions report'."
    }
   ],
   "decisions": [
    {
     "decision": "Is this cut sheet line a real Gap or a normal spec quirk (e.g. as-earned lag)?",
     "who": "AI drafts, Reviewer confirms",
     "inputs": [
      "[PLACEHOLDER] owner to complete"
     ],
     "rule": "Classification thresholds per transaction type; spec-quirk map consulted before flagging",
     "output": "Gap classification with evidence citation",
     "risk": "False Gap sent to a manufacturer"
    },
    {
     "decision": "Is the Submittal Pack ready to sign?",
     "who": "Deterministic code gates, Reviewer signs",
     "inputs": "All cut sheet lines matched or exception-coded, Pack source-page check to cut sheet totals",
     "rule": "Source-page-complete rule: Pack must tie to cut sheet totals before release",
     "output": "Signed Submittal Pack",
     "risk": "Signed pack with an unresolved source-page check gap"
    }
   ],
   "events": [
    {
     "event": "CutSheetExtracted",
     "meaning": "A cut sheet is extracted and source-checked, ready for matching",
     "trigger": "Extraction Agent completes parsing + source-page check check",
     "downstream": [
      "[PLACEHOLDER] owner to complete"
     ]
    },
    {
     "event": "MatrixDrafted",
     "meaning": "A flagged Gap is reviewer-confirmed and evidenced",
     "trigger": "Trade-specialist QA reviewer approves the classification",
     "downstream": "Vendor chase email drafted; Chase list line finalized"
    }
   ]
  },
  "subdomains": [
   {
    "name": "Completeness & Matching",
    "type": "core",
    "description": "CutSheet normalization, Spec-requirement matching, expected-Submittal computation, and Gap classification.",
    "reason": "This is the paid outcome — the completed Pack and Chase list are what the Subcontractor is buying.",
    "business_value": "Direct revenue driver; every tier maps to a delivered Monthly Completeness Pack.",
    "recommendation": "Build in-house, deterministic-rules-first.",
    "ai_involvement": "Extraction, matching, Gap classification, drafting",
    "human_involvement": "Reviewer approval, Pack signature",
    "risks": [
     "Missed cycle-delivery SLA",
     "Incomplete evidence causing a client-caught error"
    ],
    "validation_questions": [
     "What is the real reviewer review time per cycle at volume?"
    ]
   },
   {
    "name": "Delivery",
    "type": "core",
    "description": "Vendor-chase drafting/sending, aging/tracking, Monthly Completeness Pack assembly, Resubmittal Pack.",
    "reason": "Differentiates CutSheet Clear from a generic bookkeeping service — this is the chase-and-collect layer.",
    "business_value": "Drives conversion (free scan -> paid desk) and the rush rider.",
    "recommendation": "Build in-house; maintain a per-section contact/quirk map from day one.",
    "ai_involvement": "Drafts chase emails and Resubmittal reports",
    "human_involvement": "Reviewer approves every outbound chase email; escalation judgment",
    "risks": [
     "Stalled recoveries with no tracked follow-up"
    ],
    "validation_questions": [
     "How often do manufacturers respond within the 60-day aging window?"
    ]
   },
   {
    "name": "Evidence & Compliance",
    "type": "supporting",
    "description": "Audit trail, engagement-letter authorization, licensing-boundary enforcement.",
    "reason": "Necessary complement to Completeness but not itself the differentiated value proposition.",
    "business_value": "Protects the licensing boundary and supports diligence/source-page check sales.",
    "recommendation": "Build thin; keep tightly scoped to documentation, never advice.",
    "ai_involvement": "Assembles audit exports",
    "human_involvement": "Compliance lead maintains state-by-state tracker",
    "risks": [
     "Scope creep into unlicensed Subcontractor or collection activity"
    ],
    "validation_questions": [
     "Which states need counsel review before the rush rider is offered?"
    ]
   },
   {
    "name": "Referral & Outreach",
    "type": "generic",
    "description": "CRM, outbound sequencing, and content publishing.",
    "reason": "Not differentiating; off-the-shelf tools suffice at this stage.",
    "business_value": "Supports pipeline but not the core value proposition.",
    "recommendation": "Buy (lightweight CRM), do not build.",
    "ai_involvement": "Content drafting assistance",
    "human_involvement": "Founder-led outreach and content",
    "risks": [
     "Low differentiation risk if under-invested"
    ],
    "validation_questions": [
     "Which channel actually converts at the assumed rate?"
    ]
   }
  ],
  "core_domain_analysis": {
   "primary_core": "Completeness & Matching",
   "secondary_cores": [
    "Delivery"
   ],
   "supporting_may_become_core": [
    "Evidence & Compliance"
   ],
   "generic_do_not_distract": [
    "Referral & Outreach",
    "CRM/pipeline tracking"
   ],
   "rationale": "The paid outcome is a signed Submittal Pack, so Completeness & Matching is the primary core. Delivery is a secondary core because manufacturer chase and tracked Resubmittal is the human-plus-AI moat that differentiates CutSheet Clear from software the Subcontractor has to operate itself. Evidence & Compliance could become core if the Diligence Source-page check line grows into a larger revenue stream, but starts as supporting. Referral & Outreach uses off-the-shelf tooling deliberately to keep engineering focus on the product-data submittal completeness engine."
  },
  "bounded_contexts": [
   {
    "name": "Intake & Normalization",
    "purpose": "Turn arriving cut sheets into normalized, tied-out canonical records ready for matching.",
    "subdomain": "Completeness & Matching (core)",
    "type": "core",
    "owned_language": [
     "cut sheet",
     "pack cycle",
     "completeness check"
    ],
    "owns": [
     "CutSheet intake lifecycle",
     "Normalization state",
     "Spec section completeness"
    ],
    "does_not_own": [
     "Matching decisions",
     "Reviewer signature"
    ],
    "primary_actors": [
     "Subcontractor principal",
     "Extraction Agent"
    ],
    "entities": [
     "CutSheet",
     "Section"
    ],
    "value_objects": [
     "ConfidenceScore",
     "CutSheetTotal"
    ],
    "aggregates": [
     "CutSheetAggregate"
    ],
    "domain_services": [
     "CutSheet normalizer",
     "Completeness checker"
    ],
    "application_services": [
     "ReceiveCutSheet",
     "NormalizeCutSheet",
     "CheckCompleteness"
    ],
    "commands": [
     "ReceiveCutSheet",
     "NormalizeCutSheet"
    ],
    "domain_events": [
     "cut sheet.received",
     "cut sheet.normalized",
     "cut sheet.completeness_check_failed"
    ],
    "policies": [
     "Auto-flag missing cut sheet against the section list"
    ],
    "specifications": [
     "CutSheetSourcePageSpec"
    ],
    "invariants": [
     "A CutSheet cannot be matched against until its line-item sum traces to its stated total"
    ],
    "ai_agents": [
     "Extraction Agent"
    ],
    "human_roles": [
     "Subcontractor principal"
    ],
    "data_owned": [
     "CutSheet",
     "Section"
    ],
    "inputs": [
     "Uploaded/forwarded cut sheets",
     "Spec section list"
    ],
    "outputs": [
     "Normalized canonical cut sheet records"
    ],
    "external_integrations": [
     "Cut sheet portals (authorized pull only)",
     "Monitored intake mailbox"
    ],
    "risks": [
     "A malformed cut sheet silently mis-tied",
     "Missing cut sheet for the period goes unnoticed"
    ],
    "interfaces": [
     "-> Completeness & Matching (CutSheetExtracted)"
    ]
   },
   {
    "name": "Completeness & Matching",
    "purpose": "Match normalized cut sheet lines to the subcontractor's Spec set, compute expected submittals, and classify gaps.",
    "subdomain": "Completeness & Matching (core)",
    "type": "core",
    "owned_language": [
     "Submittal Pack",
     "Gap ComplianceMatrix",
     "match",
     "Gap"
    ],
    "owns": [
     "Matching engine",
     "Gap classification",
     "Pack source-page check"
    ],
    "does_not_own": [
     "Reviewer identity",
     "Billing"
    ],
    "primary_actors": [
     "Trade-specialist QA reviewer",
     "Matching Agent"
    ],
    "entities": [
     "Section",
     "ComplianceMatrix",
     "Pack"
    ],
    "value_objects": [
     "ConfidenceScore",
     "GapClassification"
    ],
    "aggregates": [
     "SectionAggregate",
     "ComplianceMatrixAggregate",
     "PackAggregate"
    ],
    "domain_services": [
     "Matching engine",
     "Expected-Submittal calculator"
    ],
    "application_services": [
     "RunMatching",
     "ClassifyGap",
     "ApproveGap",
     "SignPack"
    ],
    "commands": [
     "RunMatching",
     "FlagGap",
     "ApproveGap",
     "SignPack"
    ],
    "domain_events": [
     "pack_cycle.crosswalk_completed",
     "Gap.flagged",
     "Gap.reviewer_approved",
     "Submittal_Pack.signed"
    ],
    "policies": [
     "Auto-route low-confidence matches to reviewer exception queue"
    ],
    "specifications": [
     "PennyPerfectTieOutSpec",
     "EvidenceCitationSpec"
    ],
    "invariants": [
     "A Pack cannot be signed until it traces to cut sheet totals to the penny",
     "No Gap reaches a client or manufacturer without reviewer approval"
    ],
    "ai_agents": [
     "Matching Agent",
     "Gap Drafter Agent"
    ],
    "human_roles": [
     "Trade-specialist QA reviewer"
    ],
    "data_owned": [
     "Section",
     "ComplianceMatrix",
     "Pack"
    ],
    "inputs": [
     "Normalized cut sheets",
     "Spec basis-of-design set export",
     "Submittal schedules"
    ],
    "outputs": [
     "Signed Submittal Pack",
     "Approved Gap ComplianceMatrix"
    ],
    "external_integrations": [
     "Subcontractor management system export (file-based, no live API)"
    ],
    "risks": [
     "Wrong match causes a wrong Pack",
     "False Gap claim reaches a manufacturer"
    ],
    "interfaces": [
     "-> Delivery (MatrixDrafted)"
    ]
   },
   {
    "name": "Delivery",
    "purpose": "Draft and send Subcontractor-authorized vendor chase emails, track Resubmittal, and assemble the Monthly Completeness Pack.",
    "subdomain": "Delivery (core)",
    "type": "core",
    "owned_language": [
     "vendor chase email",
     "cleared sections",
     "Monthly Completeness Pack"
    ],
    "owns": [
     "ChaseItem drafting/sending",
     "Aging tracker",
     "Pack assembly"
    ],
    "does_not_own": [
     "Gap classification (upstream)"
    ],
    "primary_actors": [
     "Trade-specialist QA reviewer",
     "ChaseItem Drafter Agent"
    ],
    "entities": [
     "ChaseItem",
     "AECommentRecord",
     "MonthlyCompletenessPack"
    ],
    "value_objects": [
     "AgingWindow",
     "RecoveredAmount"
    ],
    "aggregates": [
     "ChaseItemAggregate"
    ],
    "domain_services": [
     "ChaseItem drafter",
     "Aging tracker",
     "Pack assembler"
    ],
    "application_services": [
     "DraftChaseItem",
     "SendChaseItem",
     "ComputeMatrix",
     "AssemblePack",
     "DeliverPack"
    ],
    "commands": [
     "DraftChaseItem",
     "SendChaseItem",
     "DeliverPack"
    ],
    "domain_events": [
     "manufacturer_chase email.sent",
     "manufacturer_chase email.resolved",
     "Resubmittal.logged",
     "pack.delivered",
     "aging.escalated_60d",
     "aging.escalated_90d"
    ],
    "policies": [
     "Auto-escalate any chase email unresolved past 60 days"
    ],
    "specifications": [
     "ChaseAuthorizationSpec"
    ],
    "invariants": [
     "A ChaseItem cannot be sent without reviewer approval and Subcontractor authorization on file",
     "A AECommentRecord is computed only from the Subcontractor-approved scope split"
    ],
    "ai_agents": [
     "ChaseItem Drafter Agent"
    ],
    "human_roles": [
     "Trade-specialist QA reviewer"
    ],
    "data_owned": [
     "ChaseItem",
     "AECommentRecord",
     "MonthlyCompletenessPack"
    ],
    "inputs": [
     "Approved Gap ComplianceMatrix",
     "Trade scope split"
    ],
    "outputs": [
     "Sent vendor chase emails",
     "Delivered Monthly Completeness Pack"
    ],
    "external_integrations": [
     "Manufacturer Submittal-department mailboxes (Subcontractor-authorized sends only)"
    ],
    "risks": [
     "Vendor chase email read as a demand rather than an chase email",
     "Stalled Resubmittal with no escalation"
    ],
    "interfaces": [
     "-> Quality Assurance (PackReadyForSignoff)"
    ]
   },
   {
    "name": "Quality Assurance",
    "purpose": "Bind reviewer identity, timestamp, and artifact hash immutably to every signed pack and sent chase email; handle transmittals.",
    "subdomain": "Completeness & Matching (core, QA slice)",
    "type": "core",
    "owned_language": [
     "reviewer signoff",
     "transmittal"
    ],
    "owns": [
     "Signoff records",
     "Transmittal workflow"
    ],
    "does_not_own": [
     "Pack drafting"
    ],
    "primary_actors": [
     "Trade-specialist QA reviewer"
    ],
    "entities": [
     "Signoff",
     "Transmittal"
    ],
    "value_objects": [
     "SignatureManifest",
     "TransmittalReason"
    ],
    "aggregates": [
     "AttestationAggregate",
     "TransmittalAggregate"
    ],
    "domain_services": [
     "Signature binder"
    ],
    "application_services": [
     "ApproveArtifact",
     "RetractArtifact"
    ],
    "commands": [
     "ApproveArtifact",
     "RetractArtifact"
    ],
    "domain_events": [
     "Submittal_Pack.signed",
     "pack.retracted"
    ],
    "policies": [
     "A transmittal requires senior-reviewer co-signature"
    ],
    "specifications": [
     "SignoffValiditySpec"
    ],
    "invariants": [
     "Signature bound to a live authenticated session, not a form field",
     "Signed artifacts are immutable"
    ],
    "ai_agents": [],
    "human_roles": [
     "Trade-specialist QA reviewer",
     "Senior Reviewer"
    ],
    "data_owned": [
     "Signoff",
     "Transmittal"
    ],
    "inputs": [
     "Draft Pack/pack ready for signoff"
    ],
    "outputs": [
     "Signed artifact"
    ],
    "external_integrations": [],
    "risks": [
     "Reviewer identity spoofing"
    ],
    "interfaces": [
     "<- Completeness & Matching (SignPack)",
     "<- Delivery (PackReadyForSignoff)"
    ]
   }
  ],
  "context_map": [
   {
    "upstream": "Intake & Normalization",
    "downstream": "Completeness & Matching",
    "relationship": "Customer-Supplier",
    "integration_pattern": "Domain event (CutSheetExtracted) consumed by matching engine",
    "translation_notes": "Canonical cut sheet schema is the shared contract; no direct database coupling.",
    "pattern": "Customer-Supplier",
    "contract_type": "domain event",
    "data_exchanged": [
     "[PLACEHOLDER] owner to complete"
    ],
    "events_exchanged": [
     "Domain event (CutSheetExtracted) consumed by matching engine"
    ],
    "ownership_boundary": "Downstream never writes to upstream's tables",
    "acl_notes": "Anti-corruption translation not needed — shared canonical schema",
    "business_reason": "Keeps each context's invariants enforceable independently",
    "failure_risks": [
     "[PLACEHOLDER] owner to complete"
    ]
   },
   {
    "upstream": "Completeness & Matching",
    "downstream": "Delivery",
    "relationship": "Customer-Supplier",
    "integration_pattern": "Domain event (MatrixDrafted) triggers chase email drafting",
    "translation_notes": "Only reviewer-approved gaps cross the boundary.",
    "pattern": "Customer-Supplier",
    "contract_type": "domain event",
    "data_exchanged": "Canonical schema payload only",
    "events_exchanged": [
     "Domain event (MatrixDrafted) triggers chase email drafting"
    ],
    "ownership_boundary": "Downstream never writes to upstream's tables",
    "acl_notes": "Anti-corruption translation not needed — shared canonical schema",
    "business_reason": "Keeps each context's invariants enforceable independently",
    "failure_risks": "Downstream stalls if upstream event delivery fails"
   },
   {
    "upstream": "Completeness & Matching",
    "downstream": "Quality Assurance",
    "relationship": "Conformist",
    "integration_pattern": "SignPack command with synchronous validation",
    "translation_notes": "QA enforces the source-page-complete invariant; Completeness & Matching conforms to QA's signature contract.",
    "pattern": "Conformist",
    "contract_type": "domain event",
    "data_exchanged": "Canonical schema payload only",
    "events_exchanged": [
     "SignPack command with synchronous validation"
    ],
    "ownership_boundary": "Downstream never writes to upstream's tables",
    "acl_notes": "Anti-corruption translation not needed — shared canonical schema",
    "business_reason": "Keeps each context's invariants enforceable independently",
    "failure_risks": "Downstream stalls if upstream event delivery fails"
   },
   {
    "upstream": "Delivery",
    "downstream": "Quality Assurance",
    "relationship": "Conformist",
    "integration_pattern": "PackReadyForSignoff event",
    "translation_notes": "Pack cannot deliver without QA signoff.",
    "pattern": "Conformist",
    "contract_type": "domain event",
    "data_exchanged": "Canonical schema payload only",
    "events_exchanged": [
     "PackReadyForSignoff event"
    ],
    "ownership_boundary": "Downstream never writes to upstream's tables",
    "acl_notes": "Anti-corruption translation not needed — shared canonical schema",
    "business_reason": "Keeps each context's invariants enforceable independently",
    "failure_risks": "Downstream stalls if upstream event delivery fails"
   }
  ],
  "external_integrations": [
   {
    "system": "Subcontractor management system (spec) export",
    "direction": "inbound",
    "pattern": "File-based export, no live API at launch",
    "risk": "Schema drift per Spec version",
    "owner_context": "Delivery",
    "data_in": [
     "[PLACEHOLDER] owner to complete"
    ],
    "data_out": [
     "[PLACEHOLDER] owner to complete"
    ],
    "trigger": "Completeness cycle start",
    "internal_model": "Canonical cut-sheet/pack schema",
    "acl_strategy": "Per-section parser translates external format to canonical schema",
    "failure_strategy": "Retry then manual fallback",
    "audit_need": "Every external call logged with timestamp and payload hash"
   },
   {
    "system": "Cut sheet portals",
    "direction": "inbound",
    "pattern": "Subcontractor-authorized credentialed pull or client-forwarded file",
    "risk": "Portal ToS friction; credential expiry",
    "owner_context": "Intake & Normalization",
    "data_in": "Cut sheet content",
    "data_out": "N/A",
    "trigger": "Completeness cycle start",
    "internal_model": "Canonical cut-sheet/pack schema",
    "acl_strategy": "Per-section parser translates external format to canonical schema",
    "failure_strategy": "Retry then manual fallback",
    "audit_need": "Every external call logged with timestamp and payload hash"
   },
   {
    "system": "QuickBooks / spec posting-file import",
    "direction": "outbound",
    "pattern": "Generated posting file, Subcontractor-side import",
    "risk": "Format mismatch per bookkeeping software version",
    "owner_context": "Delivery",
    "data_in": "N/A",
    "data_out": "Posting file or chase email email",
    "trigger": "Reviewer approval",
    "internal_model": "Canonical cut-sheet/pack schema",
    "acl_strategy": "Per-section parser translates external format to canonical schema",
    "failure_strategy": "Retry then manual fallback",
    "audit_need": "Every external call logged with timestamp and payload hash"
   },
   {
    "system": "Manufacturer Submittal-department mailbox",
    "direction": "outbound",
    "pattern": "Subcontractor-authorized email send",
    "risk": "ChaseItem misread as a demand",
    "owner_context": "Delivery",
    "data_in": "N/A",
    "data_out": "Posting file or chase email email",
    "trigger": "Reviewer approval",
    "internal_model": "Canonical cut-sheet/pack schema",
    "acl_strategy": "Per-section parser translates external format to canonical schema",
    "failure_strategy": "Retry then manual fallback",
    "audit_need": "Every external call logged with timestamp and payload hash"
   }
  ],
  "event_storm": [
   {
    "seq": 1,
    "command": "ReceiveCutSheet",
    "event": "cut sheet.received",
    "actor": "Subcontractor principal",
    "context": "Intake & Normalization",
    "aggregate": "CutSheetAggregate",
    "policy": "None",
    "downstream": "Completeness check against spec section list",
    "risk": "Duplicate cut sheet ingestion"
   },
   {
    "seq": 2,
    "command": "NormalizeCutSheet",
    "event": "cut sheet.normalized",
    "actor": "Extraction Agent",
    "context": "Intake & Normalization",
    "aggregate": "CutSheetAggregate",
    "policy": "Auto source-page check check",
    "downstream": "Matching engine invoked",
    "risk": "Misread field on a scanned/paper cut sheet"
   },
   {
    "seq": 3,
    "command": "RunMatching",
    "event": "pack_cycle.crosswalk_completed",
    "actor": "Matching Agent",
    "context": "Completeness & Matching",
    "aggregate": "SectionAggregate",
    "policy": "Auto-route low-confidence matches to reviewer",
    "downstream": "Exception queue populated",
    "risk": "Wrong fuzzy match auto-accepted"
   },
   {
    "seq": 4,
    "command": "ApproveGap",
    "event": "Gap.reviewer_approved",
    "actor": "Trade-specialist QA reviewer",
    "context": "Completeness & Matching",
    "aggregate": "ComplianceMatrixAggregate",
    "policy": "None",
    "downstream": "Vendor chase email drafted",
    "risk": "Reviewer approves under time pressure without full evidence check"
   },
   {
    "seq": 5,
    "command": "SignPack",
    "event": "Submittal_Pack.signed",
    "actor": "Trade-specialist QA reviewer",
    "context": "Quality Assurance",
    "aggregate": "AttestationAggregate",
    "policy": "Source-page completeness gate",
    "downstream": "Monthly Completeness Pack assembled",
    "risk": "Signed pack with a stale source-page check"
   },
   {
    "seq": 6,
    "command": "SendChaseItem",
    "event": "manufacturer_chase email.sent",
    "actor": "Trade-specialist QA reviewer / Subcontractor principal",
    "context": "Delivery",
    "aggregate": "ChaseItemAggregate",
    "policy": "Subcontractor-authorization check",
    "downstream": "Aging clock starts",
    "risk": "Sent without valid authorization on file"
   }
  ],
  "critical_path": [
   "cut sheet.received -> cut sheet.normalized -> pack_cycle.crosswalk_completed -> Gap.reviewer_approved -> Submittal_Pack.signed -> pack.delivered"
  ],
  "exception_flows": [
   "A cut sheet line below the matching-confidence threshold -> routed to reviewer exception queue, blocks pack_cycle.crosswalk_completed until resolved",
   "A Gap classification needs-reviewer-judgment -> held for reviewer, never auto-approved"
  ],
  "escalation_flows": [
   "A Gap over $2,500 -> second reviewer pass before Chase list approval",
   "A manufacturer disputes an chase email beyond a routine response -> referred to the subcontractor's own counsel"
  ],
  "retry_flows": [
   "Vendor chase email unacknowledged after 60 days -> automated reminder, then reviewer-judged escalation at 90 days"
  ],
  "manual_override_flows": [
   "Founder/senior reviewer can force-hold any Submittal Pack pre-release regardless of automated source-page check pass, if a data-integrity issue is suspected"
  ],
  "commands": [
   {
    "name": "ReceiveCutSheet",
    "issued_by": "Subcontractor principal / monitored mailbox",
    "preconditions": [
     "Client onboarded",
     "Manufacturer on the section list"
    ],
    "aggregate": "CutSheetAggregate",
    "success_event": "cut sheet.received",
    "failure_event": "CutSheetRejected",
    "authorization": "Engaged client",
    "validation": "File type allowed; manufacturer recognized or flagged new",
    "audit": "CutSheet hashed and logged"
   },
   {
    "name": "NormalizeCutSheet",
    "issued_by": "Extraction Agent",
    "preconditions": [
     "CutSheet received"
    ],
    "aggregate": "CutSheetAggregate",
    "success_event": "cut sheet.normalized",
    "failure_event": "NormalizationFailed",
    "authorization": "System",
    "validation": "Line-item sum traces to stated total",
    "audit": "Extraction run logged with confidence scores"
   },
   {
    "name": "RunMatching",
    "issued_by": "Matching Agent",
    "preconditions": [
     "CutSheet normalized",
     "Spec basis-of-design set on file"
    ],
    "aggregate": "SectionAggregate",
    "success_event": "pack_cycle.crosswalk_completed",
    "failure_event": "MatchingIncomplete",
    "authorization": "System",
    "validation": "Every line matched, exception-coded, or logged as an evidence gap",
    "audit": "Match confidence scores logged per line"
   },
   {
    "name": "ApproveGap",
    "issued_by": "Trade-specialist QA reviewer",
    "preconditions": [
     "Gap flagged with evidence citation"
    ],
    "aggregate": "ComplianceMatrixAggregate",
    "success_event": "Gap.reviewer_approved",
    "failure_event": "GapRejected",
    "authorization": "Named reviewer role",
    "validation": "Evidence citation present; materiality threshold check",
    "audit": "Reviewer identity + timestamp logged"
   },
   {
    "name": "SignPack",
    "issued_by": "Trade-specialist QA reviewer",
    "preconditions": [
     "All lines matched/exception-coded",
     "Pack traces to cut sheet totals"
    ],
    "aggregate": "PackAggregate",
    "success_event": "Submittal_Pack.signed",
    "failure_event": "SignoffRejected",
    "authorization": "Named reviewer role",
    "validation": "Source-page completeness check passes",
    "audit": "Signature bound to authenticated session"
   },
   {
    "name": "SendChaseItem",
    "issued_by": "Trade-specialist QA reviewer / Subcontractor principal",
    "preconditions": [
     "Gap reviewer-approved",
     "Vendor-communication authorization on file"
    ],
    "aggregate": "ChaseItemAggregate",
    "success_event": "manufacturer_chase email.sent",
    "failure_event": "ChaseItemRejected",
    "authorization": "Subcontractor-authorized administrative agent",
    "validation": "ChaseItem language passes demand-language filter",
    "audit": "Send method + timestamp logged"
   }
  ],
  "policies": [
   {
    "name": "Auto-route low-confidence match to reviewer",
    "trigger": "pack_cycle.crosswalk_completed",
    "condition": "match confidence below auto-match threshold",
    "action": "Enqueue to reviewer exception queue",
    "context": "Completeness & Matching",
    "ai_involvement": "flags only",
    "human_approval": false
   },
   {
    "name": "Block demand-language patterns",
    "trigger": "DraftChaseItem",
    "condition": "Draft contains demand/collection/legal-threat language pattern",
    "action": "Reject draft before it reaches reviewer approval",
    "context": "Delivery",
    "ai_involvement": "author (blocked by deterministic filter)",
    "human_approval": false
   },
   {
    "name": "Second-reviewer spot check",
    "trigger": "Gap.reviewer_approved",
    "condition": "ComplianceMatrix line over $2,500",
    "action": "Route to a second named reviewer before the Chase list is finalized",
    "context": "Quality Assurance",
    "ai_involvement": "none",
    "human_approval": true
   },
   {
    "name": "Auto-escalate aging chase email",
    "trigger": "manufacturer_chase email.sent",
    "condition": "No manufacturer response within 60 days",
    "action": "Flag for reviewer escalation judgment",
    "context": "Delivery",
    "ai_involvement": "flags only",
    "human_approval": false
   }
  ],
  "aggregates": [
   {
    "name": "CutSheetAggregate",
    "root": "CutSheet",
    "context": "Intake & Normalization",
    "purpose": "Guard cut sheet receipt + normalization + source-page check state.",
    "entities": [
     "CutSheet"
    ],
    "value_objects": [
     "ConfidenceScore",
     "CutSheetTotal"
    ],
    "invariants": [
     "A cut sheet cannot be matched against until it traces to its own stated total"
    ],
    "commands": [
     "ReceiveCutSheet",
     "NormalizeCutSheet"
    ],
    "events": [
     "cut sheet.received",
     "cut sheet.normalized"
    ],
    "repository": "CutSheetRepository",
    "transaction_boundary": "One cut sheet per transaction"
   },
   {
    "name": "SectionAggregate",
    "root": "Section",
    "context": "Completeness & Matching",
    "purpose": "Own the monthly cycle's matching lifecycle for one client.",
    "entities": [
     "Section"
    ],
    "value_objects": [
     "MatchConfidence"
    ],
    "invariants": [
     "A cycle cannot close until every line is matched, exception-coded, or logged as a gap"
    ],
    "commands": [
     "RunMatching"
    ],
    "events": [
     "pack_cycle.crosswalk_completed"
    ],
    "repository": "SectionRepository",
    "transaction_boundary": "One cycle per transaction"
   },
   {
    "name": "ComplianceMatrixAggregate",
    "root": "ComplianceMatrix",
    "context": "Completeness & Matching",
    "purpose": "Own Gap classification and reviewer approval.",
    "entities": [
     "ComplianceMatrix"
    ],
    "value_objects": [
     "GapClassification"
    ],
    "invariants": [
     "No line enters the Chase list without a source-cut sheet citation and an Spec-requirement reference"
    ],
    "commands": [
     "ApproveGap"
    ],
    "events": [
     "Gap.flagged",
     "Gap.reviewer_approved"
    ],
    "repository": "ComplianceMatrixRepository",
    "transaction_boundary": "One Chase list per transaction"
   },
   {
    "name": "PackAggregate",
    "root": "Pack",
    "context": "Completeness & Matching",
    "purpose": "Own the Pack's source-page check and signature lifecycle.",
    "entities": [
     "Pack"
    ],
    "value_objects": [
     "TieOutResult"
    ],
    "invariants": [
     "Totals must tie to cut sheet totals to the penny before the reviewer's signature is valid"
    ],
    "commands": [
     "SignPack"
    ],
    "events": [
     "Submittal_Pack.signed"
    ],
    "repository": "PackRepository",
    "transaction_boundary": "One Pack per transaction"
   },
   {
    "name": "ChaseItemAggregate",
    "root": "ChaseItem",
    "context": "Delivery",
    "purpose": "Own chase email drafting, sending, and aging.",
    "entities": [
     "ChaseItem"
    ],
    "value_objects": [
     "AgingWindow"
    ],
    "invariants": [
     "Cannot be sent without reviewer approval and Subcontractor authorization on file"
    ],
    "commands": [
     "SendChaseItem"
    ],
    "events": [
     "manufacturer_chase email.sent",
     "manufacturer_chase email.resolved"
    ],
    "repository": "ChaseItemRepository",
    "transaction_boundary": "One chase email per transaction"
   },
   {
    "name": "AttestationAggregate",
    "root": "Signoff",
    "context": "Quality Assurance",
    "purpose": "Bind reviewer identity + timestamp + artifact hash immutably.",
    "entities": [
     "Signoff"
    ],
    "value_objects": [
     "SignatureManifest"
    ],
    "invariants": [
     "Signature bound to a live authenticated session, not a form field",
     "Signed artifacts are immutable"
    ],
    "commands": [
     "ApproveArtifact"
    ],
    "events": [
     "ArtifactSigned"
    ],
    "repository": "SignoffRepository",
    "transaction_boundary": "One signoff per transaction"
   },
   {
    "name": "TransmittalAggregate",
    "root": "Transmittal",
    "context": "Quality Assurance",
    "purpose": "Handle formal correction/withdrawal of a delivered pack.",
    "entities": [
     "Transmittal"
    ],
    "value_objects": [
     "TransmittalReason"
    ],
    "invariants": [
     "A transmittal requires senior-reviewer co-signature"
    ],
    "commands": [
     "RetractArtifact"
    ],
    "events": [
     "ArtifactRetracted"
    ],
    "repository": "TransmittalRepository",
    "transaction_boundary": "One transmittal per transaction"
   }
  ],
  "invariants": [
   {
    "invariant": "A Submittal Pack cannot be signed without tying to cut sheet totals to the penny",
    "context": "Completeness & Matching",
    "aggregate": "PackAggregate",
    "why": "No Pack is ever released on an unresolved source-page check gap",
    "enforcement": "Deterministic code gate on the SignPack command"
   },
   {
    "invariant": "A ChaseItem cannot be sent without reviewer approval and Subcontractor authorization on file",
    "context": "Delivery",
    "aggregate": "ChaseItemAggregate",
    "why": "Sending without authorization is both a trust breach and outside the licensing boundary",
    "enforcement": "Deterministic code gate on the SendChaseItem command"
   },
   {
    "invariant": "No Gap is published without a cited source-cut sheet and Spec-requirement reference",
    "context": "Completeness & Matching",
    "aggregate": "ComplianceMatrixAggregate",
    "why": "Prevents an unevidenced claim from reaching a client or a manufacturer",
    "enforcement": "Output validator rejects any Chase list line missing an evidence citation"
   },
   {
    "invariant": "CutSheet Clear never issues a coverage or claims-adjustment determination",
    "context": "Delivery",
    "aggregate": "ChaseItemAggregate",
    "why": "Hard licensing boundary — only the subcontractor's own licensed staff makes coverage determinations",
    "enforcement": "Deterministic output filter blocks coverage-determination language patterns"
   }
  ],
  "ai_agents": [
   {
    "name": "Extraction Agent",
    "context": "Intake & Normalization",
    "responsibility": "Extract and normalize structured fields from manufacturer Submittal cut sheets (PDF, portal CSV, scanned paper) into the canonical schema.",
    "inputs": [
     "Uploaded/forwarded cut sheets"
    ],
    "outputs": [
     "Structured line items with per-field confidence score"
    ],
    "tools": [
     "OCR",
     "per-section parser library"
    ],
    "forbidden_actions": [
     "Guessing a requirement id fragment not present in the source text"
    ],
    "memory_scope": "Single cut sheet extraction run",
    "retrieval_sources": [
     "Per-section parser fixture library"
    ],
    "validations": [
     "Confidence score attached to every field"
    ],
    "confidence_scoring": "0-100 per field, threshold 85",
    "escalation_triggers": [
     "Any required field below 85% confidence"
    ],
    "human_approval": "Reviewer confirms during exception review",
    "failure_modes": [
     "Misread scanned/paper cut sheet",
     "Wrong manufacturer-format classification"
    ],
    "audit_logs": [
     "Every extraction run logged with document hash and confidence scores"
    ],
    "metrics": [
     "Extraction accuracy vs. reviewer-corrected value"
    ],
    "versioning": "Prompt versioned independently of the underlying model"
   },
   {
    "name": "Matching Agent",
    "context": "Completeness & Matching",
    "responsibility": "Match normalized cut sheet lines to spec policies (exact -> fuzzy -> reviewer-adjudicated) and compute expected Submittal from the schedule.",
    "inputs": [
     "Normalized cut sheet lines",
     "Spec basis-of-design set",
     "Submittal schedules"
    ],
    "outputs": [
     "Match candidates with confidence score",
     "Expected-Submittal computation"
    ],
    "tools": [
     "Fuzzy entity matcher",
     "Submittal-schedule lookup"
    ],
    "forbidden_actions": [
     "Auto-accepting a match below the confidence threshold"
    ],
    "memory_scope": "Single pack cycle",
    "retrieval_sources": [
     "Subcontractor's Spec basis-of-design set (tenant-scoped)"
    ],
    "validations": [
     "Every match below threshold routed to reviewer with reasoning"
    ],
    "confidence_scoring": "0-100 per match, auto-accept ≥95, reviewer queue below",
    "escalation_triggers": [
     "No candidate match found",
     "Ambiguous multi-candidate match"
    ],
    "human_approval": "Reviewer adjudicates all sub-threshold matches",
    "failure_modes": [
     "Wrong fuzzy match on a common project owner name",
     "Stale spec requirement Procore"
    ],
    "audit_logs": [
     "Every match decision logged with confidence and reasoning"
    ],
    "metrics": [
     "Auto-match rate",
     "Match-reversal rate on reviewer audit"
    ],
    "versioning": "Prompt versioned independently of the underlying model"
   },
   {
    "name": "Gap Drafter Agent",
    "context": "Completeness & Matching",
    "responsibility": "Classify each line's Gap type and draft a plain-language explanation citing the source cut sheet and policy.",
    "inputs": [
     "Matched/unmatched cut sheet lines",
     "Spec requirement",
     "Spec-quirk notes",
     "Prior payment history"
    ],
    "outputs": [
     "Gap classification",
     "Draft explanation with citations"
    ],
    "tools": [
     "Spec-quirk knowledge base lookup"
    ],
    "forbidden_actions": [
     "Stating a Gap is confirmed before reviewer approval",
     "Estimating a dollar gap the schedule doesn't cover"
    ],
    "memory_scope": "Single pack cycle",
    "retrieval_sources": [
     "Spec-quirk knowledge base"
    ],
    "validations": [
     "Output must cite a source cut sheet line and spec requirement reference"
    ],
    "confidence_scoring": "Qualitative (missing / rejected / late / resubmittal / rate-mismatch / unearned / needs-reviewer-judgment)",
    "escalation_triggers": [
     "Schedule doesn't cover the case"
    ],
    "human_approval": "Reviewer approves every classification before it appears in the Chase list",
    "failure_modes": [
     "Misclassifying a legitimate resubmittal as a short-pay"
    ],
    "audit_logs": [
     "Every classification logged with citation and confidence"
    ],
    "metrics": [
     "Gap-classification accuracy vs. reviewer-corrected value"
    ],
    "versioning": "Prompt versioned independently of the underlying model"
   },
   {
    "name": "ChaseItem Drafter Agent",
    "context": "Delivery",
    "responsibility": "Draft a professional, chase email-toned (never demand-toned) email to a manufacturer's Submittal department for an approved Gap.",
    "inputs": [
     "Approved Gap",
     "Subcontractor identity",
     "Spec requirement reference"
    ],
    "outputs": [
     "Drafted vendor chase email email"
    ],
    "tools": [
     "Demand-language deterministic filter"
    ],
    "forbidden_actions": [
     "Using demand, collection, or legal-threat language",
     "Sending without reviewer approval"
    ],
    "memory_scope": "Single Gap chase email",
    "retrieval_sources": [
     "Spec-quirk knowledge base",
     "Manufacturer contact map"
    ],
    "validations": [
     "Draft passes the demand-language filter before reaching the reviewer"
    ],
    "confidence_scoring": "N/A (deterministic filter gate, not a confidence score)",
    "escalation_triggers": [
     "Filter rejects a draft twice in a row for the same Gap"
    ],
    "human_approval": "Reviewer approves every draft before send",
    "failure_modes": [
     "Draft reads as aggressive despite passing the filter"
    ],
    "audit_logs": [
     "Every draft + approval + send logged"
    ],
    "metrics": [
     "Manufacturer response rate",
     "Reviewer edit rate on drafts"
    ],
    "versioning": "Prompt versioned independently of the underlying model"
   }
  ],
  "prompt_chain_map": [
   "Intake -> Extraction Agent (extract + score) -> Matching Agent (match + compute expected) -> Gap Drafter Agent (classify + cite) -> OutputValidator -> Reviewer (approve or escalate)",
   "Approved Gap -> ChaseItem Drafter Agent (draft) -> demand-language filter -> Reviewer (approve or edit) -> send"
  ],
  "rag_map": [
   "Per-Subcontractor Spec basis-of-design set (tenant-scoped) -> retrieval router -> Subcontractor-scoped hits -> Matching Agent",
   "Versioned per-section parser fixture + quirk knowledge base -> shared retrieval -> Extraction Agent and Gap Drafter Agent (cited)"
  ],
  "ai_evaluation": [
   "Golden dataset of past reviewer-accepted matches and Gap classifications, per manufacturer",
   "Regression requirements on auto-match rate + Gap-citation coverage",
   "Every prompt release requires a passing evaluator run against the fixture library"
  ],
  "hallucination_controls": [
   "Retrieval-first (no free-form Gap generation without a cited cut sheet line and requirement reference)",
   "Structured-output validator enforces citation-per-claim",
   "Confidence-scored escalation on extraction and matching",
   "Reviewer gate on every Gap and every outbound vendor chase email",
   "Deterministic filter blocks any demand/collection-style or coverage-determination language before it reaches the reviewer"
  ],
  "human_in_the_loop_plan": [
   "Reviewer signoff on every Submittal Pack before delivery",
   "Reviewer approval on every Gap before it appears in a Chase list or goes to a manufacturer",
   "Senior-reviewer co-sign on transmittals",
   "Owner approval on public-release readiness"
  ],
  "ai_audit_plan": [
   "Every AgentRun logged with prompt version, retrieval hit ids, cost, latency, validator verdict",
   "13-month rolling retention on run logs",
   "Financial/PII data scrubbed from log payloads"
  ],
  "prompt_versioning": "Prompt versions immutable once published; rolled out via feature flag; every rollout paired with an evaluator run against the fixture library.",
  "human_roles": [
   {
    "role": "Subcontractor principal",
    "responsibilities": [
     "Supply Spec section and cut sheets",
     "Sign vendor-communication authorization",
     "Approve trade scope split"
    ],
    "contexts": [
     "Intake & Normalization"
    ],
    "decisions_owned": [
     "Whether to engage",
     "Which records to supply",
     "Whether to authorize the rush rider"
    ],
    "ai_support": [
     "[PLACEHOLDER] owner to complete"
    ],
    "approval_authority": "Authorizes the engagement and vendor-communication authorization",
    "escalation_authority": "None (escalates to CutSheet Clear, not from it)",
    "quality_metrics": [
     "Intake completeness"
    ],
    "workload_risks": [
     "Month-end time scarcity"
    ]
   },
   {
    "role": "Trade-specialist QA reviewer",
    "responsibilities": [
     "Review AI-drafted matches and gaps",
     "Verify evidence sufficiency",
     "Sign off before delivery or manufacturer send"
    ],
    "contexts": [
     "Completeness & Matching",
     "Quality Assurance"
    ],
    "decisions_owned": [
     "Approve, escalate, or reject a Gap or match"
    ],
    "ai_support": "Extraction, matching, Gap-classification, and chase email-drafting agents",
    "approval_authority": "Sole authority to sign a Submittal Pack or approve a vendor chase email",
    "escalation_authority": "Escalates coverage/claims questions to the subcontractor's own licensed staff; disputes beyond routine chase email to the subcontractor's counsel",
    "quality_metrics": [
     "Client-caught material error rate",
     "Review cycle time"
    ],
    "workload_risks": [
     "Volume spike during month-end delivery window"
    ]
   },
   {
    "role": "Senior Reviewer",
    "responsibilities": [
     "Second-pass sampling on auto-matched lines",
     "Co-sign transmittals",
     "Second review on high-value chase lists"
    ],
    "contexts": [
     "Quality Assurance"
    ],
    "decisions_owned": [
     "Transmittal approval"
    ],
    "ai_support": "None (human-only by design)",
    "approval_authority": "Transmittal co-signature authority",
    "escalation_authority": "Escalates to founder/owner",
    "quality_metrics": [
     "Transmittal rate"
    ],
    "workload_risks": [
     "Contractor-bench availability at scale"
    ]
   }
  ],
  "human_review_checkpoints": [
   "AI draft -> Reviewer approval",
   "Public release -> owner acceptance",
   "Transmittal -> senior-reviewer co-sign",
   "Prompt rollout -> ops + evaluator"
  ],
  "escalation_matrix": [
   "AI -> Reviewer -> Senior Reviewer -> Owner -> Subcontractor's own counsel",
   "Coverage/claims dispute -> Reviewer -> Subcontractor's own licensed staff"
  ],
  "manual_override_rules": [
   "Any manual override captured as an explicit override event with actor + reason",
   "No override may bypass the reviewer-signoff or manufacturer-authorization invariant"
  ],
  "separation_of_duties": [
   "Extraction/Matching/Drafter Agents cannot sign; Reviewer cannot draft on behalf of AI without an override event; Senior Reviewer cannot silently retract"
  ],
  "quality_control_workflow": [
   "Weekly reviewer calibration meeting",
   "Monthly evaluator regression report",
   "Quarterly spec-quirk library re-verification review with owner + compliance"
  ],
  "data_objects": [
   {
    "name": "CutSheet",
    "meaning": "One manufacturer's cut sheet for one period",
    "owner_context": "Intake & Normalization",
    "writers": [
     "Extraction Agent",
     "Subcontractor principal"
    ],
    "readers": [
     "Trade-specialist QA reviewer",
     "Completeness & Matching"
    ],
    "source_of_truth": "Intake & Normalization context",
    "retention": "7 years (mirrors standard financial-record retention practice)",
    "privacy": "Sensitive business/financial data, Subcontractor-isolated",
    "audit": "Every field change logged"
   },
   {
    "name": "Pack",
    "meaning": "One pack cycle's signed source-page check record",
    "owner_context": "Completeness & Matching",
    "writers": [
     "Matching Agent",
     "Trade-specialist QA reviewer"
    ],
    "readers": [
     "Subcontractor principal",
     "Quality Assurance"
    ],
    "source_of_truth": "Completeness & Matching context",
    "retention": "7 years",
    "privacy": "Sensitive",
    "audit": "Full version history retained"
   },
   {
    "name": "ComplianceMatrix",
    "meaning": "One cycle's list of classified, evidenced gaps",
    "owner_context": "Completeness & Matching",
    "writers": [
     "Gap Drafter Agent",
     "Trade-specialist QA reviewer"
    ],
    "readers": [
     "Subcontractor principal",
     "Delivery"
    ],
    "source_of_truth": "Completeness & Matching context",
    "retention": "7 years",
    "privacy": "Sensitive",
    "audit": "Reviewer approval logged per line"
   }
  ],
  "read_models": [
   "OperatorDashboard read model (per tenant): open cycles, in-review, delivered this week",
   "ReviewerQueue read model: cut sheets/gaps awaiting review with confidence + escalation reason",
   "CompliancePack read model: open owner actions + release-decision",
   "AnalyticsRollup read model: metric definitions rolled up daily"
  ],
  "reporting_models": [
   "Outcome report per client: packs delivered, cycle time, client-caught error status, cleared sections",
   "Ops report: AI cost per cycle, escalation rate, reviewer load"
  ],
  "data_duplication_notes": [
   "Reviewer identity is stored in Onboarding, referenced by Quality Assurance — QA does not own it",
   "OwnerActionPack duplicates minimal facts into read models for Completeness & Matching consumption"
  ],
  "data_retention": [
   "Submittal Packs + Gap ComplianceMatrixs + signoffs: 7 years (standard financial-record retention)",
   "AgentRun logs: 13 months rolling",
   "Users + sessions: life of account + 2 years"
  ],
  "data_quality_risks": [
   "Silent schema drift from a a manufacturer changing its cut sheet layout",
   "Stale Submittal-schedule version Procore after a rate change (mitigated by quarterly re-verification)",
   "Missing transmittal cross-links after a legacy client-history import"
  ],
  "use_cases": [
   {
    "name": "Run a Rejection Risk Scan",
    "actor": "Subcontractor principal",
    "context": "Intake & Normalization",
    "goal": "Get a matched-percentage and estimated-dollar-value finding within 10 business days",
    "preconditions": [
     "Spec section and 3 months of cut sheets supplied"
    ],
    "main_flow": [
     "Intake checklist completed",
     "CutSheets normalized and source-checked",
     "Matching engine runs",
     "Reviewer approves gaps",
     "Scan report delivered"
    ],
    "alternative_flows": [
     "No material finding -> report says so explicitly, no fee retained beyond the flat scan price"
    ],
    "business_rules": [
     "No Gap ships without reviewer approval"
    ],
    "ai_role": "Extraction, matching, classification, drafting",
    "human_role": "Reviewer approves and signs",
    "commands": [
     "ReceiveCutSheet",
     "NormalizeCutSheet",
     "RunMatching",
     "ApproveGap"
    ],
    "events": [
     "cut sheet.normalized",
     "pack_cycle.crosswalk_completed",
     "Gap.reviewer_approved"
    ],
    "aggregates": [
     "CutSheetAggregate",
     "SectionAggregate",
     "ComplianceMatrixAggregate"
    ],
    "success": "Scan report delivered within SLA with reviewer signature",
    "failure_handling": "Missing inputs trigger an automated nag; cycle does not start until complete",
    "audit": "Full audit trail from cut sheet receipt to report delivery"
   },
   {
    "name": "Deliver a monthly Completeness Desk pack",
    "actor": "Trade-specialist QA reviewer",
    "context": "Delivery",
    "goal": "Ship a signed Monthly Completeness Pack by the 5th business day",
    "preconditions": [
     "Client on an active Completeness Desk tier",
     "Prior cycle's vendor chase emails tracked"
    ],
    "main_flow": [
     "CutSheets collected and normalized",
     "Matching completed",
     "Gaps approved",
     "Vendor chase emails drafted and sent",
     "Pack signed",
     "Pack delivered"
    ],
    "alternative_flows": [
     "High-value Chase list (>$2,500) routed to second reviewer before finalization"
    ],
    "business_rules": [
     "Source-page completeness required before signature"
    ],
    "ai_role": "Extraction, matching, classification, chase email drafting",
    "human_role": "Reviewer signs; second reviewer on high-value chase lists",
    "commands": [
     "RunMatching",
     "ApproveGap",
     "SendChaseItem",
     "SignPack"
    ],
    "events": [
     "Submittal_Pack.signed",
     "manufacturer_chase email.sent",
     "pack.delivered"
    ],
    "aggregates": [
     "PackAggregate",
     "ChaseItemAggregate"
    ],
    "success": "Pack delivered on time with a signed pack",
    "failure_handling": "Missed SLA triggers the error-SLA acknowledgment process",
    "audit": "Full cycle audit trail retained"
   }
  ],
  "architecture": {
   "style": "Modular monolith with edge functions for bursty cut sheet-extraction workloads",
   "why": "One audit boundary, low ops burden for a founder-operated business, easy per-context ownership as the team grows past founder-only.",
   "rejected_alternatives": [
    "Microservices per bounded context (premature at this scale)",
    "No-code workflow tool (can't enforce the source-page-complete deterministic gate reliably)"
   ],
   "backend_modules": [
    "intake-normalization",
    "Completeness-matching",
    "Resubmittal-delivery",
    "quality-assurance"
   ],
   "frontend_modules": [
    "reviewer-console (internal only at launch)",
    "marketing microsite (public)"
   ],
   "api_boundaries": [
    "Internal reviewer console API (authenticated)",
    "No public API at launch — intake is upload-link/email only"
   ],
   "database_strategy": "Single Postgres instance, tenant_id row-level security on every table",
   "event_bus": "In-process event dispatch at launch; durable queue (e.g. a managed message queue) once cycle volume requires async fan-out",
   "queue": "Background job queue for cut sheet extraction and matching (bursty, month-end-weighted load)",
   "workflow_engine": "None at launch — explicit state machine per aggregate in code",
   "ai_orchestration": "Scripted pipeline calling a single frontier-model provider, prompts + fixtures versioned in the repo",
   "rag_layer": "Per-Subcontractor book-of-business retrieval + shared per-section parser/quirk knowledge base",
   "file_storage": "Encrypted object storage, per-Subcontractor prefix isolation",
   "authn_authz": "SSO with MFA for reviewers; row-level tenant auth for Subcontractor-facing surfaces (year-1 client portal)",
   "admin_dashboard": "Internal only at launch (founder + reviewer)",
   "client_portal": "None at launch (email/upload-link delivery); read-only pack-status portal planned year 1",
   "operator_dashboard": "ReviewerQueue read model surfaced in the internal console",
   "observability": "Structured logs + RED metrics + model-call cost/latency spans",
   "audit_logging": "Append-only, hash-chained per pack cycle",
   "deployment": "Single production region, multi-AZ; preview environment per PR"
  },
  "module_structure": {
   "tree": "src/{intake-normalization,Completeness-matching,Resubmittal-delivery,quality-assurance}/{domain,application,infra}",
   "modules": [
    {
     "name": "intake-normalization",
     "purpose": "CutSheet receipt, extraction, and source-page check.",
     "owned_domain": [
      "CutSheet"
     ],
     "application_services": [
      "ReceiveCutSheet",
      "NormalizeCutSheet"
     ],
     "infra_adapters": [
      "Mailbox listener",
      "Object storage adapter",
      "Extraction-model client"
     ],
     "public_interfaces": [
      "cut sheet.normalized event"
     ],
     "forbidden_deps": [
      "Cannot call Completeness-matching internals directly — event only"
     ]
    },
    {
     "name": "Completeness-matching",
     "purpose": "Matching, Gap classification, Pack source-page check.",
     "owned_domain": [
      "Section",
      "ComplianceMatrix",
      "Pack"
     ],
     "application_services": [
      "RunMatching",
      "ApproveGap",
      "SignPack"
     ],
     "infra_adapters": [
      "spec-export parser",
      "Submittal-schedule store"
     ],
     "public_interfaces": [
      "Gap.reviewer_approved event",
      "Submittal_Pack.signed event"
     ],
     "forbidden_deps": [
      "Cannot call Resubmittal-delivery internals directly — event only"
     ]
    },
    {
     "name": "Resubmittal-delivery",
     "purpose": "Vendor-chase drafting/sending, aging, pack assembly.",
     "owned_domain": [
      "ChaseItem",
      "AECommentRecord",
      "MonthlyCompletenessPack"
     ],
     "application_services": [
      "SendChaseItem",
      "AssemblePack",
      "DeliverPack"
     ],
     "infra_adapters": [
      "Email-send adapter",
      "Posting-file generator"
     ],
     "public_interfaces": [
      "pack.delivered event"
     ],
     "forbidden_deps": [
      "Cannot bypass quality-assurance signoff gate"
     ]
    },
    {
     "name": "quality-assurance",
     "purpose": "Signoff and transmittal lifecycle.",
     "owned_domain": [
      "Signoff",
      "Transmittal"
     ],
     "application_services": [
      "ApproveArtifact",
      "RetractArtifact"
     ],
     "infra_adapters": [
      "Signature-binding session store"
     ],
     "public_interfaces": [
      "ArtifactSigned event"
     ],
     "forbidden_deps": [
      "Cannot draft on behalf of any other module"
     ]
    }
   ],
   "dependency_rules": [
    "Modules communicate only via domain events or explicit application-service calls, never shared database tables",
    "quality-assurance has no outbound dependency on any other module"
   ]
  },
  "security_governance": {
   "controls": [
    {
     "risk": "Cross-tenant data leak",
     "context": "Completeness & Matching",
     "impact": "severe",
     "control": "Row-level security on every tenant-scoped table; retrieval indices partitioned per Subcontractor",
     "audit": "Access logged with tenant_id + session_id"
    },
    {
     "risk": "Reviewer identity spoofing",
     "context": "Quality Assurance",
     "impact": "severe",
     "control": "SSO + MFA; signature bound to authenticated session, not a form field",
     "audit": "Signature manifest logged per artifact"
    },
    {
     "risk": "Demand-language vendor chase email sent",
     "context": "Delivery",
     "impact": "high",
     "control": "Deterministic filter blocks demand/collection/legal-threat patterns before reviewer sees the draft",
     "audit": "Every blocked draft logged with the trigger phrase"
    }
   ],
   "ai_governance": [
    "Every prompt version checked into the repo",
    "Every AgentRun logged with prompt version + validator verdict",
    "No fine-tuning on client data"
   ],
   "prompt_injection_defense": [
    "Uploaded cut sheet content treated as untrusted input, never as instructions",
    "Extraction output schema-validated before use downstream"
   ],
   "sensitive_data_handling": [
    "Financial/PII scrubbed from logs",
    "Per-Subcontractor object-storage prefix isolation",
    "Encryption at rest and in transit"
   ],
   "access_control_matrix": [
    {
     "role": "Subcontractor principal",
     "context": "Intake & Normalization",
     "capabilities": [
      "Upload cut sheets",
      "View own subcontractor's cycle status"
     ]
    },
    {
     "role": "Trade-specialist QA reviewer",
     "context": "Completeness & Matching, Quality Assurance",
     "capabilities": [
      "Approve gaps",
      "Sign Packs",
      "Approve vendor chase emails"
     ]
    },
    {
     "role": "Senior Reviewer",
     "context": "Quality Assurance",
     "capabilities": [
      "Co-sign transmittals",
      "Second-review high-value chase lists"
     ]
    }
   ],
   "audit_log_requirements": [
    "Every command + payload hash logged with actor identity",
    "13-month rolling retention on AgentRun logs; 7-year retention on signed Packs"
   ]
  },
  "observability": {
   "metrics": [
    {
     "metric": "Auto-match rate",
     "type": "leading",
     "context": "Completeness & Matching",
     "why": "Directly drives reviewer minutes per cycle",
     "target": "≥90%",
     "alert_threshold": "<80%"
    },
    {
     "metric": "Reviewer minutes per client per cycle",
     "type": "leading",
     "context": "Completeness & Matching",
     "why": "Core unit-economics driver",
     "target": "≤115 min by day 90",
     "alert_threshold": ">180 min"
    },
    {
     "metric": "Client-caught material error rate",
     "type": "lagging",
     "context": "Quality Assurance",
     "why": "Trust and retention driver",
     "target": "<0.5%",
     "alert_threshold": ">1%"
    }
   ],
   "dashboards": [
    "Ops dashboard: cycles in flight, reviewer queue depth",
    "Economics dashboard: COGS/client, gross margin trend"
   ],
   "audit_reports": [
    "Monthly signed-Pack audit export per client"
   ],
   "quality_review_reports": [
    "Weekly red-team seeded-error catch rate"
   ],
   "ai_evaluation_reports": [
    "Monthly evaluator regression report per manufacturer parser"
   ],
   "client_outcome_reports": [
    "Cleared-first report per client per quarter"
   ]
  },
  "testing_strategy": {
   "tests": [
    {
     "type": "unit",
     "validates": "Source-page check math and materiality thresholds",
     "context": "Completeness & Matching",
     "example": "Pack total must equal sum of matched + exception-coded lines"
    },
    {
     "type": "contract",
     "validates": "Per-section parser output schema",
     "context": "Intake & Normalization",
     "example": "Gold-standard fixture cut sheet per manufacturer re-run on every prompt change"
    },
    {
     "type": "e2e",
     "validates": "Full intake -> match -> reviewer signoff -> delivery path",
     "context": "cross-context",
     "example": "Smoke test against 5 sample cut sheet formats"
    }
   ],
   "critical_domain_rules": [
    "Source-page completeness before signature",
    "No Gap without a cited source and requirement reference",
    "No vendor chase email without authorization on file"
   ],
   "ai_eval_dataset": [
    "Gold-standard fixture cut sheets per manufacturer",
    "Reviewer-corrected historical matches and classifications"
   ],
   "regression_plan": "Every parser/prompt/model change re-runs the full fixture suite before touching a live client cut sheet.",
   "contract_testing_plan": "Per-cut sheet schema contract tests run in CI on every parser change.",
   "manual_qa_checklist": [
    "10% second-pass sample of auto-matched lines",
    "Monthly red-team seeded-error check",
    "Every Chase list over $2,500 second-reviewed"
   ]
  },
  "mvp_roadmap": [
   {
    "phase": "Thin slice",
    "goal": "One end-to-end Rejection Risk Scan delivered and reviewer-signed",
    "features": [
     "CutSheet intake",
     "Single-manufacturer-format extraction",
     "Manual-assisted matching"
    ],
    "contexts": [
     "Intake & Normalization",
     "Completeness & Matching"
    ],
    "ai_needs": [
     "Extraction Agent v1"
    ],
    "human_workflows": [
     "Founder-run reviewer role"
    ],
    "data_needs": [
     "Fixture cut sheets for 5 formats"
    ],
    "integrations": [
     "None — manual Spec section upload"
    ],
    "risks": [
     "Reviewer cycle time far above target at pilot 1"
    ],
    "exit_criteria": [
     "1 scan delivered within 10 business days, reviewer-signed"
    ]
   }
  ],
  "scaling_roadmap": [
   {
    "stage": "Pilot (1-10 clients)",
    "trigger": "First 10 pilot Subcontractors onboarded",
    "architecture_change": "None — single monolith suffices",
    "operational_change": "Founder is the sole reviewer",
    "risk": "Reviewer bottleneck at any volume spike"
   },
   {
    "stage": "Early scale (10-50 clients)",
    "trigger": "Day-90 checkpoint targets met",
    "architecture_change": "Background job queue for cut sheet extraction",
    "operational_change": "Contract a second trade-specialist QA reviewer",
    "risk": "Parser library coverage gaps on new manufacturers slow onboarding"
   }
  ],
  "risk_register": [
   {
    "risk": "GC-portal vendor bundles Completeness 'free' with a chase workflow",
    "likelihood": "medium-high",
    "impact": "high",
    "signal": "Autodesk Build (ACC) or a competing GC-portal module adds chase/Resubmittal features",
    "mitigation": "Portal-agnostic positioning; resubmittal/chase as the human moat",
    "owner": "owner",
    "context": "Delivery"
   },
   {
    "risk": "Scan-to-desk conversion underperforms",
    "likelihood": "medium",
    "impact": "severe",
    "signal": "Pilot cohort conversion below 25%",
    "mitigation": "Pilot gate at 25%; alternative packaging tested in cohort 2",
    "owner": "owner",
    "context": "product"
   },
   {
    "risk": "False-positive Gap sent to a manufacturer",
    "likelihood": "medium",
    "impact": "high",
    "signal": "Manufacturer disputes an chase email as unfounded",
    "mitigation": "100% reviewer approval; evidence-link requirement; chase email-not-demand language",
    "owner": "legal",
    "context": "Delivery"
   }
  ],
  "adrs": [
   {
    "id": "ADR-001",
    "decision": "Adopt a modular monolith, not microservices, at launch",
    "status": "accepted",
    "context": "Founder-operated team; low ops burden required",
    "options": [
     "Modular monolith",
     "Microservices per bounded context",
     "No-code workflow tool"
    ],
    "chosen": "Modular monolith",
    "business_reason": "Fastest path to first paid pilot without a platform team",
    "technical_reason": "One deploy, one audit boundary, easy to reason about at this scale",
    "tradeoffs": [
     "[PLACEHOLDER] owner to complete"
    ],
    "risks": [
     "[PLACEHOLDER] owner to complete"
    ],
    "revisit_trigger": "Sustained CPU/latency pressure isolated to one module",
    "why": "One deploy, one audit boundary, easy to reason about at this scale",
    "consequences": "Will need extraction into services if reviewer-console load grows sharply",
    "reversal": "Would require a migration of the affected module's data model.",
    "revisit_when": "Sustained CPU/latency pressure isolated to one module"
   },
   {
    "id": "ADR-002",
    "decision": "Deterministic code owns all money math; the model never computes a final dollar figure",
    "status": "accepted",
    "context": "Source-page completeness is a hard trust requirement",
    "options": [
     "Model computes totals",
     "Deterministic code computes totals, model only extracts/classifies"
    ],
    "chosen": "Deterministic code computes totals",
    "business_reason": "A wrong dollar figure from a model is the single fastest way to lose a client's trust",
    "technical_reason": "Removes an entire class of hallucination risk from the highest-stakes output",
    "tradeoffs": "Slightly more engineering work per new transaction-type edge case",
    "risks": "Edge cases not yet coded fall through to reviewer manual calculation",
    "revisit_trigger": "None — this is a standing invariant, not revisited",
    "why": "Removes an entire class of hallucination risk from the highest-stakes output",
    "consequences": "Slightly more engineering work per new transaction-type edge case",
    "reversal": "Would require a migration of the affected module's data model.",
    "revisit_when": "None — this is a standing invariant, not revisited"
   }
  ],
  "self_audit": {
   "scores": [
    {
     "category": "domain_modeling",
     "score": 4,
     "weakness": "Spec-quirk knowledge base is described but not yet instantiated with real manufacturer data",
     "improvement": "Populate from the first 5 pilot Subcontractors' actual manufacturer mixes"
    },
    {
     "category": "ai_governance",
     "score": 4,
     "weakness": "Evaluator regression suite depends on fixture cut sheets not yet collected at volume",
     "improvement": "Build the fixture library incrementally from each pilot's real (anonymized) cut sheets"
    },
    {
     "category": "compliance_boundary",
     "score": 3,
     "weakness": "State-by-state collection-Subcontractor-statute review for the rush rider is not yet complete",
     "improvement": "Complete counsel review in the first 5 operating states before offering the rider broadly"
    }
   ],
   "weakest_parts": [
    "State-by-state licensing review for the rush rider",
    "Spec-quirk knowledge base population"
   ],
   "biggest_assumptions": [
    "Scan-to-desk conversion reaches 25-40%",
    "Reviewer minutes per client fall as projected by day 90"
   ],
   "highest_risk_decisions": [
    "Offering the rush rider before full state-by-state counsel review",
    "Relying on a single named reviewer at pilot scale"
   ],
   "needs_domain_expert": [
    "[PLACEHOLDER] owner to complete"
   ],
   "needs_legal": [
    "[PLACEHOLDER] owner to complete"
   ],
   "needs_prototype": [
    "[PLACEHOLDER] owner to complete"
   ],
   "validate_before_prod": [
    "[PLACEHOLDER] owner to complete"
   ]
  },
  "final_recommendations": [
   "Ship a modular-monolith, evidence-linked, reviewer-gated vertical slice for CutSheet Clear. Preserve the invariant that no Submittal Pack or vendor chase email leaves the system without a signed human release. Do not launch commercially until owner-action facts close and at least one reviewer-released Monthly Completeness Pack has shipped.",
   "Do NOT default to microservices. Extract a module only when a specific pressure demands it.",
   "Do NOT allow AI outputs to leave the Completeness & Matching or Delivery contexts without OutputValidator pass and citation coverage.",
   "Do NOT ship any public claim on the CutSheet Clear microsite while owner-action facts (entity, reviewer identity, trademark clearance) remain open.",
   "Do NOT reuse a competitor/customer pairing or a dollar figure in client-facing copy without a fresh-verification citation — this exact failure mode (a misattributed customer relationship) was found and corrected in this build."
  ],
  "extensions": {
   "service_business_reality_check": {
    "is_service_business": true,
    "paid_outcome_clear": true,
    "workflow_present": true,
    "ai_native_fit_score": 4.5,
    "red_flags": []
   },
   "ai_native_fit": {
    "score": 4.6,
    "why": "High-volume, document-heavy, rules-based matching with judgment concentrated in a small exception queue — the exact shape of work current frontier models do well, and margins expand as parsing/matching accuracy improves.",
    "disqualifiers": []
   },
   "domain_evidence_register": [
    {
     "claim": "52% of Subcontractors receive direct-bill Submittal cut sheets, up from 45% in 2022",
     "evidence_type": "primary-research summary",
     "source": "AGC Subcontractor Universe Study (via IA Magazine)",
     "strength": "high",
     "gaps": "None — corroborated across two independent trade-press summaries"
    },
    {
     "claim": "Procore Submittals serves large brokers and remains operational as of mid-2026",
     "evidence_type": "press + legal filing coverage",
     "source": "Procore Submittals/Workday Ventures materials; federal court ruling coverage, Feb 2026",
     "strength": "high",
     "gaps": "Exact customer roster not independently verifiable — corrected one misattributed customer pairing this build"
    }
   ],
   "assumption_register": [
    {
     "assumption": "Scan-to-desk conversion reaches 25-40%",
     "impact_if_wrong": "severe — wedge economics fail",
     "how_to_validate": "10-Subcontractor pilot cohort with explicit pricing conversation",
     "blocking": true
    },
    {
     "assumption": "Reviewer minutes per client fall as parser coverage grows",
     "impact_if_wrong": "high — margin target missed",
     "how_to_validate": "Instrument reviewer minutes per cycle from pilot 1 onward",
     "blocking": false
    }
   ],
   "language_conflict_map": [
    {
     "term": "pack",
     "meaning_a": "Monthly Completeness Pack (this business's bundled deliverable: Pack + Chase list + report + furnish decisions + posting file)",
     "context_a": "CutSheet Clear",
     "meaning_b": "A different bundled-deliverable term used by unrelated businesses elsewhere in the AINBIS portfolio",
     "context_b": "other portfolio businesses (not this one)",
     "resolution": "Always qualify as 'Monthly Completeness Pack' in CutSheet Clear copy; never bare 'pack' without the qualifier in cross-portfolio contexts"
    }
   ],
   "build_buy_integrate": [
    {
     "subdomain": "Completeness & Matching",
     "decision": "build",
     "reason": "Core differentiated IP — the parser/matching engine is the moat"
    },
    {
     "subdomain": "Referral & Outreach",
     "decision": "buy",
     "reason": "Off-the-shelf CRM suffices; not differentiating"
    }
   ],
   "core_protection_strategy": [
    "[PLACEHOLDER] owner to complete"
   ],
   "boundary_stress_tests": [
    {
     "scenario": "A manufacturer disputes an chase email as a collection demand",
     "contexts_touched": [
      "Delivery"
     ],
     "breaks_if": "The demand-language filter has a gap for a novel phrasing",
     "verdict": "Mitigated by reviewer approval as a second gate"
    }
   ],
   "unresolved_ownership": [
    {
     "concept": "Trade scope split accuracy",
     "candidates": [
      "Subcontractor principal",
      "Trade-specialist QA reviewer"
     ],
     "recommendation": "Subcontractor principal owns and approves the scope split; CutSheet Clear only computes from it"
    }
   ],
   "published_language_contracts": [
    {
     "producer": "Intake & Normalization",
     "consumer": "Completeness & Matching",
     "contract": "Canonical normalized cut sheet schema",
     "versioning": "Schema version pinned per manufacturer parser release"
    }
   ],
   "shared_kernel_warnings": [
    "None identified — bounded contexts communicate only via events, no shared kernel"
   ],
   "aggregate_stress_tests": [
    {
     "aggregate": "PackAggregate",
     "scenario": "Concurrent reviewer sign attempts on the same Pack",
     "invariant_at_risk": "Source-page completeness before signature",
     "verdict": "Mitigated by optimistic locking on the aggregate root"
    }
   ],
   "agent_stress_tests": [
    {
     "agent": "ChaseItem Drafter Agent",
     "scenario": "A manufacturer's known aggressive collections department prompts an escalated tone",
     "failure_mode": "Draft reads as a threat despite passing the deterministic filter",
     "guardrail": "Reviewer approval catches tone issues the filter misses",
     "verdict": "Acceptable with reviewer gate"
    }
   ],
   "regulated_domain_handling": [
    {
     "regime": "State engineering-practice statutes",
     "applies_because": "CutSheet Clear performs back-office accounting adjacent to a licensed industry",
     "controls": [
      "No selling/soliciting/negotiating",
      "No consumer contact"
     ],
     "evidence_required": [
      "[PLACEHOLDER] owner to complete"
     ]
    },
    {
     "regime": "State collection-Subcontractor statutes",
     "applies_because": "Vendor chase emails could be miscategorized as third-party debt collection",
     "controls": [
      "Chase emails sent under subcontractor's own name",
      "Administrative-agent authorization",
      "No demand language"
     ],
     "evidence_required": "Per-state counsel review before offering the rush rider"
    }
   ],
   "unit_economics": {
    "price_model": "Flat monthly desk fee by volume tier + one-time scan + capped rush rider",
    "unit_of_value": "pack cycle (one client-month)",
    "gross_margin_pct": 62,
    "cost_drivers": [
     "Model inference (parse/match/draft)",
     "Reviewer minutes",
     "QA sampling"
    ],
    "breakeven_note": "COGS/client falls from $510 at launch to $245 by year 1 as parser coverage and auto-match rate improve"
   },
   "margin_leakage_map": [
    {
     "leakage": "Reviewer minutes not falling with parser coverage",
     "cause": "New manufacturer formats not yet in the fixture library",
     "impact": "Gross margin compression per new client",
     "mitigation": "Fixture library grows with every pilot; reuse across clients on the same manufacturer"
    }
   ],
   "slop_findings": [
    {
     "pattern": "Generic SaaS marketing phrasing",
     "status": "checked",
     "note": "Banned-phrase list enforced on the landing page (no 'leverage AI', 'streamline', etc.)"
    }
   ],
   "drift_checks": [
    {
     "stage": "build",
     "status": "checked",
     "findings": [
      "[PLACEHOLDER] owner to complete"
     ]
    }
   ],
   "gates": [
    {
     "id": "G1",
     "title": "No public claim before owner-action facts close",
     "passed": false,
     "checks": [
      {
       "name": "Entity confirmed",
       "ok": false,
       "evidence": "Pending owner action"
      },
      {
       "name": "Reviewer identity confirmed",
       "ok": false,
       "evidence": "Pending owner action"
      },
      {
       "name": "Trademark clearance",
       "ok": false,
       "evidence": "Pending owner action"
      }
     ]
    }
   ],
   "contradiction_scan": [
    {
     "id": "C1",
     "severity": "medium",
     "message": "Blueprint attributed Baldwin Group to Procore Submittals; fresh sourcing shows Baldwin Group uses Ascend/ReSource Pro instead",
     "refs": [
      "business-plan.md fresh-verification notes"
     ]
    }
   ],
   "rubric": {
    "categories": [
     {
      "category": "domain_modeling",
      "score": 4,
      "min": 3,
      "passed": true
     },
     {
      "category": "ai_governance",
      "score": 4,
      "min": 3,
      "passed": true
     },
     {
      "category": "compliance_boundary",
      "score": 4,
      "min": 3,
      "passed": true
     },
     {
      "category": "unit_economics",
      "score": 4,
      "min": 3,
      "passed": true
     },
     {
      "category": "gtm_clarity",
      "score": 4,
      "min": 3,
      "passed": true
     }
    ],
    "pass": true,
    "average": 4.1
   },
   "foundry_package": {
    "version": "1.0.0",
    "checksum": "n/a-generated-locally",
    "counts": {
     "subdomains": 4,
     "bounded_contexts": 4,
     "aggregates": 7,
     "events": 6,
     "commands": 6,
     "policies": 4,
     "ai_agents": 4,
     "invariants": 4,
     "integrations": 4,
     "adrs": 2
    },
    "subset": {
     "subdomains": [
      "Completeness & Matching",
      "Delivery",
      "Evidence & Compliance",
      "Referral & Outreach"
     ],
     "bounded_contexts": [
      "Intake & Normalization",
      "Completeness & Matching",
      "Delivery",
      "Quality Assurance"
     ],
     "aggregates": [
      "CutSheetAggregate",
      "SectionAggregate",
      "ComplianceMatrixAggregate",
      "PackAggregate",
      "ChaseItemAggregate",
      "AttestationAggregate",
      "TransmittalAggregate"
     ],
     "events": [
      "cut sheet.received",
      "cut sheet.normalized",
      "pack_cycle.crosswalk_completed",
      "Gap.reviewer_approved",
      "Submittal_Pack.signed",
      "manufacturer_chase email.sent"
     ],
     "commands": [
      "ReceiveCutSheet",
      "NormalizeCutSheet",
      "RunMatching",
      "ApproveGap",
      "SignPack",
      "SendChaseItem"
     ],
     "policies": [
      "Auto-route low-confidence match to reviewer",
      "Block demand-language patterns",
      "Second-reviewer spot check",
      "Auto-escalate aging chase email"
     ],
     "ai_agents": [
      "Extraction Agent",
      "Matching Agent",
      "Gap Drafter Agent",
      "ChaseItem Drafter Agent"
     ],
     "invariants": [
      "A Submittal Pack cannot be signed without tying to cut sheet totals to the penny",
      "A ChaseItem cannot be sent without reviewer approval and Subcontractor authorization on file",
      "No Gap is published without a cited source-cut sheet and Spec-requirement reference",
      "CutSheet Clear never issues a coverage or claims-adjustment determination"
     ],
     "integrations": [
      "Subcontractor management system (spec) export",
      "Cut sheet portals",
      "QuickBooks / spec posting-file import",
      "Manufacturer Submittal-department mailbox"
     ],
     "adrs": [
      "ADR-001",
      "ADR-002"
     ]
    }
   }
  }
 },
 "ddd_coverage": {
  "slug": "specialty-trade-product-data-submittal-completeness-desk",
  "total": 17,
  "passed": 17,
  "pct": 100,
  "checks": [
   {
    "key": "actors",
    "label": "Actors",
    "count": 4,
    "min": 3,
    "ok": true,
    "gate": "domain",
    "unblock": "Not needed — check passes at current counts."
   },
   {
    "key": "subdomains",
    "label": "Subdomains",
    "count": 4,
    "min": 3,
    "ok": true,
    "gate": "domain",
    "unblock": "Not needed — check passes at current counts."
   },
   {
    "key": "bounded_contexts",
    "label": "Bounded Contexts",
    "count": 4,
    "min": 3,
    "ok": true,
    "gate": "domain",
    "unblock": "Not needed — check passes at current counts."
   },
   {
    "key": "aggregates",
    "label": "Aggregates",
    "count": 7,
    "min": 3,
    "ok": true,
    "gate": "domain",
    "unblock": "Not needed — check passes at current counts."
   },
   {
    "key": "events",
    "label": "Events",
    "count": 6,
    "min": 3,
    "ok": true,
    "gate": "domain",
    "unblock": "Not needed — check passes at current counts."
   },
   {
    "key": "commands",
    "label": "Commands",
    "count": 6,
    "min": 3,
    "ok": true,
    "gate": "domain",
    "unblock": "Not needed — check passes at current counts."
   },
   {
    "key": "policies",
    "label": "Policies",
    "count": 4,
    "min": 2,
    "ok": true,
    "gate": "domain",
    "unblock": "Not needed — check passes at current counts."
   },
   {
    "key": "ai_agents",
    "label": "Ai Agents",
    "count": 4,
    "min": 3,
    "ok": true,
    "gate": "domain",
    "unblock": "Not needed — check passes at current counts."
   },
   {
    "key": "invariants",
    "label": "Invariants",
    "count": 4,
    "min": 3,
    "ok": true,
    "gate": "domain",
    "unblock": "Not needed — check passes at current counts."
   },
   {
    "key": "use_cases",
    "label": "Use Cases",
    "count": 2,
    "min": 2,
    "ok": true,
    "gate": "domain",
    "unblock": "Not needed — check passes at current counts."
   },
   {
    "key": "human_roles",
    "label": "Human Roles",
    "count": 3,
    "min": 3,
    "ok": true,
    "gate": "domain",
    "unblock": "Not needed — check passes at current counts."
   },
   {
    "key": "data_objects",
    "label": "Data Objects",
    "count": 3,
    "min": 3,
    "ok": true,
    "gate": "domain",
    "unblock": "Not needed — check passes at current counts."
   },
   {
    "key": "risk_register",
    "label": "Risk Register",
    "count": 3,
    "min": 3,
    "ok": true,
    "gate": "domain",
    "unblock": "Not needed — check passes at current counts."
   },
   {
    "key": "adrs",
    "label": "Adrs",
    "count": 2,
    "min": 2,
    "ok": true,
    "gate": "domain",
    "unblock": "Not needed — check passes at current counts."
   },
   {
    "key": "mvp_roadmap",
    "label": "Mvp Roadmap",
    "count": 1,
    "min": 1,
    "ok": true,
    "gate": "domain",
    "unblock": "Not needed — check passes at current counts."
   },
   {
    "key": "scaling_roadmap",
    "label": "Scaling Roadmap",
    "count": 2,
    "min": 2,
    "ok": true,
    "gate": "domain",
    "unblock": "Not needed — check passes at current counts."
   },
   {
    "key": "context_map",
    "label": "Context Map",
    "count": 4,
    "min": 2,
    "ok": true,
    "gate": "domain",
    "unblock": "Not needed — check passes at current counts."
   }
  ],
  "failingGates": []
 },
 "architecture": {
  "slug": "specialty-trade-product-data-submittal-completeness-desk",
  "archetypes": [
   "Completeness-and-Resubmittal workflow application",
   "back-office document-intelligence service"
  ],
  "archetype_impact": "Completeness cycle (client + calendar month) is the global scoping parameter — every read/write is scoped by Subcontractor tenant and cycle, not just tenant alone.",
  "personality": [
   "numerate",
   "calm",
   "evidence-first",
   "no hype"
  ],
  "forces_ranked": [
   {
    "force": "Trust/accuracy (source-page completeness)",
    "why": "A wrong Pack is the single fastest way to lose a client"
   },
   {
    "force": "Founder-operability (low ops burden)",
    "why": "Founder-operated launch cannot support a platform team"
   },
   {
    "force": "Time-to-first-revenue",
    "why": "Pilot cohort must convert within 90 days to validate the model"
   },
   {
    "force": "Scalability beyond pilot",
    "why": "Lowest priority at launch; revisit at 20+ clients"
   }
  ],
  "tradeoffs": [
   "Modular monolith trades some future scaling ease for launch speed and audit simplicity",
   "Manual manufacturer follow-up at launch trades automation for learning real response patterns first"
  ],
  "quality_scenarios": [
   {
    "attribute": "accuracy",
    "assumption": "Every cut sheet line traces to its source",
    "target": "Pack source-page check to the penny before signature, 100% of releases"
   },
   {
    "attribute": "reviewability",
    "assumption": "A reviewer can reconstruct any evidence chain quickly",
    "target": "Under 5 minutes to trace any Pack line to its source cut sheet"
   }
  ],
  "options": [
   {
    "style": "Modular monolith",
    "complexity": "low",
    "cost": "low",
    "ops_burden": "low",
    "team_fit": "high (founder-operated)",
    "scaling_path": "Extract modules under pressure",
    "security_impact": "Single audit boundary",
    "fits_here": true,
    "fits_when": "Founder/small-team launch",
    "wrong_here": false,
    "recommended": true
   },
   {
    "style": "Microservices per bounded context",
    "complexity": "high",
    "cost": "high",
    "ops_burden": "high",
    "team_fit": "low at launch",
    "scaling_path": "Already decomposed",
    "security_impact": "More boundaries to secure",
    "fits_here": false,
    "fits_when": "Large team, proven scale pressure",
    "wrong_here": true,
    "recommended": false
   },
   {
    "style": "No-code workflow tool",
    "complexity": "low",
    "cost": "low",
    "ops_burden": "low",
    "team_fit": "medium",
    "scaling_path": "Poor — hard to enforce deterministic gates",
    "security_impact": "Vendor-dependent",
    "fits_here": false,
    "fits_when": "No hard money-math invariant",
    "wrong_here": true,
    "recommended": false
   }
  ],
  "chosen_style": "modular monolith",
  "chosen_rationale": "Modular monolith with background jobs for bursty cut sheet-extraction work — one audit boundary, low ops burden, easy per-context ownership as the team grows.",
  "rejected": [
   {
    "style": "Microservices per bounded context",
    "why_rejected": "Premature operational complexity for a founder-operated launch"
   },
   {
    "style": "No-code workflow tool",
    "why_rejected": "Cannot reliably enforce the deterministic source-page-complete gate"
   }
  ],
  "target": {
   "overview": "Single-region modular monolith, Postgres primary store, background job queue for extraction/matching, internal reviewer console, public marketing microsite.",
   "frontend": "Reviewer console (internal, authenticated) + public marketing microsite (static, self-contained)",
   "backend": "Single deployable service, module boundaries enforced by code convention and event-only cross-module calls",
   "data": "Postgres with row-level tenant security; object storage for cut sheet files",
   "api": "Internal authenticated API for the reviewer console; no public API at launch",
   "authn_authz": "SSO + MFA for reviewers; row-level auth scaffolding for a future client portal",
   "integrations": "Spec section file ingestion; cut sheet mailbox/portal; QuickBooks/spec posting-file export",
   "background_jobs": "CutSheet extraction, matching, aging-escalation checks",
   "object_storage": "Encrypted, per-Subcontractor-prefix isolated",
   "notifications": "Email only at launch (client comms + internal escalation alerts)",
   "search": "None at launch",
   "analytics": "Internal metrics dashboard only; no third-party analytics on the reviewer console",
   "ai": "Single frontier-model provider via a scripted extraction/matching/drafting pipeline, prompts + fixtures versioned in-repo",
   "observability": "Structured logs, RED metrics, model-call cost/latency spans",
   "deployment": "Single production region, multi-AZ, preview environment per PR",
   "security": "Row-level tenant isolation, encryption at rest/in transit, least-privilege access",
   "dr": "Daily backups, tested restore runbook, RPO 24h / RTO 4h at launch scale"
  },
  "modules": [
   {
    "name": "intake-normalization",
    "purpose": "CutSheet receipt, extraction, and source-page check.",
    "owned_domain": [
     "CutSheet"
    ],
    "application_services": [
     "ReceiveCutSheet",
     "NormalizeCutSheet"
    ],
    "infra_adapters": [
     "Mailbox listener",
     "Object storage adapter",
     "Extraction-model client"
    ],
    "public_interfaces": [
     "cut sheet.normalized event"
    ],
    "forbidden_deps": [
     "Cannot call Completeness-matching internals directly — event only"
    ],
    "responsibility": "CutSheet receipt, extraction, and source-page check.",
    "owned_data": [
     "CutSheet"
    ],
    "events_produced": [
     "cut sheet.normalized event"
    ],
    "events_consumed": [],
    "interfaces": [
     "cut sheet.normalized event"
    ],
    "depends_on": [],
    "entities": [
     "CutSheet"
    ],
    "failure_risks": [
     "Module-boundary violation via direct DB access"
    ],
    "scaling": "Extract to a service only under sustained isolated load pressure",
    "future_split_trigger": "Sustained CPU/latency pressure isolated to this module"
   },
   {
    "name": "Completeness-matching",
    "purpose": "Matching, Gap classification, Pack source-page check.",
    "owned_domain": [
     "Section",
     "ComplianceMatrix",
     "Pack"
    ],
    "application_services": [
     "RunMatching",
     "ApproveGap",
     "SignPack"
    ],
    "infra_adapters": [
     "spec-export parser",
     "Submittal-schedule store"
    ],
    "public_interfaces": [
     "Gap.reviewer_approved event",
     "Submittal_Pack.signed event"
    ],
    "forbidden_deps": [
     "Cannot call Resubmittal-delivery internals directly — event only"
    ],
    "responsibility": "Matching, Gap classification, Pack source-page check.",
    "owned_data": [
     "Section",
     "ComplianceMatrix",
     "Pack"
    ],
    "events_produced": [
     "Gap.reviewer_approved event",
     "Submittal_Pack.signed event"
    ],
    "events_consumed": [],
    "interfaces": [
     "Gap.reviewer_approved event",
     "Submittal_Pack.signed event"
    ],
    "depends_on": [],
    "entities": [
     "Section",
     "ComplianceMatrix",
     "Pack"
    ],
    "failure_risks": [
     "Module-boundary violation via direct DB access"
    ],
    "scaling": "Extract to a service only under sustained isolated load pressure",
    "future_split_trigger": "Sustained CPU/latency pressure isolated to this module"
   },
   {
    "name": "Resubmittal-delivery",
    "purpose": "Vendor-chase drafting/sending, aging, pack assembly.",
    "owned_domain": [
     "ChaseItem",
     "AECommentRecord",
     "MonthlyCompletenessPack"
    ],
    "application_services": [
     "SendChaseItem",
     "AssemblePack",
     "DeliverPack"
    ],
    "infra_adapters": [
     "Email-send adapter",
     "Posting-file generator"
    ],
    "public_interfaces": [
     "pack.delivered event"
    ],
    "forbidden_deps": [
     "Cannot bypass quality-assurance signoff gate"
    ],
    "responsibility": "Vendor-chase drafting/sending, aging, pack assembly.",
    "owned_data": [
     "ChaseItem",
     "AECommentRecord",
     "MonthlyCompletenessPack"
    ],
    "events_produced": [
     "pack.delivered event"
    ],
    "events_consumed": [],
    "interfaces": [
     "pack.delivered event"
    ],
    "depends_on": [],
    "entities": [
     "ChaseItem",
     "AECommentRecord",
     "MonthlyCompletenessPack"
    ],
    "failure_risks": [
     "Module-boundary violation via direct DB access"
    ],
    "scaling": "Extract to a service only under sustained isolated load pressure",
    "future_split_trigger": "Sustained CPU/latency pressure isolated to this module"
   },
   {
    "name": "quality-assurance",
    "purpose": "Signoff and transmittal lifecycle.",
    "owned_domain": [
     "Signoff",
     "Transmittal"
    ],
    "application_services": [
     "ApproveArtifact",
     "RetractArtifact"
    ],
    "infra_adapters": [
     "Signature-binding session store"
    ],
    "public_interfaces": [
     "ArtifactSigned event"
    ],
    "forbidden_deps": [
     "Cannot draft on behalf of any other module"
    ],
    "responsibility": "Signoff and transmittal lifecycle.",
    "owned_data": [
     "Signoff",
     "Transmittal"
    ],
    "events_produced": [
     "ArtifactSigned event"
    ],
    "events_consumed": [],
    "interfaces": [
     "ArtifactSigned event"
    ],
    "depends_on": [],
    "entities": [
     "Signoff",
     "Transmittal"
    ],
    "failure_risks": [
     "Module-boundary violation via direct DB access"
    ],
    "scaling": "Extract to a service only under sustained isolated load pressure",
    "future_split_trigger": "Sustained CPU/latency pressure isolated to this module"
   }
  ],
  "data_architecture": {
   "primary_db": "Postgres",
   "secondary": [
    "Object storage for cut sheet files"
   ],
   "cache": "None at launch",
   "search": "None at launch",
   "vector": "None at launch (retrieval is structured lookup, not embeddings, at this scale)",
   "object_storage": "Per-Subcontractor-prefix isolated bucket",
   "schema_strategy": "Migration-gated, reviewed per PR",
   "migrations": "Forward-only, reviewed",
   "backups": "Daily automated, tested restore quarterly",
   "retention": "7 years on signed Packs/chase lists; 13 months on agent-run logs",
   "audit_logs": "Append-only, hash-chained per pack cycle",
   "soft_delete": "Used for client offboarding, hard-delete on retention expiry",
   "privacy": "Per-tenant row-level security",
   "encryption": "At rest and in transit",
   "multi_tenancy": "Logical isolation via tenant_id row-level security"
  },
  "api": {
   "style": "Internal REST",
   "public_vs_internal": "Internal only at launch",
   "versioning": "Path-versioned when a client portal ships",
   "rate_limiting": "Per-tenant budget caps on model-backed endpoints",
   "idempotency": "Idempotency keys on cut sheet ingestion",
   "pagination": "Cursor-based on list endpoints",
   "error_format": "Structured JSON problem-details",
   "webhook_security": "N/A at launch",
   "retries": "Exponential backoff on model-provider calls",
   "contract_testing": "Per-section parser schema contract tests in CI",
   "backward_compat": "N/A at launch (no public API)",
   "contract_testing_plan": "Fixture-based regression suite run on every parser/prompt change"
  },
  "security": {
   "authn": "SSO + MFA for reviewers",
   "authz": "Role-based, server-side capability checks",
   "tenant_isolation": "Row-level security keyed on tenant_id",
   "secrets": "Managed secrets store, no secrets in code",
   "encryption": "At rest and in transit",
   "session": "Server-side session with short-lived tokens",
   "input_validation": "Schema validation on every ingestion path",
   "api_protection": "Rate limiting + auth on all internal endpoints",
   "audit_log": "Append-only, hash-chained",
   "admin_access": "Break-glass access logged and time-boxed",
   "supply_chain": "Dependency scanning in CI",
   "threat_model": [
    "Cross-tenant leak",
    "Reviewer identity spoofing",
    "Prompt injection via uploaded cut sheets"
   ],
   "abuse_cases": [
    "Bulk fraudulent cut sheet upload attempting to poison the matching engine"
   ],
   "zero_trust": "Server-side checks on every capability, never client-only",
   "asvs_notes": "Aligned to OWASP ASVS L2 controls for a B2B financial-data service"
  },
  "reliability": {
   "failure_modes": [
    "Model-provider outage mid-extraction",
    "Manufacturer portal credential expiry",
    "CutSheet queue backlog at month-end"
   ],
   "graceful_degradation": "Queue and retry rather than fail hard; reviewer notified of delayed cycles",
   "retry_policy": "Exponential backoff, max 5 attempts on model calls",
   "timeouts": "30s extraction timeout, background-job fallback beyond that",
   "circuit_breaker": "Trip on repeated model-provider failures, alert on-call",
   "queueing": "Background job queue for extraction/matching",
   "idempotency": "Idempotency keys on cut sheet ingestion",
   "dlq": "Dead-letter queue for repeatedly failing extraction jobs",
   "transactions": "Aggregate-scoped transactions, no cross-aggregate transactions",
   "dr": "Daily backups, quarterly restore test",
   "incident_response": "Runbook: detect, contain, notify, root-cause, postmortem",
   "slos": [
    {
     "name": "p95 cut sheet extraction latency",
     "target": "under 30s"
    },
    {
     "name": "Monthly pack on-time delivery",
     "target": "≥95% of cycles by the 5th business day"
    }
   ]
  },
  "scaling": {
   "mvp_can_stay_simple": [
    "Single Postgres instance",
    "In-process event dispatch"
   ],
   "modular_now": [
    "Module boundaries enforced by convention"
   ],
   "deferrable": [
    "Client-facing portal",
    "Public API",
    "Vector search"
   ],
   "breaks_first": "Reviewer throughput before infrastructure",
   "db_path": "Read replicas once reporting load grows",
   "jobs_path": "Managed queue once in-process dispatch saturates",
   "cache_path": "Add a cache layer only if read latency becomes a measured problem",
   "search_path": "Add full-text search only if client-portal search becomes a real need",
   "files_path": "Object storage scales natively",
   "api_path": "Add a versioned public API only when a client portal ships",
   "multi_region": "Not needed at this scale",
   "cost_control": "Per-tenant model-spend budget caps"
  },
  "ai": {
   "provider": "Single frontier-model provider (model-agnostic schemas/prompts, swappable within days)",
   "prompt_mgmt": "Versioned in-repo, immutable once published",
   "rag": "Structured per-Subcontractor + per-section retrieval, not embeddings-based at this scale",
   "vector": "Not used at this scale",
   "embeddings": "Not used at this scale",
   "eval": "Fixture-based regression suite per manufacturer",
   "hitl": "Reviewer gate on every Gap and vendor chase email",
   "guardrails": "Deterministic output filters + structured validation",
   "prompt_injection": "Uploaded cut sheet content treated as untrusted data, never instructions",
   "leakage": "Per-tenant retrieval partitioning",
   "fallback": "Dual-provider fallback path documented, not yet implemented at pilot scale",
   "latency_cost": "Tracked per AgentRun",
   "memory": "Session-scoped only, no persistent cross-client memory",
   "tool_permissions": "Extraction/matching/drafting agents have read-only access to their own context's data",
   "auditability": "Every AgentRun logged with prompt version + validator verdict",
   "citation": "Every Gap and eligibility-adjacent claim must cite a source"
  },
  "devops": {
   "environments": [
    "local",
    "preview (per-PR)",
    "staging",
    "production (single region + multi-AZ)"
   ],
   "cicd": "PR -> typecheck + unit + snapshot -> preview deploy -> main auto-deploys",
   "iac": "Declarative infra config checked into the repo",
   "secrets": "Managed secrets store",
   "preview_envs": "Per-PR ephemeral environments",
   "migrations": "Reviewed, forward-only",
   "rollback": "Blue/green deploy with fast rollback",
   "release_style": "Continuous deployment on main, feature-flagged risky changes",
   "feature_flags": "Used for prompt-version rollouts",
   "monitoring": "Structured logs + RED metrics",
   "alerting": "On-call paged on SLO breach",
   "logs": "Structured, tenant-scoped, PII-scrubbed",
   "error_tracking": "Source-mapped error tracking",
   "uptime": "Target 99.5% at pilot scale",
   "cost_monitoring": "Per-tenant model-spend dashboard"
  },
  "testing": {
   "unit": "Source-page check math and materiality thresholds",
   "integration": "Cross-module event contracts",
   "contract": "Per-section parser schema",
   "e2e": "Intake to delivery smoke test",
   "security": "Row-level isolation tests",
   "a11y": "axe-core on reviewer surfaces",
   "load": "Month-end volume simulation",
   "chaos": "Model-provider outage simulation",
   "migration": "Forward-only migration dry-run in CI",
   "backup_restore": "Quarterly restore drill",
   "ai_eval": "Fixture-based regression suite per manufacturer",
   "test_data": "Anonymized gold-standard cut sheet fixtures"
  },
  "observability": {
   "logs": "Structured, tenant-scoped, PII-scrubbed",
   "metrics": "RED metrics per workflow",
   "traces": "Model-call spans with cost + latency",
   "audit_events": "Append-only, hash-chained per cycle",
   "business_events": "scan_requested, pack_delivered, Gap_approved",
   "error_tracking": "Source-mapped error tracking",
   "security_monitoring": "Cross-tenant access-attempt alerting",
   "cost_monitoring": "Per-tenant model-spend dashboard",
   "dashboards": [
    "Ops dashboard",
    "Economics dashboard"
   ],
   "alert_thresholds": [
    "Auto-match rate <80%",
    "Reviewer minutes >180/cycle"
   ],
   "triage": "On-call reviews alert, checks tenant scope, escalates per runbook"
  },
  "cost": {
   "drivers": [
    {
     "name": "Model inference per cut sheet",
     "note": "Scales with cut sheet volume, falls per-cut sheet as parser coverage grows"
    },
    {
     "name": "Reviewer labor minutes",
     "note": "Falls with auto-match rate improvement"
    },
    {
     "name": "Object storage",
     "note": "Linear with client count, low absolute cost"
    }
   ],
   "likely_traps": [
    "Over-provisioning background workers before real volume data exists"
   ],
   "controls": [
    "Per-tenant budget caps",
    "Monthly cost-per-client dashboard review"
   ]
  },
  "multi_tenancy": {
   "model": "Shared infrastructure, logical isolation",
   "isolation": "Row-level security keyed on tenant_id",
   "tenant_aware_authz": "Every capability check includes tenant_id",
   "tenant_config": "Per-Subcontractor section list and Submittal-schedule config",
   "branding": "N/A at launch (internal-only console)",
   "tenant_export": "Full-cycle export available on request",
   "tenant_deletion": "Soft-delete then hard-delete on retention expiry",
   "tenant_audit": "Per-tenant audit log export",
   "noisy_neighbor": "Per-tenant concurrency and budget caps",
   "tenant_rate_limits": "Per-tenant model-call budget",
   "billing": "Stripe, flat monthly + one-time scan fee",
   "why_this_fits": "Small client count at launch makes logical isolation sufficient; a hard single-tenant requirement would trigger a per-client deployment exception."
  },
  "privacy_compliance": {
   "data_classification": "Financial/PII tiers documented in product.security.data_classifications",
   "minimization": "Only fields needed for matching/Completeness retained",
   "consent": "Engagement letter + vendor-communication authorization",
   "access_logs": "Per-access logged with actor + timestamp",
   "audit_trails": "Append-only, hash-chained",
   "retention": "7 years on Packs/chase lists; 13 months on agent logs",
   "legal_hold": "Manual legal-hold flag overrides retention deletion",
   "right_to_delete": "Honored post-retention-window or on contract termination per engagement letter",
   "right_to_export": "Full-cycle export available on request",
   "sensitive_handling": "Confidential project-data handling program",
   "boundaries": "No Subcontractor activity; no fund custody; no tax/legal advice",
   "residency": "US-only at launch",
   "vendor_risk": "Single model-provider risk documented; dual-provider fallback on the roadmap",
   "breach_response": "Documented incident-response runbook",
   "admin_controls": "Break-glass access logged and time-boxed",
   "evidence_collection": "Audit-log export within 24 hours of a breach or dispute"
  },
  "frontend": {
   "framework": "React (internal reviewer console)",
   "rendering": "Client-rendered SPA for the console; static self-contained HTML for the public microsite",
   "routing": "Client-side router for the console",
   "state": "Local + server-state cache",
   "server_state": "Fetched per reviewer session",
   "forms": "Native form elements with client + server validation",
   "error_handling": "Structured error boundaries",
   "components": "Design-token-driven component library",
   "design_system": "Semantic tokens per DESIGN-STANDARD.md",
   "auth_ui": "SSO redirect flow",
   "authz_aware_ui": "Capability-gated UI elements",
   "a11y": "WCAG 2.2 AA target",
   "i18n": "en-US only at launch",
   "performance": "Console not performance-critical (internal); microsite budget ≤120KB, no external requests",
   "bundling": "Standard bundler, code-split by module",
   "testing": "Component + e2e tests on reviewer surfaces",
   "offline": "Not supported at launch",
   "realtime": "Not needed at launch"
  },
  "backend": {
   "framework": "Node/TypeScript service",
   "layering": "domain / application / infra per module",
   "domain": "Aggregates + value objects per bounded context",
   "services": "Application services orchestrate domain + infra",
   "repositories": "One repository per aggregate root",
   "validation": "Schema validation at every boundary",
   "authorization": "Server-side capability checks only",
   "jobs": "Background job queue for extraction/matching",
   "events": "In-process event dispatch at launch",
   "files": "Object storage adapter",
   "email_sms": "Email adapter for client comms and vendor chase emails",
   "scheduled": "Aging-escalation checks run daily",
   "errors": "Structured error types per layer",
   "logging": "Structured, tenant-scoped, PII-scrubbed",
   "config": "Environment-based config, no secrets in code",
   "di": "Constructor-based dependency injection",
   "testing": "Unit + contract + e2e per module"
  },
  "diagrams": {
   "context_mermaid": "graph TD; Subcontractor-->Intake; Intake-->Completeness; Completeness-->Resubmittal; Resubmittal-->QA",
   "container_mermaid": "graph TD; Console-->API; API-->Postgres; API-->ObjectStorage; API-->ModelProvider",
   "data_flow_mermaid": "graph LR; CutSheet-->Extraction-->Matching-->ComplianceMatrix-->Pack-->Pack",
   "auth_flow_mermaid": "graph LR; Reviewer-->SSO-->MFA-->Session",
   "authz_flow_mermaid": "graph LR; Request-->RoleCheck-->TenantCheck-->Allow",
   "deployment_mermaid": "graph TD; PR-->Preview-->Main-->Production",
   "background_job_mermaid": "graph LR; Queue-->Worker-->Retry-->DLQ",
   "event_flow_mermaid": "graph LR; CutSheetExtracted-->CrosswalkCompleted-->MatrixDrafted-->PackSigned",
   "failure_flow_mermaid": "graph LR; Failure-->Retry-->CircuitBreaker-->Alert",
   "multi_tenant_flow_mermaid": "graph LR; Request-->TenantContext-->RowLevelSecurity-->Data",
   "ai_flow_mermaid": "graph LR; CutSheet-->ExtractionAgent-->MatchingAgent-->DrafterAgent-->Reviewer"
  },
  "adrs": [
   {
    "id": "ADR-001",
    "decision": "Adopt a modular monolith, not microservices, at launch",
    "status": "accepted",
    "context": "Founder-operated team; low ops burden required",
    "options": [
     "Modular monolith",
     "Microservices per bounded context",
     "No-code workflow tool"
    ],
    "chosen": "Modular monolith",
    "business_reason": "Fastest path to first paid pilot without a platform team",
    "technical_reason": "One deploy, one audit boundary, easy to reason about at this scale",
    "tradeoffs": "Will need extraction into services if reviewer-console load grows sharply",
    "risks": [
     "[PLACEHOLDER] owner to complete"
    ],
    "revisit_trigger": "Sustained CPU/latency pressure isolated to one module",
    "why": "One deploy, one audit boundary, easy to reason about at this scale",
    "consequences": [
     "[PLACEHOLDER] owner to complete"
    ],
    "reversal": "Would require a migration of the affected module's data model.",
    "revisit_when": "Sustained CPU/latency pressure isolated to one module"
   },
   {
    "id": "ADR-002",
    "decision": "Deterministic code owns all money math; the model never computes a final dollar figure",
    "status": "accepted",
    "context": "Source-page completeness is a hard trust requirement",
    "options": [
     "Model computes totals",
     "Deterministic code computes totals, model only extracts/classifies"
    ],
    "chosen": "Deterministic code computes totals",
    "business_reason": "A wrong dollar figure from a model is the single fastest way to lose a client's trust",
    "technical_reason": "Removes an entire class of hallucination risk from the highest-stakes output",
    "tradeoffs": "Slightly more engineering work per new transaction-type edge case",
    "risks": "Edge cases not yet coded fall through to reviewer manual calculation",
    "revisit_trigger": "None — this is a standing invariant, not revisited",
    "why": "Removes an entire class of hallucination risk from the highest-stakes output",
    "consequences": "Slightly more engineering work per new transaction-type edge case",
    "reversal": "Would require a migration of the affected module's data model.",
    "revisit_when": "None — this is a standing invariant, not revisited"
   }
  ],
  "roadmap": [
   {
    "phase": "Phase 0 — Discovery + pilot LOI",
    "weeks": "Weeks 1-2",
    "outcomes": [
     "3-5 pilot Subcontractor LOIs",
     "Evidence pack from each pilot Subcontractor",
     "Written ICP + pricing hypothesis"
    ],
    "exit_criteria": [
     "≥3 LOIs signed",
     "Owner-action Pack populated per Subcontractor",
     "Reviewer identity confirmed"
    ],
    "kill_criteria": [
     "<2 LOIs after 2 weeks",
     "No willingness-to-pay signal above pilot price"
    ],
    "build": [
     "3-5 pilot Subcontractor LOIs",
     "Evidence pack from each pilot Subcontractor",
     "Written ICP + pricing hypothesis"
    ],
    "defer": [],
    "monitor": [
     "≥3 LOIs signed",
     "Owner-action Pack populated per Subcontractor",
     "Reviewer identity confirmed"
    ],
    "avoid": [
     "<2 LOIs after 2 weeks",
     "No willingness-to-pay signal above pilot price"
    ],
    "acceptable_debt": [
     "[PLACEHOLDER] owner to complete"
    ],
    "dangerous_debt": [
     "[PLACEHOLDER] owner to complete"
    ],
    "triggers_to_change": [
     "[PLACEHOLDER] owner to complete"
    ]
   },
   {
    "phase": "Phase 1 — Thin vertical slice",
    "weeks": "Weeks 3-4",
    "outcomes": [
     "Intake -> match -> reviewer signoff -> delivery working end-to-end for one spec format",
     "Audit trail wired",
     "Instrumentation live"
    ],
    "exit_criteria": [
     "1 real Rejection Risk Scan delivered + reviewer-signed",
     "p95 workflow latency published"
    ],
    "kill_criteria": [
     "Reviewer signoff cycle >10 business days",
     "Evidence bundle cannot be reconstructed on demand"
    ],
    "build": [
     "Intake -> match -> reviewer signoff -> delivery working end-to-end for one spec format",
     "Audit trail wired",
     "Instrumentation live"
    ],
    "defer": [],
    "monitor": [
     "1 real Rejection Risk Scan delivered + reviewer-signed",
     "p95 workflow latency published"
    ],
    "avoid": [
     "Reviewer signoff cycle >10 business days",
     "Evidence bundle cannot be reconstructed on demand"
    ],
    "acceptable_debt": "Manual manufacturer follow-up and onboarding at pilot scale",
    "dangerous_debt": "Skipping the reviewer-signoff gate under volume pressure",
    "triggers_to_change": "Kill/pivot criteria met at any phase gate"
   },
   {
    "phase": "Phase 2 — Pilot cohort",
    "weeks": "Weeks 3-8",
    "outcomes": [
     "10 pilot Subcontractors scanned",
     "First standard-price desk conversion",
     "SOC 2 Type I scoping"
    ],
    "exit_criteria": [
     "≥1 standard-price contract",
     "Post-scan debrief trust signal captured",
     "Postmortem cadence in place"
    ],
    "kill_criteria": [
     "No standard-price conversion by Day 90",
     "Scan-to-desk conversion below 25%"
    ],
    "build": [
     "10 pilot Subcontractors scanned",
     "First standard-price desk conversion",
     "SOC 2 Type I scoping"
    ],
    "defer": [],
    "monitor": [
     "≥1 standard-price contract",
     "Post-scan debrief trust signal captured",
     "Postmortem cadence in place"
    ],
    "avoid": [
     "No standard-price conversion by Day 90",
     "Scan-to-desk conversion below 25%"
    ],
    "acceptable_debt": "Manual manufacturer follow-up and onboarding at pilot scale",
    "dangerous_debt": "Skipping the reviewer-signoff gate under volume pressure",
    "triggers_to_change": "Kill/pivot criteria met at any phase gate"
   },
   {
    "phase": "Phase 3 — Recurring-desk scale-up",
    "weeks": "Weeks 9-13 (Day 90 checkpoint)",
    "outcomes": [
     "Public commercial launch of the microsite as 'ready'",
     "Rush rider and Diligence Source-page check line active",
     "Owner-action Pack closed for launch"
    ],
    "exit_criteria": [
     "COGS/rework/cycle-time measured against target",
     "Expansion beyond the pilot cohort gated on targets, not calendar time"
    ],
    "kill_criteria": [
     "Rework rate persistently above 3%",
     "Reviewer minutes per client not falling with volume"
    ],
    "build": [
     "Public commercial launch of the microsite as 'ready'",
     "Rush rider and Diligence Source-page check line active",
     "Owner-action Pack closed for launch"
    ],
    "defer": [],
    "monitor": [
     "COGS/rework/cycle-time measured against target",
     "Expansion beyond the pilot cohort gated on targets, not calendar time"
    ],
    "avoid": [
     "Rework rate persistently above 3%",
     "Reviewer minutes per client not falling with volume"
    ],
    "acceptable_debt": "Manual manufacturer follow-up and onboarding at pilot scale",
    "dangerous_debt": "Skipping the reviewer-signoff gate under volume pressure",
    "triggers_to_change": "Kill/pivot criteria met at any phase gate"
   }
  ],
  "anti_overengineering": {
   "flagged": [
    {
     "item": "Client-facing portal at launch",
     "why": "No client has asked for self-serve status; email/upload-link delivery is sufficient at pilot scale.",
     "simpler": "Defer to year 1, gated on client demand signal."
    },
    {
     "item": "Vector search / embeddings",
     "why": "Data volume at launch doesn't justify it; structured retrieval suffices.",
     "simpler": "Structured per-Subcontractor and per-section lookup."
    },
    {
     "item": "Microservices per bounded context",
     "why": "Premature operational complexity for a founder-operated launch.",
     "simpler": "Modular monolith with enforced module boundaries."
    }
   ]
  },
  "risks": [
   {
    "risk": "GC-portal vendor bundles Completeness 'free' with a chase workflow",
    "likelihood": "medium-high",
    "impact": "high",
    "mitigation": "Portal-agnostic positioning; resubmittal/chase as the human moat",
    "detection": "Autodesk Build (ACC) or a competing GC-portal module adds chase/Resubmittal features",
    "owner": "owner",
    "escalation": "Reviewer -> Senior Reviewer -> Owner -> Counsel",
    "fallback": "Portal-agnostic positioning; resubmittal/chase as the human moat",
    "category": "business"
   },
   {
    "risk": "Scan-to-desk conversion underperforms",
    "likelihood": "medium",
    "impact": "severe",
    "mitigation": "Pilot gate at 25%; alternative packaging tested in cohort 2",
    "detection": "Pilot cohort conversion below 25%",
    "owner": "owner",
    "escalation": "Reviewer -> Senior Reviewer -> Owner -> Counsel",
    "fallback": "Pilot gate at 25%; alternative packaging tested in cohort 2",
    "category": "business"
   },
   {
    "risk": "False-positive Gap sent to a manufacturer",
    "likelihood": "medium",
    "impact": "high",
    "mitigation": "100% reviewer approval; evidence-link requirement; chase email-not-demand language",
    "detection": "Manufacturer disputes an chase email as unfounded",
    "owner": "legal",
    "escalation": "Reviewer -> Senior Reviewer -> Owner -> Counsel",
    "fallback": "100% reviewer approval; evidence-link requirement; chase email-not-demand language",
    "category": "business"
   }
  ],
  "rules": [
   "No cross-module database table sharing",
   "No model call computes final money math",
   "No public claim before owner-action facts close"
  ],
  "audit": {
   "product_fit": 4,
   "simplicity": 4,
   "security": 4,
   "reliability": 4,
   "scalability": 3,
   "maintainability": 4,
   "performance": 4,
   "cost": 4,
   "compliance": 3,
   "dx": 4,
   "ops_burden": 4,
   "extensibility": 4,
   "team_suitability": 4,
   "time_to_market": 4,
   "recommendation": {
    "verdict": "conditional-go",
    "stack": "Node/TypeScript + Postgres + single frontier-model provider",
    "style": "modular monolith",
    "database": "Postgres with row-level tenant security",
    "hosting": "Single-region, multi-AZ",
    "auth": "SSO + MFA for reviewers",
    "ai_approach": "Scripted extraction/matching/drafting pipeline with reviewer gates",
    "integrations": "Spec section ingestion, cut sheet intake, QuickBooks/spec posting export",
    "build_first": [
     "Intake & Normalization",
     "Completeness & Matching"
    ],
    "revisit_later": [
     "Client-facing portal",
     "Public API"
    ],
    "avoid": [
     "Microservices",
     "Vector search at this scale"
    ],
    "biggest_risks": [
     "Reviewer bottleneck",
     "A vendor-facing claim proves incorrect"
    ],
    "top_10_rules": [
     "No cross-module database table sharing",
     "No model call computes final money math",
     "No public claim before owner-action facts close",
     "Deterministic code owns all money math",
     "Reviewer gate on every client- or vendor-facing output"
    ],
    "first_10_steps": [
     "Confirm the named trade-specialist QA reviewer + engagement letter on file",
     "Populate owner-action Pack with entity, jurisdiction, contact inbox, privacy inbox",
     "Open pilot-cohort intake (cap 10) with explicit pricing conversation",
     "Write ICP + kill/pivot criteria in the plan file",
     "Stand up the evidence-linked intake -> match -> reviewer signoff loop",
     "Wire append-only audit log + hash-chained snapshots",
     "Add row-level auth + tenant-scoped retrieval indices",
     "Instrument scan-request, pack-delivery, and reviewer-signoff events",
     "Publish the microsite with FAQPage schema only and noindex until owner-facts close",
     "Schedule the Day-90 kill/pivot review with executive sponsor"
    ]
   }
  }
 },
 "design": {
  "slug": "specialty-trade-product-data-submittal-completeness-desk",
  "archetypes": [
   "Pack / Completeness Desk",
   "back-office trust interface"
  ],
  "user_mindset": {
   "goals": "Find out fast whether manufacturers are shipping incomplete cut sheet data, without operating new software",
   "session_length": "Short, task-focused (scan intake, monthly pack review)",
   "confidence": "Numerate, skeptical of unproven claims — wants evidence, not a dashboard",
   "interface_needs": "Clear evidence chain from cut sheet line to Pack to signature"
  },
  "posture": [
   "calm",
   "numerate",
   "institutional-but-warm"
  ],
  "density": "compact",
  "trust_level": {
   "tier": "high",
   "sensitive_domains": [
    "Subcontractor financial data",
    "AE comment data"
   ],
   "implications": [
    "Every dollar figure must show its source",
    "No fabricated proof; honest placeholder slots until real cycles ship"
   ]
  },
  "differentiation": {
   "avoid": [
    "Insurtech-startup gradient look",
    "Wheat/tractor-style vertical clip-art equivalents (generic finance-SaaS iconography)",
    "Alarm-red urgency banners"
   ],
   "strategy": "A spec-sheet aesthetic — deep teal/ink against warm parchment, serif numerals — that reads like a specialist's workbook, not a dashboard demo."
  },
  "territories": [
   {
    "name": "Pack Desk",
    "color_mood": "deep teal + warm parchment + amber accent",
    "typography": "Serif numerals, sans body",
    "density": "compact",
    "component_feel": "workbook-like, artifact-shaped cards",
    "motion": "minimal, calm",
    "fits": "Completeness/back-office trust interfaces",
    "risks": "Could read as too formal for a younger buyer persona (not a concern here — buyer is an subcontractor principal)"
   },
   {
    "name": "Filing Desk",
    "color_mood": "similar palette family used elsewhere in the portfolio",
    "typography": "Serif display",
    "density": "compact",
    "component_feel": "filing-tab metaphor",
    "motion": "minimal",
    "fits": "Deadline-driven filing businesses",
    "risks": "Wrong metaphor here — no single filing deadline exists in this business"
   },
   {
    "name": "Completeness Console",
    "color_mood": "cooler blue-gray, more software-dashboard feeling",
    "typography": "Sans-only",
    "density": "dense",
    "component_feel": "dashboard-like",
    "motion": "minimal",
    "fits": "A future client-facing portal, not the launch microsite",
    "risks": "Reads too much like software the client has to operate — against the done-for-you positioning"
   }
  ],
  "chosen_territory": "Pack Desk",
  "chosen_rationale": "The Submittal Pack is the deliverable; the spec-desk metaphor keeps every screen artifact-shaped, the way a Subcontractor or acquirer would want to see it.",
  "prioritized_components": [
   {
    "name": "Hero with cycle-status panel",
    "why": "Core to the conversion path from stat proof to pricing trust to CTA"
   },
   {
    "name": "Stat strip (real, sourced figures)",
    "why": "Core to the conversion path from stat proof to pricing trust to CTA"
   },
   {
    "name": "Deliverable cards",
    "why": "Core to the conversion path from stat proof to pricing trust to CTA"
   },
   {
    "name": "Pricing tiers with guarantee callout",
    "why": "Core to the conversion path from stat proof to pricing trust to CTA"
   },
   {
    "name": "Honest placeholder proof slots",
    "why": "Core to the conversion path from stat proof to pricing trust to CTA"
   },
   {
    "name": "FAQ",
    "why": "Core to the conversion path from stat proof to pricing trust to CTA"
   }
  ],
  "tokens": {
   "brand": "191 74% 23%",
   "brand-fg": "40 31% 94%",
   "surface": "0 0% 100%",
   "ink": "197 14% 10%",
   "muted": "195 10% 32%",
   "accent": "22 75% 41%"
  },
  "type": {
   "display": "Iowan Old Style (system serif stack)",
   "body": "system-ui",
   "fonts_url": ""
  },
  "signature": {
   "motif": "An unhighlighted catalog page resolving into a highlighted cut sheet with a source-cited compliance-matrix row",
   "render": "CSS-only shapes/borders, no imagery (120KB budget)"
  },
  "patterns": [
   {
    "name": "Card-based deliverable grid",
    "description": "See site/index.html implementation"
   },
   {
    "name": "Stepped how-it-works numerals",
    "description": "See site/index.html implementation"
   },
   {
    "name": "Dashed placeholder proof slots",
    "description": "See site/index.html implementation"
   }
  ],
  "states": [
   "matched (state-ok)",
   "at-risk/rejected (state-risk)",
   "pending manufacturer response (state-pending)",
   "blocked/needs input (state-blocked)"
  ],
  "uniqueness_audit": {
   "app_specific_decisions": [
    "Pack-teal + amber palette distinct from the portfolio's other palettes",
    "CutSheet-to-Pack visual motif specific to this business's workflow"
   ],
   "cliches_avoided": [
    "No generic insurtech gradient hero",
    "No stock handshake/office imagery"
   ],
   "scale_notes": "Palette and motif chosen to be visually distinct from sibling businesses in the same multi-tenant site."
  },
  "localization": [
   "en-US only at launch"
  ]
 },
 "seo": {
  "slug": "specialty-trade-product-data-submittal-completeness-desk",
  "archetype": "outcome-priced back-office authority site",
  "archetype_impact": "Search fit is a back-office trust authority site, not a filing-deadline authority site. That means depth on manufacturer-format and Gap-classification specifics, evergreen (not deadline-driven) content cadence.",
  "authority_dna": {
   "site_archetype": "outcome-priced back-office authority site",
   "monetization_model": "B2B lead -> Rejection Risk Scan -> paid Completeness Desk engagement (not ad revenue; not affiliate).",
   "main_search_intents": [
    "informational",
    "commercial"
   ],
   "topical_authority_opportunity": "Own the \"Construction submittal completeness\" topic cluster by covering direct-bill cut sheet formats, spec-quirk patterns, Gap classification, and AE-comment disputes better than any single trade-press explainer.",
   "local_seo_opportunity": "Not justified: buyers search by problem/GC portal, not by city.",
   "global_national_opportunity": "National (US-first); state Construction regulation varies but the core service is not state-gated.",
   "easiest_ranking_path": "Long-tail, manufacturer-specific and spec-specific queries (\"Submittal Exchange direct bill Completeness\", \"why is my cut sheet short\") where the SERP is dominated by vendor blog posts, not buyer-first guides.",
   "hardest_ranking_path": "Head terms like \"Construction Submittal software\" — dominated by aged SaaS vendor domains (Procore, Newforma, Core Submittals).",
   "trust_credibility_requirements": [
    "Named human reviewer with role + credentials",
    "Manufacturer/cut sheet citations on every claim",
    "Last-reviewed date on regulatory/compliance pages",
    "Direct links to primary trade-press sources, not aggregators"
   ],
   "ymyl": true,
   "expert_review_needed": true,
   "site_structure": "Authority hub + narrow high-intent service page + linkable evidence assets. Not a directory. Not a marketplace.",
   "seo_moat": "Always-current per-spec and per-section how-to pages with real anonymized teardown evidence, refreshed as the parser library grows."
  },
  "search_market": {
   "primary_markets": [
    "Construction submittal completeness service",
    "direct bill Submittal Resubmittal",
    "Rejection Risk Scan"
   ],
   "secondary_markets": [
    "AE comment dispute resolution",
    "Subcontractor M&A Submittal diligence",
    "spec submittal completeness how-to"
   ],
   "low_competition_subtopics": [
    "manufacturer-specific cut sheet quirks",
    "as-earned vs annualized Rejection Risk",
    "Submittal Exchange/Newforma direct bill Completeness how-to"
   ],
   "high_commercial_intent": [
    "done-for-you submittal completeness service",
    "outsource Construction submittal completeness",
    "Submittal Resubmittal service for Construction Subcontractors"
   ],
   "informational": [
    "what is direct bill submittal completeness",
    "how to complete Construction Submittal cut sheets",
    "why is my cut sheet short"
   ],
   "local_intent": [],
   "transactional": [
    "Rejection Risk Scan pricing",
    "book a submittal completeness consultation"
   ],
   "comparison": [
    "submittal completeness service vs software",
    "CutSheet Clear vs Procore Submittals vs ReSource Pro"
   ],
   "problem_solution": [
    "manufacturer rejected my Submittal what to do",
    "AE comment dispute resolution"
   ],
   "near_me": [],
   "long_tail": [
    "Submittal Exchange direct bill submittal completeness",
    "as-earned Submittal resubmittal explained",
    "Procore submittal completeness how-to"
   ],
   "questions": [
    "what records does a submittal completeness need?",
    "who reviews a Rejection Risk Scan?",
    "how long does submittal completeness take?"
   ],
   "emerging": [
    "AI-assisted cut sheet extraction",
    "automated vendor chase email drafting"
   ],
   "seasonal": [
    "tax-season spec set cleanup",
    "Subcontractor M&A diligence season Submittal verification"
   ],
   "underserved_serps": [
    "manufacturer-specific cut sheet quirks",
    "AE comment dispute resolution"
   ],
   "weak_serps": [
    "Rejection Risk Self-Check",
    "submittal completeness checklist"
   ],
   "forum_dominated_serps": [
    "why is my cut sheet short",
    "manufacturer resubmittal explained"
   ],
   "winnable_authoritative_serps": [
    "direct bill submittal completeness definitive guide",
    "Rejection Risk Scan evidence requirements"
   ],
   "avoid_initially": [
    "Construction Submittal software",
    "best Submittal tracking tools"
   ],
   "easy_wins": [
    "manufacturer-specific cut sheet quirks",
    "submittal completeness checklist",
    "AE comment dispute anatomy"
   ],
   "moderate": [
    "direct bill submittal completeness definitive guide",
    "Subcontractor M&A Submittal diligence"
   ],
   "long_term_plays": [
    "Construction Submittal software comparison",
    "portfolio-level multi-Subcontractor Completeness"
   ],
   "do_not_pursue": [
    "generic \"how to start a bookkeeping business\" content",
    "celebrity or trend-jacking posts",
    "AI-generated listicles"
   ]
  },
  "keyword_clusters": [
   {
    "primary": "direct bill submittal completeness service",
    "related": [
     "done-for-you submittal completeness",
     "outsource submittal completeness"
    ],
    "intent": "commercial",
    "user_problem": "Subcontractor suspects manufacturer rejection and needs a done-for-you fix",
    "funnel": "BOFU",
    "business_value": "high",
    "ranking_difficulty": "medium",
    "conversion_potential": "high",
    "content_effort": "medium",
    "serp_weakness": "Dominated by enterprise SaaS vendor pages, not small-Subcontractor-focused content",
    "local_relevance": "low",
    "global_relevance": "high",
    "suggested_page_type": "Pillar / service page",
    "reason": "High buyer intent + weak SERP for our segment",
    "priority_score": 17,
    "priority": "P0",
    "bucket": "easy-win"
   },
   {
    "primary": "Rejection Risk Scan",
    "related": [
     "Rejection Risk Self-Check",
     "how much Submittal am I missing"
    ],
    "intent": "commercial",
    "user_problem": "Wants a low-commitment diagnostic before a full engagement",
    "funnel": "TOFU",
    "business_value": "high",
    "ranking_difficulty": "low",
    "conversion_potential": "high",
    "content_effort": "low",
    "serp_weakness": "No existing competitor owns this exact term",
    "local_relevance": "low",
    "global_relevance": "high",
    "suggested_page_type": "Lead-magnet / calculator page",
    "reason": "Own a branded-term wedge outright",
    "priority_score": 16,
    "priority": "P0",
    "bucket": "easy-win"
   },
   {
    "primary": "why is my Construction cut sheet short",
    "related": [
     "manufacturer rejected Submittal",
     "AE comment dispute"
    ],
    "intent": "informational",
    "user_problem": "Immediate confusion moment after a light manufacturer cut sheet",
    "funnel": "TOFU",
    "business_value": "medium",
    "ranking_difficulty": "low",
    "conversion_potential": "medium",
    "content_effort": "low",
    "serp_weakness": "Forum-dominated, thin",
    "local_relevance": "low",
    "global_relevance": "high",
    "suggested_page_type": "How-to / FAQ page",
    "reason": "Easy win + strong lead-magnet fit",
    "priority_score": 14,
    "priority": "P0",
    "bucket": "easy-win"
   }
  ],
  "topical_authority_map": {
   "core_topics": [
    "Direct-bill submittal completeness — definitive guide",
    "Spec-quirk & Gap classification library",
    "AE comment dispute resolution"
   ],
   "pillars": [
    {
     "name": "Direct-bill submittal completeness — definitive guide",
     "core_intent": "informational",
     "audience": "Subcontractor principals and ops managers",
     "conversion_goal": "Self-check / scan request",
     "supporting_pages": [
      "What a resubmittal should look like on your Pack",
      "As-earned vs annualized rejection risk",
      "Cut sheet formats explained"
     ],
     "internal_links": [
      "/",
      "/resources/self-check"
     ],
     "schema": [
      "Article",
      "BreadcrumbList",
      "FAQPage (where genuine)"
     ],
     "evidence_needed": [
      "Named reviewer",
      "Primary-source citations",
      "Worked example"
     ],
     "local_variants": [],
     "national_variants": [
      "US-national (default)"
     ]
    },
    {
     "name": "Rejection Risk Scan evidence & trust",
     "core_intent": "commercial",
     "audience": "Subcontractor principals",
     "conversion_goal": "Book a scan",
     "supporting_pages": [
      "Anatomy of a Rejection risk Scan",
      "One manufacturer, 12 months, $X missing"
     ],
     "internal_links": [
      "/#diagnostic",
      "/resources/evidence"
     ],
     "schema": [
      "Article",
      "FAQPage",
      "BreadcrumbList"
     ],
     "evidence_needed": [
      "Worked evidence artifact",
      "Reviewer credential"
     ],
     "local_variants": [],
     "national_variants": [
      "US-national"
     ]
    }
   ],
   "supporting_page_types": [
    "definition / glossary",
    "how-to workflow",
    "edge-case handling",
    "worked example",
    "FAQ",
    "comparison (only when honest)",
    "evidence artifact / template"
   ]
  },
  "site_architecture": {
   "homepage_strategy": "Single-page conversion-focused microsite; deep content lives in a future /resources hub",
   "main_nav": [
    "Pricing",
    "FAQ",
    "Operating blueprint"
   ],
   "footer_nav": [
    "Compliance",
    "Operating blueprint"
   ],
   "hubs": [
    {
     "name": "Resources hub",
     "purpose": "House long-form authority content",
     "url": "/resources (future)"
    }
   ],
   "url_patterns": [
    "/specialty-trade-product-data-submittal-completeness-desk/"
   ],
   "avoid_url_patterns": [
    "Thin per-section programmatic pages with no unique evidence"
   ]
  },
  "global_national": {
   "national_clusters": [
    "Direct-bill submittal completeness"
   ],
   "linkable_assets": [
    "Rejection Risk Self-Check calculator"
   ],
   "original_research_ideas": [
    "Aggregate pilot-cohort rejection risk statistics once cohort completes"
   ],
   "international_needed": false,
   "international_notes": "US-only specialty-trade subcontracting regulation; no international expansion in scope"
  },
  "local_seo": {
   "justified": false,
   "reason": "Buyers search by problem/GC portal, not location",
   "gbp_categories_primary": [],
   "gbp_categories_secondary": [],
   "location_page_rules": [],
   "citations": [],
   "review_strategy": "No fabricated reviews; real testimonials only after pilot cohort completes with permission",
   "local_schema": []
  },
  "programmatic": {
   "recommended": false,
   "reason": "No large structured dataset justifies programmatic pages at launch",
   "rules": [],
   "per_page_requirements": [],
   "quality_gates": []
  },
  "page_templates": [
   {
    "page_type": "Pillar/service page",
    "purpose": "Convert a qualified visitor into a scan request",
    "target_intent": "commercial",
    "url_pattern": "/specialty-trade-product-data-submittal-completeness-desk/",
    "title_pattern": "{Brand} — {outcome} for {audience}",
    "meta_description_pattern": "{Brand} for {audience}. {outcome} — {price/SLA}.",
    "h1_pattern": "{Outcome-led headline}",
    "outline": [
     "Hero",
     "Stat strip",
     "Pain",
     "Deliverables",
     "How it works",
     "Pricing",
     "Proof",
     "FAQ",
     "Compliance"
    ],
    "above_the_fold": [
     "[PLACEHOLDER] owner to complete"
    ],
    "internal_links": [
     "Operating blueprint dossier"
    ],
    "schema": [
     "FAQPage",
     "Service"
    ],
    "cta_strategy": "Single primary CTA (scan request), secondary deep-links only",
    "conversion_elements": [
     "Guarantee beside pricing",
     "Honest placeholder proof"
    ],
    "trust_elements": [
     "Compliance section",
     "Named reviewer (pending owner action)"
    ],
    "faq_opportunities": [
     "Objection-derived FAQ"
    ],
    "media": [
     "[PLACEHOLDER] owner to complete"
    ],
    "quality_requirements": [
     "No banned phrases",
     "Contrast-checked palette"
    ],
    "anti_thin_rules": [
     "Every claim sourced or explicitly placeholdered"
    ]
   }
  ],
  "on_page_rules": {
   "title_tag": "Primary keyword + brand, under 60 chars",
   "meta_description": "Under 155 chars, states the outcome",
   "headings": "One H1, ordered H2/H3",
   "intro": "Answer the query in the first 2 sentences",
   "snippet_targeting": "Direct-answer paragraphs above the fold",
   "tables_lists": "Used for pricing and comparison content only",
   "images": "None required at launch (text-first authority content)",
   "internal_links": "Link every supporting page back to the pillar",
   "external_citations": "Link primary trade-press/vendor sources by name",
   "author_attribution": "Named reviewer bio on YMYL pages",
   "freshness": "Quarterly re-verification of dollar figures and vendor claims",
   "cta_placement": "End of every page + inline after the core answer",
   "mobile": "Mobile-first responsive layout",
   "avoid": [
    "Keyword stuffing",
    "Thin AI-generated filler"
   ]
  },
  "entity_seo": {
   "main_entities": [
    "CutSheet Clear",
    "Completeness Desk",
    "Rejection Risk Scan"
   ],
   "related_entities": [
    "Procore Submittals",
    "ReSource Pro",
    "Autodesk Build (ACC)",
    "AgencyBloc"
   ],
   "people": [
    "Named trade-specialist QA reviewer"
   ],
   "orgs": [
    "AGC",
    "state Construction departments"
   ],
   "tools": [
    "Newforma",
    "Submittal Exchange",
    "Procore",
    "QQCatalyst",
    "Procore"
   ],
   "regulations": [
    "State engineering-practice statutes",
    "State collection-Subcontractor statutes"
   ],
   "problems": [
    "Submittal rejection",
    "AE comment disputes"
   ],
   "solutions": [
    "Completeness Desk",
    "Rejection Risk Scan"
   ],
   "processes": [
    "Intake",
    "Matching",
    "Gap review",
    "Delivery"
   ],
   "alternatives": [
    "Enterprise SaaS",
    "BPO services",
    "Specialist bookkeeping firms"
   ],
   "synonyms": [
    "submittal completeness",
    "direct-bill Completeness",
    "Submittal Resubmittal"
   ]
  },
  "schema_strategy": [
   {
    "type": "FAQPage",
    "where": "Homepage FAQ section",
    "required_fields": [
     "mainEntity",
     "acceptedAnswer"
    ],
    "caution": "Only genuine, answered questions — no fabricated Q&A"
   },
   {
    "type": "Service",
    "where": "Homepage, with a real-entity Organization provider",
    "required_fields": [
     "provider",
     "areaServed",
     "serviceType"
    ],
    "caution": "No review/rating/aggregateRating"
   }
  ],
  "internal_linking": {
   "pillar_to_cluster": "Every pillar links to its supporting pages",
   "cluster_to_pillar": "Every supporting page links back to its pillar",
   "cluster_to_cluster": "Cross-linked where the buyer journey naturally continues",
   "service_to_location": "N/A (no location pages)",
   "faq_to_commercial": "FAQ answers link to the pricing section",
   "breadcrumbs": "Present on all supporting content pages",
   "anchor_text_rules": [
    "Descriptive, not \"click here\""
   ]
  },
  "technical_seo": {
   "crawlability": "noindex at launch until owner-action facts close",
   "indexability": "Enabled post-launch review",
   "sitemaps": "Generated once indexable",
   "robots": "noindex,nofollow at launch",
   "canonicals": "Self-canonical",
   "pagination": "N/A",
   "faceted_nav": "N/A",
   "duplicate_control": "Single canonical URL per page",
   "redirects": "N/A at launch",
   "core_web_vitals": "LCP ≤2.5s, INP ≤200ms, CLS ≤0.1 budget enforced",
   "mobile": "Mobile-first responsive",
   "accessibility": "WCAG 2.2 AA",
   "js_seo": "Minimal JS, server-renderable content",
   "rendering": "Static self-contained HTML",
   "gsc_setup": "Pending owner action",
   "analytics_setup": "Pending owner action",
   "rank_tracking": "Pending owner action"
  },
  "eeat": {
   "author_bios": "Named reviewer bio pending owner action",
   "expert_reviewers": "Named trade-specialist QA reviewer",
   "editorial_policy": "Facts cited to primary/trade-press sources; vendor-sponsored claims labeled",
   "fact_checking": "Quarterly re-verification cadence",
   "credentials": [
    "Trade-specialist QA reviewer credentials — pending owner action"
   ],
   "citations": "Every load-bearing statistic cited by source name",
   "first_hand_proof": [
    "Anonymized pilot-cohort teardowns once available"
   ],
   "update_cadence": "Quarterly",
   "monetization_disclosure": "Service pricing disclosed on the pricing section itself",
   "ymyl_notes": "Treated as YMYL due to financial-advice-adjacent content; no coverage/legal/tax advice given"
  },
  "ai_search": {
   "principles": [
    "Answer the exact question asked, directly and first",
    "Cite named sources, not vague claims"
   ],
   "tactics": [
    "FAQ schema on genuine FAQs",
    "Definitive per-topic guides answer engines can cite"
   ],
   "do_not": [
    "Fabricate statistics",
    "Claim certifications not held"
   ]
  },
  "conversion": {
   "primary_cta": "Start a free Rejection Risk Scan",
   "secondary_cta": "See what's in a pack",
   "lead_magnets": [
    "15-Point Product Data Rejection Checklist",
    "Spec-to-Cut-Sheet Crosswalk Template (Div 23/26)"
   ],
   "trust_elements": [
    "Guarantee + out-clause beside pricing",
    "Compliance section with licensing boundary"
   ],
   "per_page_paths": [
    {
     "path": "Homepage -> scan request",
     "page_type": "pillar"
    }
   ],
   "tracking": "data-event taxonomy per DESIGN-STANDARD §4"
  },
  "link_earning": {
   "digital_pr_ideas": [
    "Aggregate anonymized pilot-cohort rejection risk statistics as original research"
   ],
   "original_research": [
    "Average Rejection Risk by trade/section mix (post-pilot)"
   ],
   "directories": [
    "State AGC/ABC association vendor resource pages"
   ],
   "expert_contributions": [
    "Guest posts on Trade user-community blogs"
   ],
   "partnerships": [
    "CPA/bookkeeper referral partners"
   ],
   "avoid": [
    "Paid link schemes",
    "Low-quality directory submissions"
   ]
  },
  "roadmap_90d": [
   {
    "phase": "Launch",
    "goal": "Publish core microsite",
    "pages": [
     "Homepage"
    ],
    "keywords_targeted": [
     "direct bill submittal completeness service"
    ],
    "required_assets": [
     "Self-check lead magnet"
    ],
    "internal_links": [],
    "difficulty": "low",
    "business_value": "high",
    "conversion_goal": "Scan requests",
    "why_first": "Foundation for every other page"
   }
  ],
  "roadmap_12m": [
   {
    "phase": "Authority hub",
    "goal": "Build /resources content cluster",
    "pages": [
     "Definitive guide",
     "Per-spec how-tos"
    ],
    "keywords_targeted": [
     "manufacturer-specific cut sheet quirks"
    ],
    "required_assets": [
     "Anonymized pilot-cohort statistics"
    ],
    "internal_links": [
     "Homepage"
    ],
    "difficulty": "medium",
    "business_value": "medium",
    "conversion_goal": "Organic scan requests",
    "why_first": "Compounding organic channel per the GTM kit"
   }
  ],
  "priority_pages": [
   {
    "rank": 1,
    "page_title": "CutSheet Clear homepage",
    "slug": "/specialty-trade-product-data-submittal-completeness-desk/",
    "page_type": "pillar/service",
    "primary_keyword": "direct bill submittal completeness service",
    "secondary_keywords": [
     "Rejection Risk Scan"
    ],
    "intent": "commercial",
    "funnel": "BOFU",
    "business_value": "high",
    "difficulty": "medium",
    "conversion_potential": "high",
    "cta": "Start a free Rejection Risk Scan",
    "schema": [
     "FAQPage",
     "Service"
    ],
    "internal_links": [
     "/resources (future)"
    ],
    "required_proof": [
     "[PLACEHOLDER] owner to complete"
    ],
    "why_opportunity": "Owns the branded wedge term outright",
    "production_priority": "P0",
    "scope": "Launch"
   }
  ],
  "competitor_gaps": {
   "typical_competitor_types": [
    "Enterprise SaaS vendor blogs",
    "BPO service pages",
    "Generic bookkeeping content"
   ],
   "common_weaknesses": [
    "Written for large brokers, not the $500K-$5M Subcontractor",
    "No manufacturer-specific evidence"
   ],
   "how_to_beat_them": [
    "Publish small-Subcontractor-specific, manufacturer-specific, evidence-first content"
   ]
  },
  "metrics": {
   "weekly": [
    "Scan requests",
    "Self-check completions"
   ],
   "monthly": [
    "Organic scan requests",
    "Keyword ranking movement on P0 terms"
   ],
   "quarterly": [
    "Fresh-verification pass on all cited statistics"
   ],
   "annual": [
    "Full content-cluster audit"
   ]
  },
  "risks": [
   {
    "risk": "YMYL scrutiny on financial-outcome claims without named-reviewer attribution",
    "applies": true,
    "mitigation": "Named reviewer attribution and quarterly re-verification"
   },
   {
    "risk": "Competitor content targeting the same small-Subcontractor segment",
    "applies": true,
    "mitigation": "Named reviewer attribution and quarterly re-verification"
   }
  ],
  "first_20_pages": [
   "Homepage",
   "Rejection Risk Self-Check",
   "Manufacturer CutSheet Survival Kit",
   "Direct-bill Completeness definitive guide"
  ],
  "first_10_tech_fixes": [
   "Confirm noindex removed only after owner-action facts close",
   "Verify FAQ schema validates"
  ],
  "first_10_authority_actions": [
   "Publish first 3 educational posts",
   "Launch the self-check lead magnet",
   "Pitch first association webinar"
  ],
  "final_recommendation": "Launch noindexed until owner-action facts (entity, reviewer identity, trademark clearance) close; then pursue a narrow, evidence-first authority strategy targeting the $500K-$5M Subcontractor segment the enterprise SEO content ignores.",
  "disclaimers": [
   "Not engineering, architectural, or legal advice; not a PE/architect stamp",
   "The contractor selects the product and submits it; the AE/PE issues review actions and approves substitutions",
   "Fees are flat per CSI section, never hourly; the completeness guarantee is not a guarantee of AE approval"
  ]
 },
 "microsite": {
  "category": "Construction / specialty-trade subcontracting — product-data submittal operations",
  "shortTitle": "CutSheet Clear",
  "audience": "US commercial specialty-trade subcontractors (electrical, HVAC/mechanical, plumbing, fire protection), 5-75 employees, submitting product data through GC portals without a dedicated submittals coordinator",
  "problem": "A specialty-trade subcontractor wins a scope and must submit product data section by section under Division 01 §013300 — but with no submittals coordinator, the work lands on a PM already running jobs. Roughly 35% of first-pass submittals bounce, almost always for completeness: an unhighlighted catalog, a missing UL/AHRI/NSF listing, a blank transmittal field. Each bounce is ~$805 and 2-4 weeks.",
  "offer": "On CutSheet Clear, subs stop guessing and start getting a First-Pass Product Data Pack for one CSI section — compliance matrix, highlighted cut sheets, chase list, and filled transmittal, with a specialist QA signature — delivered before the submittal due date. Flat $179 per common section, never hourly.",
  "faq": [
   {
    "q": "Is CutSheet Clear for the subcontractor's office or for a coordinator?",
    "a": "For the specialty-trade subcontractor directly — the principal, PM, or estimator who owns the submittal. Firms of 5-75 employees rarely have a full-time submittals coordinator, so the product-data work lands on someone already running jobs. We are the variable-cost alternative to a $50k-$90k coordinator hire."
   },
   {
    "q": "Do you approve the product or the substitution?",
    "a": "No. We prepare product-data documentation the contractor directs. We do not stamp drawings, exercise engineering judgment, or approve substitutions. Review actions and any \"or-equal\" substitution approval belong to the licensed design professional (AE/PE), and we never claim a guaranteed AE approval."
   },
   {
    "q": "Is this shop-drawing, CAD, or BIM detailing?",
    "a": "No. A pack is product data — cut sheets, certifications, a compliance matrix, and a transmittal for one CSI section. We do not produce shop drawings, CAD, or BIM, and we do not fabricate or ship samples. If you need drawings, we refer you to a detailing shop."
   },
   {
    "q": "What counts as a \"complete\" pack?",
    "a": "Every required submittal item in the section is matched to your product or listed on the chase list; every applicable catalog page is highlighted; every named certification type is attached or chased; the transmittal carries the section reference; and every matrix row cites a source page. A specialist signs the QA checklist before release."
   },
   {
    "q": "Will an AI-drafted matrix put a wrong number in front of the AE?",
    "a": "The AI extracts and drafts; deterministic rules run the completeness checks; a trade specialist QAs the attribute match before delivery; and you attest the product selection. Missing items ship as an explicit chase list, never invented, and numeric attributes are cited to their source page."
   },
   {
    "q": "How fast is a pack, and how do I get it to the GC?",
    "a": "Standard delivery is 3 business days from complete intake; rush is 48 hours for +$75-$125. We deliver a ZIP with upload instructions for Procore, Autodesk Build (ACC), or email. You upload to the GC portal under your own name — we never submit on your behalf."
   },
   {
    "q": "How are you priced?",
    "a": "Per CSI section — $179 for common Div 22/23/26 sections, $229-$249 for complex equipment sections. Never hourly. A Resubmittal Sprint is $99-$149; a Continuity Desk retainer is $149-$299 per active project per month. The Rejection Risk Scan is free."
   },
   {
    "q": "What about the confidentiality of our specs and cut sheets?",
    "a": "Specs, cut sheets, and bid documents are treated as confidential and competitively sensitive: only assigned specialists access them, we do not train models on customer documents without your written consent, and inputs are retained only for a defined period, then deleted or returned per the engagement letter."
   },
   {
    "q": "What does your completeness guarantee actually cover?",
    "a": "If a package is returned solely for completeness items we marked as clear — a cert we said was attached, a field we said was filled, a row we said was sourced — we rebuild the resubmittal at no additional pack fee, once. It is not a guarantee of AE approval, and it does not cover the AE's substantive/engineering review or a substitution decision."
   }
  ],
  "process": [
   {
    "title": "Intake: send the section and your cut sheets",
    "body": "Send one CSI spec section (plus the Division 01 §013300 excerpt if you have it), the manufacturer cut sheets for the product you intend to furnish, and any certificates you hold. We qualify trade, due date, and private-commercial scope."
   },
   {
    "title": "Extract and crosswalk",
    "body": "The engine pulls the required-items list from the section, OCRs and page-classifies the cut sheets, matches numeric attributes, and drafts the compliance matrix and chase list — every row tied to a source page."
   },
   {
    "title": "Deterministic rules gate",
    "body": "Rules, not the model, hard-fail any catalog page without a highlight, any missing named cert, any blank transmittal field, or any matrix row without a source page. A hard fail blocks delivery."
   },
   {
    "title": "Specialist QA",
    "body": "A trade-aware specialist reviews the attribute match and completeness, annotates the highlights, and escalates ambiguous performance language. No pack ships without a specialist QA signature."
   },
   {
    "title": "You attest, then upload",
    "body": "You confirm the pack reflects the product you intend to furnish. We deliver a ZIP with upload instructions for Procore, Autodesk Build (ACC), or email; you submit to the GC portal under your own name."
   }
  ],
  "northStarCta": {
   "label": "Start a free Rejection Risk Scan",
   "href": "#diagnostic",
   "secondary_label": "See what's in a pack",
   "secondary_href": "#deliverables"
  },
  "trust": {
   "standards": [
    "Documentation-preparation service — not a licensed design professional, professional engineer, architect, or shop-drawing service",
    "The contractor selects the product, attests the intended furnish, and uploads to the GC; the AE/PE issues review actions and approves substitutions",
    "Flat per CSI section, never hourly and never a percentage of project value"
   ],
   "response_time": "3 business days per pack from complete intake (48-hour rush available); delivered before your submittal due date",
   "data_handling": "Specs, cut sheets, and bid documents treated as confidential; least-privilege access; no training on customer documents without written consent; retention limits per the engagement letter"
  },
  "hook": "A free Rejection Risk Scan tells you exactly where a package would bounce for completeness — before your buyout date.",
  "sub_headline": "You send one CSI spec section and the manufacturer cut sheets. You get back a GC/AE-ready First-Pass Product Data Pack — matrix, highlighted cut sheets, chase list, transmittal — with a trade specialist's QA signature, before your due date.",
  "dream_outcome": "A product-data package that comes back Approved / Approved as Noted / Furnish as Noted the first time, releases your long-lead equipment on schedule, and never costs you a Revise and Resubmit cycle for completeness.",
  "specific_pains": [
   "A 24-page manufacturer catalog uploaded whole, with no highlight of the model actually being furnished — returned without review.",
   "A UL listing, AHRI certificate, or NSF/ANSI number the spec named that nobody attached — incomplete on its face.",
   "A blank transmittal field or missing spec-section reference under Division 01 §013300 — returned before technical review.",
   "No compliance matrix, so the AE has to reconstruct compliance themselves — and often declines to.",
   "A wrong model or a warranty term that does not match the specified duration versus the basis-of-design."
  ],
  "cost_of_inaction": "Every bounced section is ~$805 in admin and 2-4 added weeks; on a long-lead item those weeks can push equipment delivery past the buyout window and make you the reason the schedule slipped.",
  "mechanism": {
   "name": "The CutSheet Clear pack-cycle engine",
   "steps": [
    {
     "title": "Intake: send the section and your cut sheets",
     "body": "Send one CSI spec section (plus the Division 01 §013300 excerpt if you have it), the manufacturer cut sheets for the product you intend to furnish, and any certificates you hold. We qualify trade, due date, and private-commercial scope."
    },
    {
     "title": "Extract and crosswalk",
     "body": "The engine pulls the required-items list from the section, OCRs and page-classifies the cut sheets, matches numeric attributes, and drafts the compliance matrix and chase list — every row tied to a source page."
    },
    {
     "title": "Deterministic rules gate",
     "body": "Rules, not the model, hard-fail any catalog page without a highlight, any missing named cert, any blank transmittal field, or any matrix row without a source page. A hard fail blocks delivery."
    },
    {
     "title": "Specialist QA",
     "body": "A trade-aware specialist reviews the attribute match and completeness, annotates the highlights, and escalates ambiguous performance language. No pack ships without a specialist QA signature."
    },
    {
     "title": "You attest, then upload",
     "body": "You confirm the pack reflects the product you intend to furnish. We deliver a ZIP with upload instructions for Procore, Autodesk Build (ACC), or email; you submit to the GC portal under your own name."
    }
   ]
  },
  "offer_stack": [
   {
    "item": "First-Pass Product Data Pack per CSI section",
    "note": "Compliance matrix, highlighted cut sheets, chase list with draft vendor emails, filled transmittal, and a rejection-risk score."
   },
   {
    "item": "Trade-specialist QA signature on every pack",
    "note": "A person who understands Div 22/23/26 gear reviewed the attribute match and completeness before delivery."
   },
   {
    "item": "Chase list with draft vendor emails",
    "note": "Every missing listing, test report, or warranty listed, each with a ready-to-send email to the manufacturer rep."
   },
   {
    "item": "Completeness guarantee",
    "note": "If a package is returned solely for a completeness item we marked clear, we rebuild the resubmittal at no additional pack fee, once — never a guarantee of AE approval."
   },
   {
    "item": "Rejection Risk Scan (free)",
    "note": "Send one prior rejected package or the section you fear; we return the exact completeness gaps before your buyout date."
   }
  ],
  "guarantee": "If your package is returned solely for completeness items we marked as clear, we rebuild the resubmittal at no additional pack fee, once. It is not a guarantee of AE approval, and we never claim a product was approved.",
  "urgency": "There is no single filing deadline here — the cost is compounding: every bounced section adds ~$805 and 2-4 weeks, and on a long-lead item the weeks can cost you the buyout window.",
  "objections": [
   {
    "q": "\"Do you approve the product or the substitution?\"",
    "a": "No. CutSheet Clear prepares product-data documentation the contractor directs. We do not stamp drawings, provide engineering judgment, or approve substitutions. Review actions and any \"or-equal\" approval belong to the design professional (AE/PE), and we never claim a guaranteed AE approval."
   },
   {
    "q": "\"Is this shop-drawing or BIM detailing?\"",
    "a": "No. A pack is product data — cut sheets, certifications, compliance matrix, and transmittal for one CSI section. We do not produce shop drawings, CAD, or BIM, and we refer you to a detailing shop if you need them."
   },
   {
    "q": "\"Will an AI-drafted matrix put a wrong number in front of the AE?\"",
    "a": "The AI extracts and drafts; deterministic rules run the completeness checks; a trade specialist QAs the attribute match; and you attest the product. Missing items ship as an explicit chase list, never invented, and every numeric attribute cites its source page."
   },
   {
    "q": "\"How fast, and how do I get it to the GC?\"",
    "a": "Standard delivery is 3 business days from complete intake; rush is 48 hours for +$75-$125. We deliver a ZIP with upload instructions for Procore, Autodesk Build (ACC), or email, and you upload under your own name — we never submit on your behalf."
   }
  ],
  "who_this_is_not_for": [
   "Subcontractors needing shop drawings, CAD, or BIM detailing — that is a different, licensed-adjacent scope we refuse and refer.",
   "Anyone wanting a PE/architect stamp, engineering judgment, code-compliance certification, or a guaranteed AE approval.",
   "Public-works / DSA / healthcare submittals without the added documentation overlays (a separately scoped engagement, not the beachhead)."
  ],
  "proof_pillars": [
   {
    "title": "Every row cites a source page",
    "body": "No compliance-matrix row is marked met without a cited cut sheet page or certificate reference; a row without a source hard-fails before delivery."
   },
   {
    "title": "Deterministic rules the AI cannot overrule",
    "body": "A catalog page without a highlight, a missing named cert, a blank transmittal field, or an unsourced row blocks the pack regardless of what the model drafted."
   },
   {
    "title": "A trade-specialist QA signature",
    "body": "A person who understands Div 22/23/26 gear signs every pack, and you attest the intended furnish before it goes to the GC."
   }
  ],
  "stakes_line": "Incomplete means returned: the AE does not fix your package, and a completeness bounce on a long-lead item can cost you the buyout window.",
  "deliverable": "First-Pass Product Data Pack",
  "unit_of_work": "CSI section",
  "lexicon": {
   "regulator": "The design professional (AE/PE)",
   "regulator_full": "The licensed design professional of record (AE/PE), under Division 01 §013300 submittal procedures",
   "statute": "Division 01 §013300 submittal procedures",
   "statute_frame": "the intake-to-delivery workflow where an incomplete pack is a self-inflicted Revise and Resubmit risk",
   "persona": "Subcontractor Principal",
   "persona_moment": "You're the principal of a 20-person specialty-trade sub with a §26 05 19 section coming due. A prior package bounced Revise and Resubmit for an unmarked catalog page and a missing UL listing, and buyout on the switchgear is three weeks out.",
   "trigger_moment": "a bounced product-data submittal, a spec section coming due before buyout, or a long-lead item you must release",
   "enforcement_stakes": "the package is returned Revise and Resubmit, the buyout window slips, and long-lead equipment delivery is pushed past the point of no return",
   "retention": "the full record of every pack, compliance-matrix row, chase item, and specialist QA signature",
   "cta_verb": "Start a free Rejection Risk Scan",
   "intake_checklist": [
    "The CSI MasterFormat spec section you are submitting against",
    "The Division 01 §013300 submittal-procedures excerpt (if you have it)",
    "Manufacturer cut sheets for the product you intend to furnish",
    "Any certificates/listings you already hold (and prior AE comments if it already bounced)"
   ],
   "regulator_faqs": [
    {
     "q": "Does CutSheet Clear submit to the GC or AE on our behalf?",
     "a": "No. We deliver the pack with upload instructions; you upload to the GC portal under your own name and attest the intended furnish. The AE/PE issues the review action."
    },
    {
     "q": "Do you decide whether a substitution is approved?",
     "a": "No. A substitution requires a formal CSI-style substitution request and design-team judgment. We package only what the contractor directs and route the review action to the AE/PE."
    }
   ],
   "trust_standards_specific": [
    "[PLACEHOLDER] owner to complete"
   ]
  },
  "proof_angle": {
   "id": "buyout-readiness",
   "headline": "The next AE review lands on a complete, source-cited pack — not a scramble — so your buyout holds.",
   "lever": "CutSheet Clear stores every required item, matrix row, highlight, chase item, and specialist QA signature in a pack record you can reproduce for the GC or an acquirer.",
   "outcome_verb": "clear",
   "outcome_frame": "clear a product-data submittal the first time instead of losing 2-4 weeks to a completeness bounce",
   "proof_promise": "The First-Pass Product Data Pack is the answer — specialist-QA signed, source-page cited, and reproducible the day an AE comment or a diligence request lands."
  },
  "indexable": true,
  "ubiquitousLanguage": {
   "audience": "US commercial specialty-trade subcontractors (electrical, HVAC/mechanical, plumbing, fire protection), 5-75 employees, submitting product data through GC portals without a dedicated submittals coordinator",
   "domain": "commercial specialty-trade product-data submittal completeness",
   "deliverable": "First-Pass Product Data Pack + specialist QA signature",
   "reviewer": "trade-specialist QA reviewer",
   "record": "pack history register",
   "unit_of_work": "CSI section",
   "cta_primary": "Start a free Rejection Risk Scan",
   "cta_secondary": "See what's in a pack",
   "regulator": "The design professional (AE/PE)",
   "regulator_full": "The licensed design professional of record (AE/PE), under Division 01 §013300",
   "statute": "Division 01 §013300 submittal procedures",
   "trigger_moment": "a bounced product-data submittal, a section coming due before buyout, or a long-lead item to release",
   "event_intake_started": "specialty_trade_product_data_submittal_completeness_desk_intake_started",
   "event_conversation_requested": "specialty_trade_product_data_submittal_completeness_desk_conversation_requested"
  }
 },
 "evidence": [
  {
   "id": "specialty-trade-product-data-submittal-completeness-desk-e1",
   "business_slug": "specialty-trade-product-data-submittal-completeness-desk",
   "area": "Identity",
   "claim_or_finding": "Operating entity declared: Your Deputy, Obuke LLC, 924 W 23rd St., Erie, PA 16502, support@yourdeputy.com; CutSheet Clear is a service of Your Deputy, Obuke LLC.",
   "status": "verified",
   "evidence": "Owner-supplied entity and support address; reflected in the landing-page footer and disclaimers.",
   "verification_command": "Owner submits entity + jurisdiction pack.",
   "fix_owner": "owner",
   "remediation": "Resolved — entity and contact declared. Remaining owner action: formal trademark/entity-name clearance before public spend.",
   "severity": "info"
  },
  {
   "id": "specialty-trade-product-data-submittal-completeness-desk-e2",
   "business_slug": "specialty-trade-product-data-submittal-completeness-desk",
   "area": "Market",
   "claim_or_finding": "First-pass product-data submittals are rejected ~30-40% of the time (commonly ~35%), and product data is ~70% of typical submittal volume.",
   "status": "verified",
   "evidence": "BuildSync (2026) rejection-rate analysis; product-data share inferred from Young Architect (educational).",
   "verification_command": "Re-verify BuildSync figure and Young Architect share each quarter.",
   "fix_owner": "owner",
   "remediation": "Cited on the landing-page stat strip; quarterly re-verification cadence set.",
   "severity": "info"
  },
  {
   "id": "specialty-trade-product-data-submittal-completeness-desk-e3",
   "business_slug": "specialty-trade-product-data-submittal-completeness-desk",
   "area": "Cost of a bounce",
   "claim_or_finding": "One first-pass rejection runs ~$805 in direct admin cost and adds 2-4 weeks per cycle; manual pack assembly runs ~8-12 hours.",
   "status": "verified",
   "evidence": "BuildSync rejection-cost analysis (2026); assembly-hours figure inferred from BuildSync.",
   "verification_command": "Re-verify BuildSync cost/time figures each quarter.",
   "fix_owner": "owner",
   "remediation": "Used in pricing anchor math ($179 pack vs. ~$805 bounce); re-verify quarterly.",
   "severity": "info"
  },
  {
   "id": "specialty-trade-product-data-submittal-completeness-desk-e4",
   "business_slug": "specialty-trade-product-data-submittal-completeness-desk",
   "area": "Market size",
   "claim_or_finding": "~588,000 US NAICS 238 specialty-trade establishments (BLS QCEW 2024); TAM ~$57M modeled as 15,000 firms x 20 packs/yr x $190 — a planning band, not a census.",
   "status": "verified",
   "evidence": "BLS QCEW 2024 establishment count (verified); TAM is a directional planning band built from an inferred firm count and assumed pack cadence.",
   "verification_command": "Re-verify BLS establishment count annually; treat TAM as directional only.",
   "fix_owner": "owner",
   "remediation": "Establishment count verified; TAM explicitly framed as a planning band in the business plan.",
   "severity": "info"
  },
  {
   "id": "specialty-trade-product-data-submittal-completeness-desk-e5",
   "business_slug": "specialty-trade-product-data-submittal-completeness-desk",
   "area": "Trademark clearance",
   "claim_or_finding": "Formal trademark/entity-name clearance for \"CutSheet Clear\" is an owner action before public spend; the name check on file is an informal web scan, not legal advice.",
   "status": "pending-owner-facts",
   "evidence": "[PLACEHOLDER — owner to obtain formal trademark/entity-name clearance from qualified counsel.]",
   "verification_command": "Owner completes trademark/entity clearance before public launch spend.",
   "fix_owner": "owner",
   "remediation": "Open owner action; site launches noindexed until clearance and reviewer identity close.",
   "severity": "warning"
  },
  {
   "id": "specialty-trade-product-data-submittal-completeness-desk-e6",
   "business_slug": "specialty-trade-product-data-submittal-completeness-desk",
   "area": "Proof / testimonials",
   "claim_or_finding": "No named customer references, testimonials, or first-pass completeness metrics are published yet; the desk is in pilot.",
   "status": "pending-owner-facts",
   "evidence": "[PLACEHOLDER — real named references and first-pass completeness rate appear only after the first ~20 pilot packs, with customer permission.]",
   "verification_command": "Populate proof slots from real pilot packs once available; never publish invented testimonials.",
   "fix_owner": "owner",
   "remediation": "Proof section shows honest placeholders keyed to real future events; no fabricated proof.",
   "severity": "info"
  }
 ],
 "seo_pages": {
  "id": "seo-specialty-trade-product-data-submittal-completeness-desk",
  "business_slug": "specialty-trade-product-data-submittal-completeness-desk",
  "route": "/specialty-trade-product-data-submittal-completeness-desk",
  "title": "CutSheet Clear — first-pass product-data submittal pack for one CSI section",
  "description": "CutSheet Clear for commercial specialty-trade subcontractors. A GC/AE-ready First-Pass Product Data Pack for one CSI section — compliance matrix, highlighted cut sheets, chase list, transmittal — with specialist QA, before your due date. $179 per section, never hourly.",
  "canonical": "/specialty-trade-product-data-submittal-completeness-desk",
  "og_title": "CutSheet Clear — First-Pass Product Data Pack for one CSI section",
  "og_description": "CutSheet Clear for commercial specialty-trade subcontractors. A GC/AE-ready First-Pass Product Data Pack for one CSI section — compliance matrix, highlighted cut sheets, chase list, transmittal — with specialist QA, before your due date. $179 per section, never hourly.",
  "schema_type": "FAQPage",
  "schema_status": "pending-owner-facts",
  "sitemap_include": false,
  "noindex": true
 },
 "vertical_style": {
  "accent": "spec-teal",
  "signature": "Spec-desk tabs with a rejection-risk-score chip and Approved/Revise-and-Resubmit status",
  "layout": "Product-data completeness desk index",
  "anti": "Insurtech/construction-tech gradient hero, stock hardhat handshake imagery, and alarm-red urgency banners"
 },
 "canva": {
  "slug": "specialty-trade-product-data-submittal-completeness-desk",
  "territory": "Spec Desk",
  "family": {
   "id": "construction-submittal-desk",
   "name": "Construction / specialty-trade product-data submittals",
   "motion": "calm"
  },
  "tokens": {
   "brand": "191 74% 23%",
   "brand-fg": "40 31% 94%",
   "surface": "0 0% 100%",
   "ink": "197 14% 10%",
   "muted": "195 10% 32%",
   "accent": "22 75% 41%"
  },
  "type": {
   "display": "Iowan Old Style",
   "body": "system-ui",
   "fonts_url": ""
  },
  "scale": {
   "h1": "clamp(2.5rem, 5.5vw, 4.25rem)",
   "h2": "clamp(1.75rem, 3vw, 2.5rem)",
   "h3": "clamp(1.25rem, 2vw, 1.5rem)",
   "body": "clamp(1rem, 1.1vw, 1.125rem)",
   "small": "0.8125rem",
   "tracking_display": "-0.02em",
   "tracking_body": "-0.005em",
   "weight_display": 700,
   "weight_body": 450
  },
  "spacing": {
   "card_padding": "1.75rem",
   "card_radius": "0.35rem",
   "card_shadow": "0 0 0 1px hsl(var(--ink) / 0.08)",
   "section_gap": "clamp(3.5rem, 8vw, 6.5rem)",
   "hero_gap": "clamp(1.25rem, 2vw, 2rem)"
  },
  "layout": {
   "hero": "split-primary",
   "card": "elevated-soft",
   "cta": "solid-brand",
   "archetype": "Pack",
   "card_silhouette": "flat-outline",
   "button_geometry": "rounded"
  },
  "background": {
   "hero_gradient": "radial-gradient(1100px 600px at 8% -10%, hsl(191 74% 23% / 0.14), transparent 60%), radial-gradient(900px 500px at 100% 0%, hsl(22 75% 41% / 0.10), transparent 60%)",
   "cta_gradient": "linear-gradient(135deg, hsl(191 74% 23%), hsl(22 75% 41%))",
   "section_wash": "linear-gradient(180deg, hsl(0 0% 100%) 0%, hsl(191 74% 23% / 0.04) 100%)"
  },
  "motif": "Catalog-page-to-highlighted-cut-sheet cover art"
 },
 "capabilities": {
  "marketing": true,
  "portal": false,
  "ops": true,
  "chatbot": false,
  "payments": false
 },
 "generated_at": "2026-07-15T18:00:00Z",
 "checksum": "sha256:generated-locally"
}