{
 "version": "1.8.0",
 "slug": "ny-gol-7108-deposit-itemization-deadline-desk",
 "title": "Deposit14 Clear — NY GOL §7-108 / §7-107 Itemized Disposition Deadline Desk",
 "vertical": "New York residential property management — security deposit disposition compliance",
 "seed": {
  "s": "ny-gol-7108-deposit-itemization-deadline-desk",
  "t": "Deposit14 Clear — NY GOL §7-108 / §7-107 Itemized Disposition Deadline Desk",
  "v": "New York residential property management — security deposit disposition compliance",
  "r": "Medium-high",
  "m": "M"
 },
 "product": {
  "slug": "ny-gol-7108-deposit-itemization-deadline-desk",
  "project_name": "Deposit14 Clear",
  "project_type": "outcome-priced, per-pack NY security-deposit disposition desk",
  "vertical": "New York residential property management — security deposit disposition compliance",
  "audience": "New York residential property managers and owners (80–800 doors) running move-out security-deposit dispositions",
  "geography": "New York State; beachhead NYC + Westchester / Long Island (market-rate + rent-stabilized portfolios)",
  "scale_expectation": "8-logo / 40-pack pilot cap in the first 60–90 days; per-pack and Portfolio Continuity Desk retainers thereafter",
  "core_workflows": [
   "Intake and qualification of one vacate file (lease, deposit ledger, move-in/out photos, vendor invoices, forwarding address, confirmed vacate date)",
   "AI extraction, photo time-sorting, and evidence matching of each deduction line to its supporting photo and vendor invoice",
   "Deposit-analyst review of wear-and-tear vs. damage language, interest-note computation for 6+ unit buildings, and completeness QA",
   "Pack release with a Day-0→Day-14 countdown and a delivery-proof checklist; the property manager approves and sends"
  ],
  "discovery": {
   "one_line_purpose": "Turn a New York property manager's vacate file — lease, ledger, move-out photos, and vendor invoices — into a landlord-ready Itemized Disposition Pack that clears the GOL §7-108 14-day clock.",
   "primary_users": [
    "Owner / managing broker / VP of operations of an 80–800 door NY residential portfolio",
    "Lease administrator or deposit specialist who assembles itemized statements under the clock",
    "Compliance manager updating SOPs after the S952B rent-stabilized expansion"
   ],
   "jobs_to_be_done": [
    "When a tenant vacates with damages, produce a complete itemized statement and refund path before Day 14 so I do not forfeit legitimate deductions.",
    "When vendor invoices are slow, structure a lawful good-faith path and evidence map without missing the clock.",
    "When a tenant disputes charges, give me a pack that shows photo ↔ deduction line ↔ invoice linkage so small-claims risk drops."
   ],
   "value_prop": "A done-for-you, per-vacate Itemized Disposition Pack that removes the missing-documentation and missed-deadline reasons NY deposits get forfeited — assembled inside the 14-day window and reviewed by a deposit analyst.",
   "competitors": [
    "Roost (deposit refund/return automation the customer operates)",
    "Neudash (customer-operated deposit workflow automation)",
    "Frontdesk AI (inbound 'where is my refund?' assistant, not a disposition pack)",
    "AppFolio / Buildium / Yardi (PMS ledger tools that do not DFY-assemble evidence-linked NY packs under a clock SLA)"
   ],
   "differentiation": "Outcome-priced per completed pack, AI-compressed photo→invoice→ledger assembly, a Day-14 countdown, and a deposit-analyst gate on wear-and-tear vs. damage language — distinct from the CA sibling desk by statute (§7-108/§7-107 vs. Civ. Code §1950.5), clock (14 vs. 21 days), and the S952B rent-stabilized expansion.",
   "positioning_statement": "For New York property managers who lose legitimate deductions to a strict 14-day forfeiture clock, Deposit14 Clear is a done-for-you disposition desk that delivers a complete, evidence-linked Itemized Disposition Pack before Day 14 — unlike PMS templates you operate yourself or counsel you pay by the hour."
  },
  "assumptions": [
   {
    "id": "ny-gol-7108-deposit-itemization-deadline-desk-a1",
    "statement": "Property managers will pay for a done-for-you Completeness outcome over continuing to book vendor invoice totals unverified, once shown a concrete Clock Risk Scan finding.",
    "confidence": "medium",
    "impact_if_wrong": "severe",
    "revisit_trigger": "First 10 pilot Clock Risk Scan sales conversations — reject the wedge if willingness-to-pay signal is absent."
   },
   {
    "id": "ny-gol-7108-deposit-itemization-deadline-desk-a2",
    "statement": "A pack cycle can hit the 5-business-day (10 at pilot) delivery SLA from Property manager-supplied lease & ledger set and vendor invoices alone, without Property manager-side software integration.",
    "confidence": "medium",
    "impact_if_wrong": "high",
    "revisit_trigger": "First 3-6 pilot Clock Risk Scans."
   },
   {
    "id": "ny-gol-7108-deposit-itemization-deadline-desk-a3",
    "statement": "property managers tolerate AI-assisted vendor invoice parsing and deduction gap drafting when an deposit analyst's approval and signature are explicit on every Disposition Pack.",
    "confidence": "medium",
    "impact_if_wrong": "high",
    "revisit_trigger": "First tenant/court-comment dispute resolved off a Deposit14 Clear Pack."
   },
   {
    "id": "ny-gol-7108-deposit-itemization-deadline-desk-a4",
    "statement": "Scan-to-desk conversion reaches at least 25-40% among qualified, warm-led property managers.",
    "confidence": "low",
    "impact_if_wrong": "severe",
    "revisit_trigger": "Day-90 pilot-cohort conversion measurement (explicit kill/pivot gate at 25%)."
   },
   {
    "id": "ny-gol-7108-deposit-itemization-deadline-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-Property manager network) with a hard single-tenant compliance clause."
   }
  ],
  "unknowns": [
   {
    "id": "ny-gol-7108-deposit-itemization-deadline-desk-u1",
    "question": "Which specific deposit analyst signs off on the first cohort's Disposition Packs?",
    "blocks": "Any commercial engagement; the analyst signature invariant.",
    "resolution_path": "Named analyst + engagement letter on file before the first paid scan."
   },
   {
    "id": "ny-gol-7108-deposit-itemization-deadline-desk-u2",
    "question": "What is the true scan-to-desk conversion rate among warm, qualified leads?",
    "blocks": "Pricing hypothesis; scaling decision.",
    "resolution_path": "10-Property manager pilot cohort with explicit pricing conversation, measured against the Day-90 checkpoint (25% kill gate, 40% target)."
   },
   {
    "id": "ny-gol-7108-deposit-itemization-deadline-desk-u3",
    "question": "How much does per-vendor-format parser coverage actually reduce review minutes by day 90?",
    "blocks": "Unit-economics model; throughput assumptions.",
    "resolution_path": "Instrument analyst 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 Clock Risk Scan narrow enough to sell in weeks without a custom integration?",
    "recommendation": "Launch scoped to a 3-month vendor invoice lookback against a single lease & ledger set; 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 (vendor invoice line to lease & ledger policy to analyst approval) visible in every analyst-facing view?",
    "recommendation": "Every evidence matrix line renders its vendor invoice citation, matched requirement, and analyst decision in one glance.",
    "dissent": "Adds density a non-New York property management analyst might call cluttered."
   },
   {
    "role": "Backend / Data",
    "key_concern": "Is the audit trail append-only and reconstructable for a tenant deduction 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 vendor formats evolve."
   },
   {
    "role": "AI / ML",
    "key_concern": "Are deduction classifications grounded in the lease & ledger requirement and never a free-form guess?",
    "recommendation": "Retrieval-first classification citing the specific deposit-ledger line; deterministic money math in code, never the model; mandatory analyst 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 property manager's financial and policy data isolated from every other property manager's?",
    "recommendation": "Row-level auth, per-tenant retrieval indices, log-scrubbing of financial figures.",
    "dissent": "None recorded this run."
   }
  ],
  "strategy": {
   "business_model": "Flat per-pack fee ($79–$199; beachhead $129) plus rush riders and a Portfolio Continuity Desk retainer ($899–$3,900/mo). Never hourly, never a percentage of the deposit.",
   "revenue_streams": [
    "Clock Risk Scan (free wedge / primary CTA)",
    "Itemized Disposition Pack ($79–$199 per completed pack; beachhead $129)",
    "Rush rider (<72h to pack): +$49–$79",
    "Portfolio Continuity Desk ($899–$3,900/mo capped packs + queue SLA)"
   ],
   "moat": [
    "Per-building-type requirement/attribute library and per-PMS packaging-quirk knowledge that compounds with every pack",
    "Wear-and-tear vs. damage language library that survives tenant disputes",
    "Deterministic Day-14 and interest-note calculators keyed to NY statute",
    "Gold-standard pack + dispute-outcome dataset as a proprietary QA library"
   ],
   "gtm": [
    "Founder-led educational content + anonymized Day-14 forfeiture teardowns",
    "NARPM NY / local REIA summer-crush webinars and broker networks",
    "Answer-engine-visible statute guides + Clock Risk Scan lead magnet"
   ],
   "pricing_hypothesis": "Scan free; Itemized Disposition Pack $129 beachhead ($79–$199 range), rush +$49–$79, Continuity Desk $899–$3,900/mo; anchored to one month's rent ($2,000–$4,500+) at risk of forfeiture.",
   "kill_criteria": [
    "No signed pilot logo in 4 weeks of qualified NY outreach",
    "Deposit-analyst minutes per pack do not fall with template coverage",
    "Scan→paid conversion under 5% after 100 scans",
    "Repeated UPL complaints despite documentation-vendor boundaries"
   ]
  },
  "security": {
   "stride": [
    {
     "threat": "Spoofing",
     "scenario": "Attacker impersonates an deposit analyst to approve a fabricated deduction gap or sign a Disposition Pack.",
     "mitigation": "SSO with MFA; analyst signatures bound to a cryptographic session claim, not a form field."
    },
    {
     "threat": "Tampering",
     "scenario": "Historical vendor invoice 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 analyst surface."
    },
    {
     "threat": "Repudiation",
     "scenario": "Analyst denies approving a deduction gap or signing a Pack that later proves wrong.",
     "mitigation": "Signed attestations with server-side timestamp + analyst identity; export bundle includes signature manifest."
    },
    {
     "threat": "Information Disclosure",
     "scenario": "Cross-tenant leak of one property manager's deposit/ledger data through shared indices, logs, or prompts.",
     "mitigation": "Tenant-scoped row-level auth; PII/financial-data scrubbing in logs; retrieval indices partitioned per Property manager."
    },
    {
     "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 analyst-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-client 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-Property manager-statute review per state before scaling",
    "Vendor-portal terms-of-service log for any automated vendor invoice pull"
   ],
   "data_classifications": [
    "Property manager lease-and-ledger set (sensitive business data)",
    "Vendor deposit-file vendor invoices (sensitive, third-party-sourced)",
    "Trade deduction scopes / 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-photo check validation modules",
    "Component tests on analyst exception-queue surfaces",
    "Contract tests on vendor-vendor invoice-schema parsers",
    "End-to-end smoke test on the intake -> match -> analyst-signoff -> delivery path"
   ],
   "accessibility_tests": [
    "axe-core in CI on analyst-facing surfaces",
    "Keyboard-only walkthrough per workflow",
    "Prefers-reduced-motion honored"
   ],
   "performance_budget": "p95 workflow latency published per module; invoice-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 deduction gap or at-risk-dollar claim released without analyst approval",
    "Vendor-chase language read as a demand or collection threat rather than an invoice chase note",
    "An error in a tenant dispute record attributed to AI rather than owned by the analyst"
   ],
   "ethical_guardrails": [
    "Human deposit analyst approval required before any deduction or invoice chase note ships",
    "Deterministic output filter blocks demand/collection-style language in every drafted invoice chase note",
    "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 + analyst workflow",
     "owner": "Named deposit analyst"
    },
    {
     "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",
    "Analyst 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": "ny-gol-7108-deposit-itemization-deadline-desk-r1",
    "risk": "A vendor-facing claim proves incorrect",
    "likelihood": "medium",
    "impact": "severe",
    "mitigation": "Every deduction claim linked to a cited deposit-ledger version + analyst signoff",
    "contingency": "dispute-support workflow; client-notification template; audit-log export within 24 hours",
    "owner": "legal"
   },
   {
    "id": "ny-gol-7108-deposit-itemization-deadline-desk-r2",
    "risk": "AI hallucination in a delivered deduction gap line or invoice chase note",
    "likelihood": "medium",
    "impact": "high",
    "mitigation": "Retrieval-first pipeline + structured output validation + analyst gate",
    "contingency": "Analyst-triggered rollback + regeneration; incident postmortem published to the Property manager",
    "owner": "engineering"
   },
   {
    "id": "ny-gol-7108-deposit-itemization-deadline-desk-r3",
    "risk": "Cross-tenant Property manager 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": "ny-gol-7108-deposit-itemization-deadline-desk-r4",
    "risk": "Pilot Property manager 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": "ny-gol-7108-deposit-itemization-deadline-desk-r5",
    "risk": "a PMS vendor ships free, good-enough Completeness with a invoice invoice chaseflow",
    "likelihood": "medium-high",
    "impact": "high",
    "mitigation": "Portal-agnostic positioning; redelivery/chase as the human moat software won't replicate",
    "contingency": "Reposition as \"we operate whatever lease & ledger tool exists\"; lean harder into the Diligence Source-evidence check line",
    "owner": "owner"
   }
  ],
  "roadmap": [
   {
    "phase": "Phase 0 — Discovery + pilot LOI",
    "weeks": "Weeks 1-2",
    "outcomes": [
     "3-5 pilot Property manager LOIs",
     "Evidence pack from each pilot Property manager",
     "Written ICP + pricing hypothesis"
    ],
    "exit_criteria": [
     "≥3 LOIs signed",
     "Owner-action Pack populated per Property manager",
     "Analyst 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 -> analyst signoff -> delivery working end-to-end for one lease & ledger format",
     "Audit trail wired",
     "Instrumentation live"
    ],
    "exit_criteria": [
     "1 real Clock Risk Scan delivered + analyst-signed",
     "p95 workflow latency published"
    ],
    "kill_criteria": [
     "Analyst signoff cycle >10 business days",
     "Evidence bundle cannot be reconstructed on demand"
    ]
   },
   {
    "phase": "Phase 2 — Pilot cohort",
    "weeks": "Weeks 3-8",
    "outcomes": [
     "10 pilot property managers 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-evidence 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%",
     "Analyst minutes per client not falling with volume"
    ]
   }
  ],
  "metrics": {
   "north_star": "Signed Itemized Disposition Packs delivered per week, per client, with zero client-caught material errors",
   "leading": [
    "Pilot Property manager LOIs signed",
    "Scan-request-to-delivered-scan cycle time",
    "Analyst signoff cycle time",
    "Evidence coverage per evidence matrix 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, analyst-gated vertical slice for Deposit14 Clear, wedged on the Clock Risk Scan. Prefer a boring, single-region modular monolith. Do not launch commercially until owner-action facts close and at least one analyst-signed Disposition Pack has shipped.",
   "dissent": "Executive Sponsor and Privacy/Compliance disagree on launch tempo — Privacy recommends waiting for the full state-by-state collection-Property manager-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 deduction gap line or invoice chase note",
    "Cross-tenant Property manager financial data leak"
   ],
   "first_10_steps": [
    "Confirm the named deposit analyst + 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 -> analyst signoff loop",
    "Wire append-only audit log + hash-chained snapshots",
    "Add row-level auth + tenant-scoped retrieval indices",
    "Instrument scan-request, pack-delivery, and analyst-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": "ny-gol-7108-deposit-itemization-deadline-desk",
  "app_name": "Deposit14 Clear disposition desk",
  "archetype": "NY deposit disposition desk",
  "archetype_label": "NY deposit disposition desk",
  "reader_role": "New York property manager or deposit specialist",
  "one_sentence_app": "Deposit14 Clear is a New York security-deposit disposition desk that turns one vacate file into a landlord-ready Itemized Disposition Pack inside the GOL §7-108 14-day clock.",
  "homepage_sequence": [
   "scene",
   "workflow",
   "instrument",
   "offer",
   "proof",
   "qualification",
   "objections"
  ],
  "hero": {
   "frame_label": "New York residential property management · GOL §7-108 / §7-107 deposit disposition",
   "eyebrow": "Property manager / a vacate is confirmed and the 14-day deposit clock is running",
   "interface_title": "Deposit14 Clear disposition desk",
   "primary_panel_title": "Pack #D14-000142 · Unit 4R vacate · Day-14 clock open",
   "primary_panel_body": "Open pack: extract the vacate file, match each deduction line to its move-out photo and vendor invoice, compute the interest note, and run the Day-14 countdown before release.",
   "side_panel_title": "Before this ships",
   "side_panel_items": [
    "Every deduction line matched to a move-out photo and a vendor invoice or on the chase list",
    "Interest note computed for the 6+ unit building and the bank disclosed",
    "Delivery-proof checklist ready so the Day-14 send is logged, not assumed"
   ],
   "status_metric": "QA",
   "status_label": "deposit-analyst gate active"
  },
  "language": {
   "problem_heading": "The property manager's moment",
   "mechanism_heading": "Inside the Deposit14 Clear disposition desk",
   "proof_heading": "Why this survives a tenant dispute and the 14-day clock",
   "offer_heading": "What leaves the room",
   "objection_heading": "The hard questions",
   "qualification_heading": "Who should not use this",
   "cta_close": "Start a free Clock Risk Scan — reviewed by a deposit analyst"
  },
  "modules": [
   {
    "name": "Section intake",
    "job": "Turns one vacate file, the vendor invoices, and held certificates into a named pack with an intake checklist and qualification (trade, due date, private commercial).",
    "artifact": "pack intake record"
   },
   {
    "name": "Evidence match & completeness",
    "job": "Extracts required items, OCRs and links the vendor invoices, and drafts a page-cited evidence matrix and invoice chase list — every row tied to a source photo/invoice.",
    "artifact": "evidence matrix + invoice chase list"
   },
   {
    "name": "Specialist QA & delivery",
    "job": "Runs the deterministic rules gate, gets a deposit-specialist QA signature and the contractor's attestation, then delivers the pack with a rejection-risk score.",
    "artifact": "delivered First-Pass Itemized Disposition Pack"
   }
  ],
  "checkpoints": [
   {
    "label": "required-item match",
    "pass": "matched with a cited source photo/invoice",
    "fail": "routed to the specialist exception queue"
   },
   {
    "label": "required signatureificate",
    "pass": "attached or on the invoice chase list with a draft vendor email",
    "fail": "hard-fail: missing required signature blocks delivery"
   },
   {
    "label": "dispute-support fields",
    "pass": "all fields complete with the spec-section reference",
    "fail": "hard-fail: blank dispute-support field blocks delivery"
   }
  ],
  "signature_scene": "You run deposit dispositions for an 80–800 door NY portfolio. It's the week after a summer wave of move-outs, a lease admin is on PTO, the last carpet invoice landed on Day 12, and three units are on Day 11 of the 14-day clock."
 },
 "ddd": {
  "slug": "ny-gol-7108-deposit-itemization-deadline-desk",
  "project_name": "Deposit14 Clear",
  "business_understanding": {
   "summary": "Deposit14 Clear is a done-for-you desk that manufactures a landlord-ready Itemized Disposition Pack for one New York vacate — deduction lines linked to photo and invoice evidence, an interest note where required, a Day-14 countdown, and a delivery-proof checklist — reviewed by a deposit analyst.",
   "customer_profile": "New York residential property managers and owners (80–800 doors) running move-out security-deposit dispositions",
   "customer_pain": "New York's GOL §7-108 imposes a strict 14-day dual deadline: return the balance and deliver a written itemized statement, or forfeit the right to retain any portion — even for real, photographed, invoiced damage. Late vendor invoices, scattered photos, and summer PTO break the process at volume.",
   "paid_outcome": "A first-pass, landlord-ready Itemized Disposition Pack for one vacate, released to the PM by Day 7 with zero missing statutory elements.",
   "value_creation": "Removes the missing-documentation and missed-deadline reasons NY deposits get forfeited by combining photo→invoice→ledger reconciliation, a deterministic Day-14 clock, and a deposit-analyst gate on wear-and-tear vs. damage language.",
   "why_ai_native": "Frontier models compress multi-hour evidence assembly across 97% paper deduction into minutes of OCR and evidence match, improving as handwriting OCR and multi-document reasoning improve; humans remain at deduction entitlement attestation and edge-case tenant/court packaging.",
   "operational_risks": [
    "Entitlement disputes masquerading as completeness work.",
    "Handwriting-OCR failure on illegible paper tickets.",
    "Rate or quantity hallucination if attestation gates are weak.",
    "Scope creep into legal claims or contingency recovery.",
    "tenant/court preference subjectivity beyond documentation completeness."
   ],
   "assumptions": [
    "Beachhead subs will pay $129 per pack to avoid a revision round and weeks of slipped cash.",
    "First-pass completeness acceptance can reach >=70% by pack 20 with hardened SOPs.",
    "Specialist minutes per pack can fall from ~58 to ~25-30 by day 90.",
    "Free Clock Risk Scan converts to paid packs at 15-25%.",
    "The desk stays out of UPL and PE scope with attestation and hard boundaries."
   ],
   "validation_questions": [
    "What is the true first-pass completeness acceptance rate across the first 20 packs?",
    "What is the scan-to-paid conversion after 100 qualified scans?",
    "Can human minutes stay under ~40 without quality collapse on paper tickets?",
    "Which ticket formats are AI-tractable versus escalation-bound?",
    "Does pack-to-Continuity conversion reach 25-35%?"
   ]
  },
  "domain_discovery": {
   "actors": [
    {
     "actor": "Property manager",
     "role": "Owns the property manager's deposit-disposition engagement; supplies records and authorizes vendor-chase sends",
     "goals": [
      "Recover missing/rejected deposit dispositions",
      "Avoid losing staff hours to vendor invoice matching",
      "Have a defensible Pack for property managers, CPA, and acquirers"
     ],
     "decisions": [
      "Whether to engage Deposit14 Clear",
      "Which records to supply",
      "Whether to authorize invoice chase notes and the rush rider"
     ],
     "pain_points": [
      "No time for line-item vendor invoice verification",
      "Doesn't know which of 40+ vendor formats are shortchanging the Property manager"
     ]
    },
    {
     "actor": "Deposit analyst",
     "role": "Reviews AI-matched vendor invoices and drafted gaps; signs off before delivery or vendor send",
     "goals": [
      "Release only evidence-backed, source-page-complete Packs",
      "Protect Property manager and vendor relationships"
     ],
     "decisions": [
      "Approve, escalate, or reject a deduction gap",
      "Sign or withhold the Disposition Pack"
     ],
     "pain_points": [
      "Volume spikes during month-end delivery windows",
      "Ambiguous fuzzy matches requiring judgment"
     ]
    },
    {
     "actor": "Property manager",
     "role": "Receives furnish decision vendor invoices 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 vendor invoice-backed answer when a furnish decision looks wrong"
     ]
    },
    {
     "actor": "Vendor deposit-file Department (external)",
     "role": "Receives invoice chase notes about missing/rejected deposit dispositions",
     "goals": [
      "Resolve invoice chase notes without escalation"
     ],
     "decisions": [
      "Confirm, correct, or dispute an invoice chase note"
     ],
     "pain_points": [
      "High invoice chase note volume across many property managers and formats"
     ]
    }
   ],
   "glossary": [
    {
     "term": "Clock Risk Scan",
     "definition": "The one-time, $0 risk triage of a recent vacate file's vendor invoices against the lease & ledger set.",
     "used_by": "Property manager",
     "context": "Disposition & Evidence Matching",
     "example": "Scan for Property manager #AG-2291 across 34 vacate files",
     "notes": "Never called 'audit', 'check', or 'review'."
    },
    {
     "term": "disposition cycle",
     "definition": "One calendar month's worth of vendor invoice collection, matching, and pack delivery for one client.",
     "used_by": "Deposit analyst",
     "context": "Disposition & Evidence Matching",
     "example": "The July pack cycle for Property manager #AG-2291",
     "notes": "The unit of recurring work."
    },
    {
     "term": "Disposition Pack",
     "definition": "The signed source-photo check artifact: every vendor invoice line matched to a policy, balanced to the penny.",
     "used_by": "Deposit analyst, Property manager",
     "context": "Disposition & Evidence Matching",
     "example": "July Disposition Pack, 34 vendors, traces to $128,410 in stated deposit dispositions",
     "notes": "Never called 'report' or 'vendor invoice'."
    },
    {
     "term": "evidence matrix",
     "definition": "The list of missing, rejected, late, or redelivery lines with dollar value and evidence.",
     "used_by": "Deposit analyst, Property manager",
     "context": "Disposition & Evidence Matching",
     "example": "3 rejected lines, 1 missing renewal, est. $2,140",
     "notes": "Never called 'exceptions report'."
    }
   ],
   "decisions": [
    {
     "decision": "Is this vendor invoice line a real deduction gap or a normal lease & ledger quirk (e.g. as-earned lag)?",
     "who": "AI drafts, Analyst confirms",
     "inputs": [
      "[PLACEHOLDER] owner to complete"
     ],
     "rule": "Classification thresholds per transaction type; building-type quirk map consulted before flagging",
     "output": "deduction classification with evidence citation",
     "risk": "False deduction gap sent to a vendor"
    },
    {
     "decision": "Is the Disposition Pack ready to sign?",
     "who": "Deterministic code gates, Analyst signs",
     "inputs": "All vendor invoice lines matched or exception-coded, Pack source-photo check to vendor invoice totals",
     "rule": "Source-evidence-complete rule: Pack must tie to vendor invoice totals before release",
     "output": "Signed Disposition Pack",
     "risk": "Signed pack with an unresolved source-photo check gap"
    }
   ],
   "events": [
    {
     "event": "VacateFileExtracted",
     "meaning": "A vendor invoice is extracted and source-checked, ready for matching",
     "trigger": "Extraction Agent completes parsing + source-photo check check",
     "downstream": [
      "[PLACEHOLDER] owner to complete"
     ]
    },
    {
     "event": "MatrixDrafted",
     "meaning": "A flagged deduction gap is analyst-confirmed and evidenced",
     "trigger": "Deposit analyst approves the classification",
     "downstream": "Vendor invoice chase note drafted; Invoice chase list line finalized"
    }
   ]
  },
  "subdomains": [
   {
    "name": "Disposition & Evidence Matching",
    "type": "core",
    "description": "VacateFile normalization, statute-element matching, expected-deposit-file computation, and deduction classification.",
    "reason": "This is the paid outcome — the completed Pack and Invoice chase list are what the Property manager is buying.",
    "business_value": "Direct revenue driver; every tier maps to a delivered Itemized Disposition Pack.",
    "recommendation": "Build in-house, deterministic-rules-first.",
    "ai_involvement": "Extraction, matching, deduction classification, drafting",
    "human_involvement": "Analyst approval, Pack signature",
    "risks": [
     "Missed cycle-delivery SLA",
     "Incomplete evidence causing a client-caught error"
    ],
    "validation_questions": [
     "What is the real analyst review time per cycle at volume?"
    ]
   },
   {
    "name": "Delivery",
    "type": "core",
    "description": "Vendor-chase drafting/sending, aging/tracking, Itemized Disposition Pack assembly, Delivery Pack.",
    "reason": "Differentiates Deposit14 Clear from a generic deposit-ops 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-element contact/quirk map from day one.",
    "ai_involvement": "Drafts invoice chase notes and Delivery reports",
    "human_involvement": "Analyst approves every outbound invoice chase note; escalation judgment",
    "risks": [
     "Stalled recoveries with no tracked follow-up"
    ],
    "validation_questions": [
     "How often do vendors 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-photo 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 Property manager 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": "Disposition & Evidence 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 Disposition Pack, so Disposition & Evidence Matching is the primary core. Delivery is a secondary core because invoice chase and tracked Delivery is the human-plus-AI moat that differentiates Deposit14 Clear from software the Property manager has to operate itself. Evidence & Compliance could become core if the Diligence Source-evidence 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 vacate-file completeness engine."
  },
  "bounded_contexts": [
   {
    "name": "Intake context",
    "purpose": "Receive and normalize customer submissions into classified documents.",
    "subdomain": "Intake",
    "type": "supporting",
    "owned_language": [
     "submission",
     "document",
     "page-class"
    ],
    "owns": [
     "submission record",
     "document normalization",
     "page classification"
    ],
    "does_not_own": [
     "evidence rules",
     "delivery packaging"
    ],
    "primary_actors": [
     "Customer",
     "Intake bot"
    ],
    "entities": [
     "Submission",
     "Document",
     "Page"
    ],
    "aggregates": [
     "Submission"
    ],
    "domain_services": [
     "Intake service"
    ],
    "application_services": [
     "submission record",
     "document normalization",
     "page classification"
    ],
    "commands": [
     "NormalizeDocuments",
     "SubmitVacateFile"
    ],
    "domain_events": [
     "DocumentsNormalized",
     "SubmissionReceived"
    ],
    "policies": [
     "Start SLA on complete intake"
    ],
    "specifications": [
     "IntakeCompletenessSpec"
    ],
    "invariants": [
     "A pack cannot advance while an open hard fail exists in this context"
    ],
    "ai_agents": [
     "Intake classifier"
    ],
    "human_roles": [
     "Customer",
     "Intake bot"
    ],
    "data_owned": [
     "Submission",
     "Document",
     "Page"
    ],
    "inputs": [
     "Upstream context output"
    ],
    "outputs": [
     "Downstream context input"
    ],
    "external_integrations": [
     "Drive/Dropbox intake",
     "PMSs (customer-submitted, not auto-pushed)"
    ],
    "risks": [
     "Illegible handwriting mis-extracted",
     "Ambiguous exhibit link accepted silently"
    ],
    "interfaces": [
     "-> next context via domain event"
    ],
    "value_objects": []
   },
   {
    "name": "Evidence context",
    "purpose": "Extract required evidence and evidence match each ticket line to supporting exhibits.",
    "subdomain": "Evidence",
    "type": "core",
    "owned_language": [
     "evidence item",
     "matrix line",
     "exhibit",
     "gap"
    ],
    "owns": [
     "Evidence Matrix",
     "Exhibit Index",
     "gap detection"
    ],
    "does_not_own": [
     "hard-fail thresholds",
     "attestation"
    ],
    "primary_actors": [
     "AI workbench",
     "Specialist"
    ],
    "entities": [
     "EvidenceMatrix",
     "MatrixLine",
     "Exhibit"
    ],
    "aggregates": [
     "EvidenceMatrix"
    ],
    "domain_services": [
     "Evidence service"
    ],
    "application_services": [
     "Evidence Matrix",
     "Exhibit Index",
     "gap detection"
    ],
    "commands": [
     "Evidence matchExhibits",
     "ExtractEvidence"
    ],
    "domain_events": [
     "EvidenceExtracted",
     "MatrixEvidence matched"
    ],
    "policies": [
     "Never invent a rate",
     "Code every rejection"
    ],
    "specifications": [
     "EvidenceCompletenessSpec"
    ],
    "invariants": [
     "A pack cannot advance while an open hard fail exists in this context"
    ],
    "ai_agents": [
     "Extraction & evidence match agent"
    ],
    "human_roles": [
     "AI workbench",
     "Specialist"
    ],
    "data_owned": [
     "EvidenceMatrix",
     "MatrixLine",
     "Exhibit"
    ],
    "inputs": [
     "Upstream context output"
    ],
    "outputs": [
     "Downstream context input"
    ],
    "external_integrations": [
     "Drive/Dropbox intake",
     "PMSs (customer-submitted, not auto-pushed)"
    ],
    "risks": [
     "Illegible handwriting mis-extracted",
     "Ambiguous exhibit link accepted silently"
    ],
    "interfaces": [
     "-> next context via domain event"
    ],
    "value_objects": []
   },
   {
    "name": "Completeness context",
    "purpose": "Apply deterministic completeness rules and score submission readiness.",
    "subdomain": "Completeness",
    "type": "core",
    "owned_language": [
     "hard fail",
     "soft flag",
     "completeness-risk score"
    ],
    "owns": [
     "rules engine",
     "completeness-risk score"
    ],
    "does_not_own": [
     "deduction entitlement judgment",
     "tenant/court review"
    ],
    "primary_actors": [
     "Rules engine",
     "Specialist"
    ],
    "entities": [
     "RuleResult",
     "CompletenessScore"
    ],
    "aggregates": [
     "RuleResult"
    ],
    "domain_services": [
     "Completeness service"
    ],
    "application_services": [
     "rules engine",
     "completeness-risk score"
    ],
    "commands": [
     "RunCompletenessRules"
    ],
    "domain_events": [
     "CompletenessScored"
    ],
    "policies": [
     "Block on hard fail"
    ],
    "specifications": [
     "CompletenessCompletenessSpec"
    ],
    "invariants": [
     "A pack cannot advance while an open hard fail exists in this context"
    ],
    "ai_agents": [
     "Extraction & evidence match agent"
    ],
    "human_roles": [
     "Rules engine",
     "Specialist"
    ],
    "data_owned": [
     "RuleResult",
     "CompletenessScore"
    ],
    "inputs": [
     "Upstream context output"
    ],
    "outputs": [
     "Downstream context input"
    ],
    "external_integrations": [
     "Drive/Dropbox intake",
     "PMSs (customer-submitted, not auto-pushed)"
    ],
    "risks": [
     "Illegible handwriting mis-extracted",
     "Ambiguous exhibit link accepted silently"
    ],
    "interfaces": [
     "-> next context via domain event"
    ],
    "value_objects": []
   },
   {
    "name": "Review & Fulfillment context",
    "purpose": "Specialist QA, customer attestation, packaging, and delivery.",
    "subdomain": "Review",
    "type": "core",
    "owned_language": [
     "QA checklist",
     "attestation",
     "Itemized Disposition Pack",
     "upload checklist"
    ],
    "owns": [
     "QA sign-off",
     "AttestationRecord",
     "delivered pack"
    ],
    "does_not_own": [
     "tenant/court submission",
     "deduction entitlement decisions"
    ],
    "primary_actors": [
     "Specialist",
     "Customer"
    ],
    "entities": [
     "DispositionPack",
     "AttestationRecord"
    ],
    "aggregates": [
     "DispositionPack"
    ],
    "domain_services": [
     "Review service"
    ],
    "application_services": [
     "QA sign-off",
     "AttestationRecord",
     "delivered pack"
    ],
    "commands": [
     "AttestAndDeliver"
    ],
    "domain_events": [
     "PackDelivered"
    ],
    "policies": [
     "Block on hard fail"
    ],
    "specifications": [
     "ReviewCompletenessSpec"
    ],
    "invariants": [
     "A pack cannot advance while an open hard fail exists in this context"
    ],
    "ai_agents": [
     "Extraction & evidence match agent"
    ],
    "human_roles": [
     "Specialist",
     "Customer"
    ],
    "data_owned": [
     "DispositionPack",
     "AttestationRecord"
    ],
    "inputs": [
     "Upstream context output"
    ],
    "outputs": [
     "Downstream context input"
    ],
    "external_integrations": [
     "Drive/Dropbox intake",
     "PMSs (customer-submitted, not auto-pushed)"
    ],
    "risks": [
     "Illegible handwriting mis-extracted",
     "Ambiguous exhibit link accepted silently"
    ],
    "interfaces": [
     "-> next context via domain event"
    ],
    "value_objects": []
   }
  ],
  "context_map": [
   {
    "upstream": "Intake & Normalization",
    "downstream": "Disposition & Evidence Matching",
    "relationship": "Customer-Supplier",
    "integration_pattern": "Domain event (VacateFileExtracted) consumed by matching engine",
    "translation_notes": "Canonical vendor invoice 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 (VacateFileExtracted) 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": "Disposition & Evidence Matching",
    "downstream": "Delivery",
    "relationship": "Customer-Supplier",
    "integration_pattern": "Domain event (MatrixDrafted) triggers invoice chase note drafting",
    "translation_notes": "Only analyst-approved gaps cross the boundary.",
    "pattern": "Customer-Supplier",
    "contract_type": "domain event",
    "data_exchanged": "Canonical schema payload only",
    "events_exchanged": [
     "Domain event (MatrixDrafted) triggers invoice chase note 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": "Disposition & Evidence Matching",
    "downstream": "Quality Assurance",
    "relationship": "Conformist",
    "integration_pattern": "ReleasePack command with synchronous validation",
    "translation_notes": "QA enforces the source-page-complete invariant; Disposition & Evidence Matching conforms to QA's signature contract.",
    "pattern": "Conformist",
    "contract_type": "domain event",
    "data_exchanged": "Canonical schema payload only",
    "events_exchanged": [
     "ReleasePack 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": "Property management system (PMS) export",
    "direction": "inbound",
    "pattern": "File-based export, no live API at launch",
    "risk": "Schema drift per lease/ledger version",
    "owner_context": "Delivery",
    "data_in": [
     "[PLACEHOLDER] owner to complete"
    ],
    "data_out": [
     "[PLACEHOLDER] owner to complete"
    ],
    "trigger": "disposition cycle start",
    "internal_model": "Canonical vendor invoice/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": "vendor invoice portals",
    "direction": "inbound",
    "pattern": "Property manager-authorized credentialed pull or client-forwarded file",
    "risk": "Portal ToS friction; credential expiry",
    "owner_context": "Intake & Normalization",
    "data_in": "vendor invoice content",
    "data_out": "N/A",
    "trigger": "disposition cycle start",
    "internal_model": "Canonical vendor invoice/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": "Buildium / lease & ledger posting-file import",
    "direction": "outbound",
    "pattern": "Generated posting file, Property manager-side import",
    "risk": "Format mismatch per deposit-ops software version",
    "owner_context": "Delivery",
    "data_in": "N/A",
    "data_out": "Posting file or invoice chase note email",
    "trigger": "Analyst approval",
    "internal_model": "Canonical vendor invoice/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": "Vendor invoice mailbox",
    "direction": "outbound",
    "pattern": "Property manager-authorized email send",
    "risk": "ChaseItem misread as a demand",
    "owner_context": "Delivery",
    "data_in": "N/A",
    "data_out": "Posting file or invoice chase note email",
    "trigger": "Analyst approval",
    "internal_model": "Canonical vendor invoice/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": "SubmitVacateFile",
    "event": "SubmissionReceived",
    "actor": "Customer",
    "context": "Intake context",
    "aggregate": "Submission",
    "policy": "Start SLA clock on complete intake",
    "downstream": "Normalize documents",
    "risk": "Incomplete intake starts a false clock"
   },
   {
    "seq": 2,
    "command": "NormalizeDocuments",
    "event": "DocumentsNormalized",
    "actor": "Intake bot",
    "context": "Intake context",
    "aggregate": "Document",
    "policy": "Classify every page",
    "downstream": "Extract evidence",
    "risk": "Illegible handwriting misclassified"
   },
   {
    "seq": 3,
    "command": "ExtractEvidence",
    "event": "EvidenceExtracted",
    "actor": "AI workbench",
    "context": "Evidence context",
    "aggregate": "EvidenceMatrix",
    "policy": "Never infer a rate or quantity",
    "downstream": "Evidence match exhibits",
    "risk": "Hallucinated line without a source photo/invoice"
   },
   {
    "seq": 4,
    "command": "Evidence matchExhibits",
    "event": "MatrixEvidence matched",
    "actor": "AI workbench",
    "context": "Evidence context",
    "aggregate": "EvidenceMatrix",
    "policy": "Flag any line with no supporting exhibit as a gap",
    "downstream": "Run completeness rules",
    "risk": "Ambiguous exhibit link accepted silently"
   },
   {
    "seq": 5,
    "command": "RunCompletenessRules",
    "event": "CompletenessScored",
    "actor": "Rules engine",
    "context": "Completeness context",
    "aggregate": "CompletenessScore",
    "policy": "Block on any open hard fail",
    "downstream": "Specialist QA",
    "risk": "Soft flag treated as hard fail or vice versa"
   },
   {
    "seq": 6,
    "command": "AttestAndDeliver",
    "event": "PackDelivered",
    "actor": "Customer + Specialist",
    "context": "Review & Fulfillment context",
    "aggregate": "DispositionPack",
    "policy": "No delivery without QA sign-off and attestation",
    "downstream": "Rejection learning on tenant dispute",
    "risk": "Delivery before attestation captured"
   }
  ],
  "critical_path": [
   "vendor invoice.received -> vendor invoice.normalized -> pack_cycle.evidence_matched -> deduction.analyst_approved -> DispositionPack.signed -> pack.delivered"
  ],
  "exception_flows": [
   "A vendor invoice line below the matching-confidence threshold -> routed to analyst exception queue, blocks pack_cycle.evidence_matched until resolved",
   "A deduction classification needs-analyst-judgment -> held for analyst, never auto-approved"
  ],
  "escalation_flows": [
   "A deduction gap over $250 -> second analyst pass before Invoice chase list approval",
   "A vendor disputes an invoice chase note beyond a routine response -> referred to the property manager's own counsel"
  ],
  "retry_flows": [
   "Vendor invoice chase note unacknowledged after 60 days -> automated reminder, then analyst-judged escalation at 90 days"
  ],
  "manual_override_flows": [
   "Founder/senior analyst can force-hold any Disposition Pack pre-release regardless of automated source-photo check pass, if a data-integrity issue is suspected"
  ],
  "commands": [
   {
    "name": "SubmitVacateFile",
    "issued_by": "Customer",
    "preconditions": [
     "vacate-file id or unnumbered flag",
     "at least one vendor invoice"
    ],
    "aggregate": "Submission",
    "success_event": "SubmissionReceived",
    "failure_event": "IntakeRejected",
    "authorization": "Customer",
    "validation": "Files readable; scope stated",
    "audit": "Intake log"
   },
   {
    "name": "NormalizeDocuments",
    "issued_by": "Intake bot",
    "preconditions": [
     "SubmissionReceived"
    ],
    "aggregate": "Document",
    "success_event": "DocumentsNormalized",
    "failure_event": "NormalizationFailed",
    "authorization": "System",
    "validation": "OCR confidence recorded per page",
    "audit": "Page-class version"
   },
   {
    "name": "ExtractEvidence",
    "issued_by": "AI workbench",
    "preconditions": [
     "DocumentsNormalized"
    ],
    "aggregate": "EvidenceMatrix",
    "success_event": "EvidenceExtracted",
    "failure_event": "ExtractionEscalated",
    "authorization": "System + Specialist",
    "validation": "No inferred rates or quantities",
    "audit": "Matrix version"
   },
   {
    "name": "RunCompletenessRules",
    "issued_by": "Rules engine",
    "preconditions": [
     "MatrixEvidence matched"
    ],
    "aggregate": "CompletenessScore",
    "success_event": "CompletenessScored",
    "failure_event": "HardFailRaised",
    "authorization": "System",
    "validation": "Deterministic rule functions",
    "audit": "Rule result set"
   },
   {
    "name": "CaptureAttestation",
    "issued_by": "Customer",
    "preconditions": [
     "SpecialistQAPassed"
    ],
    "aggregate": "AttestationRecord",
    "success_event": "AttestationCaptured",
    "failure_event": "AttestationMissing",
    "authorization": "Customer",
    "validation": "Attestor identity + attested scope",
    "audit": "Attestation record"
   },
   {
    "name": "AttestAndDeliver",
    "issued_by": "Specialist",
    "preconditions": [
     "AttestationCaptured",
     "zero open hard fails"
    ],
    "aggregate": "DispositionPack",
    "success_event": "PackDelivered",
    "failure_event": "DeliveryBlocked",
    "authorization": "Specialist",
    "validation": "QA checklist 100%",
    "audit": "Delivery record"
   }
  ],
  "policies": [
   {
    "name": "Start SLA on complete intake",
    "trigger": "SubmissionReceived",
    "condition": "Intake checklist complete or deferral recorded",
    "action": "Start the delivery SLA clock",
    "context": "Intake context",
    "ai_involvement": "Checklist bot verifies completeness",
    "human_approval": false
   },
   {
    "name": "Never invent a rate",
    "trigger": "EvidenceExtracted",
    "condition": "A rate or quantity is not written on a source photo/invoice",
    "action": "Mark the line a gap and cite the missing rate-sheet page",
    "context": "Evidence context",
    "ai_involvement": "Extraction prompt forbids inference",
    "human_approval": true
   },
   {
    "name": "Block on hard fail",
    "trigger": "CompletenessScored",
    "condition": "Any hard fail is open",
    "action": "Prevent the pack from advancing until cleared or deferred by the customer",
    "context": "Completeness context",
    "ai_involvement": "None — deterministic rules",
    "human_approval": true
   },
   {
    "name": "Code every rejection",
    "trigger": "TenantDisputeReceived",
    "condition": "tenant/court returns a comment",
    "action": "Tag root cause (our miss / tenant/court preference / contractor change) and update playbooks",
    "context": "Evidence context",
    "ai_involvement": "Taxonomy classifier suggests a tag",
    "human_approval": true
   }
  ],
  "aggregates": [
   {
    "name": "DispositionPack",
    "root": "DispositionPack",
    "context": "Review & Fulfillment context",
    "purpose": "The assembled, submission-ready pack for one vacate file.",
    "entities": [
     "DispositionPack"
    ],
    "value_objects": [
     "CompletenessScore",
     "AttestationRecord"
    ],
    "invariants": [
     "Cannot reach Delivered with an open hard fail or missing attestation"
    ],
    "commands": [
     "AttestAndDeliver",
     "RequestDelivery"
    ],
    "events": [
     "PackDelivered",
     "TenantDisputeReceived"
    ],
    "repository": "DispositionPackRepository",
    "transaction_boundary": "One DispositionPack per transaction"
   },
   {
    "name": "EvidenceMatrix",
    "root": "EvidenceMatrix",
    "context": "Evidence context",
    "purpose": "Evidence match of each labor/material claim to supporting exhibits.",
    "entities": [
     "MatrixLine"
    ],
    "value_objects": [
     "Exhibit",
     "CoverageStatus"
    ],
    "invariants": [
     "Every claim line has a coverage status of covered, gap, or ambiguous"
    ],
    "commands": [
     "ExtractEvidence",
     "Evidence matchExhibits"
    ],
    "events": [
     "EvidenceExtracted",
     "MatrixEvidence matched"
    ],
    "repository": "EvidenceMatrixRepository",
    "transaction_boundary": "One EvidenceMatrix per transaction"
   },
   {
    "name": "Submission",
    "root": "Submission",
    "context": "Intake context",
    "purpose": "The customer's uploaded deposit-file set and its normalization.",
    "entities": [
     "Document",
     "Page"
    ],
    "value_objects": [
     "PageClass",
     "PackHeader"
    ],
    "invariants": [
     "A submission has a vacate file id or an explicit unnumbered flag"
    ],
    "commands": [
     "SubmitVacateFile",
     "NormalizeDocuments"
    ],
    "events": [
     "SubmissionReceived",
     "DocumentsNormalized"
    ],
    "repository": "SubmissionRepository",
    "transaction_boundary": "One Submission per transaction"
   },
   {
    "name": "CompletenessScore",
    "root": "CompletenessScore",
    "context": "Completeness context",
    "purpose": "The deterministic completeness read on a pack.",
    "entities": [
     "RuleResult"
    ],
    "value_objects": [
     "HardFail",
     "SoftFlag"
    ],
    "invariants": [
     "Score cannot be 'ready' while any hard fail is open"
    ],
    "commands": [
     "RunCompletenessRules"
    ],
    "events": [
     "CompletenessScored",
     "HardFailRaised"
    ],
    "repository": "CompletenessScoreRepository",
    "transaction_boundary": "One CompletenessScore per transaction"
   },
   {
    "name": "AttestationRecord",
    "root": "AttestationRecord",
    "context": "Review & Fulfillment context",
    "purpose": "The contractor's sign-off on rates, quantities, and deduction entitlement.",
    "entities": [
     "AttestationRecord"
    ],
    "value_objects": [
     "Attestor",
     "AttestedScope"
    ],
    "invariants": [
     "Attestation is captured before PackDelivered"
    ],
    "commands": [
     "CaptureAttestation"
    ],
    "events": [
     "AttestationCaptured"
    ],
    "repository": "AttestationRecordRepository",
    "transaction_boundary": "One AttestationRecord per transaction"
   },
   {
    "name": "tenant/courtPlaybook",
    "root": "tenant/courtPlaybook",
    "context": "Evidence context",
    "purpose": "tenant/court- and trade-specific packaging preferences and rejection memory.",
    "entities": [
     "PlaybookRule"
    ],
    "value_objects": [
     "tenant/courtFirm",
     "Trade"
    ],
    "invariants": [
     "A coded rejection maps to exactly one root-cause tag"
    ],
    "commands": [
     "CodeRejection"
    ],
    "events": [
     "RejectionCoded"
    ],
    "repository": "tenant/courtPlaybookRepository",
    "transaction_boundary": "One tenant/courtPlaybook per transaction"
   },
   {
    "name": "deduction gapChase",
    "root": "deduction gapChase",
    "context": "Evidence context",
    "purpose": "The outstanding missing items and their draft chase communications.",
    "entities": [
     "deduction gapItem"
    ],
    "value_objects": [
     "deduction gapReason",
     "ChaseDraft"
    ],
    "invariants": [
     "Every gap item names a concrete missing artifact"
    ],
    "commands": [
     "DraftChase"
    ],
    "events": [
     "ChaseDrafted"
    ],
    "repository": "deduction gapChaseRepository",
    "transaction_boundary": "One deduction gapChase per transaction"
   }
  ],
  "invariants": [
   {
    "invariant": "Cannot reach Delivered with an open hard fail",
    "context": "Review & Fulfillment context",
    "aggregate": "DispositionPack",
    "why": "A pack that ships with a missing signature or unlinked photo defeats the completeness promise.",
    "enforcement": "Delivery command checks zero open hard fails."
   },
   {
    "invariant": "Attestation captured before delivery",
    "context": "Review & Fulfillment context",
    "aggregate": "AttestationRecord",
    "why": "The contractor, not Deposit14 Clear, owns rates, quantities, and deduction entitlement.",
    "enforcement": "AttestAndDeliver requires AttestationCaptured."
   },
   {
    "invariant": "Every claim line has a coverage status",
    "context": "Evidence context",
    "aggregate": "EvidenceMatrix",
    "why": "An unclassified line hides a gap from the analyst.",
    "enforcement": "Matrix validation rejects null coverage."
   },
   {
    "invariant": "No invented rate reaches the pricing worksheet",
    "context": "Evidence context",
    "aggregate": "EvidenceMatrix",
    "why": "Presenting an inferred rate as contract fact is a hallucination and a compliance risk.",
    "enforcement": "Rates cite a rate-sheet page or are marked deferred."
   }
  ],
  "ai_agents": [
   {
    "name": "Extraction Agent",
    "context": "Intake & Normalization",
    "responsibility": "Extract and normalize structured fields from vendor deposit-file vendor invoices (PDF, portal CSV, scanned paper) into the canonical schema.",
    "inputs": [
     "Uploaded/forwarded vendor invoices"
    ],
    "outputs": [
     "Structured line items with per-field confidence score"
    ],
    "tools": [
     "OCR",
     "per-vendor-format parser library"
    ],
    "forbidden_actions": [
     "Guessing a requirement id fragment not present in the source text"
    ],
    "memory_scope": "Single vendor invoice 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": "Analyst confirms during exception review",
    "failure_modes": [
     "Misread scanned/paper vendor invoice",
     "Wrong vendor-format classification"
    ],
    "audit_logs": [
     "Every extraction run logged with document hash and confidence scores"
    ],
    "metrics": [
     "Extraction accuracy vs. analyst-corrected value"
    ],
    "versioning": "Prompt versioned independently of the underlying model"
   },
   {
    "name": "Matching Agent",
    "context": "Disposition & Evidence Matching",
    "responsibility": "Match normalized vendor invoice lines to lease & ledger policies (exact -> fuzzy -> analyst-adjudicated) and compute expected deposit-file from the schedule.",
    "inputs": [
     "Normalized vendor invoice lines",
     "lease & ledger lease-and-ledger set",
     "deposit ledgers"
    ],
    "outputs": [
     "Match candidates with confidence score",
     "Expected-deposit-file computation"
    ],
    "tools": [
     "Fuzzy entity matcher",
     "deposit-ledger lookup"
    ],
    "forbidden_actions": [
     "Auto-accepting a match below the confidence threshold"
    ],
    "memory_scope": "Single pack cycle",
    "retrieval_sources": [
     "Property manager's lease & ledger lease-and-ledger set (tenant-scoped)"
    ],
    "validations": [
     "Every match below threshold routed to analyst with reasoning"
    ],
    "confidence_scoring": "0-100 per match, auto-accept ≥95, analyst queue below",
    "escalation_triggers": [
     "No candidate match found",
     "Ambiguous multi-candidate match"
    ],
    "human_approval": "Analyst adjudicates all sub-threshold matches",
    "failure_modes": [
     "Wrong fuzzy match on a common project owner name",
     "Stale lease & ledger requirement AppFolio"
    ],
    "audit_logs": [
     "Every match decision logged with confidence and reasoning"
    ],
    "metrics": [
     "Auto-match rate",
     "Match-reversal rate on analyst audit"
    ],
    "versioning": "Prompt versioned independently of the underlying model"
   },
   {
    "name": "Deduction Drafter Agent",
    "context": "Disposition & Evidence Matching",
    "responsibility": "Classify each line's deduction gap type and draft a plain-language explanation citing the source vendor invoice and policy.",
    "inputs": [
     "Matched/unmatched vendor invoice lines",
     "lease & ledger requirement",
     "Building-type quirk notes",
     "Prior payment history"
    ],
    "outputs": [
     "deduction classification",
     "Draft explanation with citations"
    ],
    "tools": [
     "Building-type quirk knowledge base lookup"
    ],
    "forbidden_actions": [
     "Stating a deduction gap is confirmed before analyst approval",
     "Estimating a dollar gap the schedule doesn't cover"
    ],
    "memory_scope": "Single pack cycle",
    "retrieval_sources": [
     "Building-type quirk knowledge base"
    ],
    "validations": [
     "Output must cite a source vendor invoice line and lease & ledger requirement reference"
    ],
    "confidence_scoring": "Qualitative (missing / rejected / late / redelivery / rate-mismatch / unearned / needs-analyst-judgment)",
    "escalation_triggers": [
     "Schedule doesn't cover the case"
    ],
    "human_approval": "Analyst approves every classification before it appears in the Invoice chase list",
    "failure_modes": [
     "Misclassifying a legitimate redelivery as a short-pay"
    ],
    "audit_logs": [
     "Every classification logged with citation and confidence"
    ],
    "metrics": [
     "deduction gap-classification accuracy vs. analyst-corrected value"
    ],
    "versioning": "Prompt versioned independently of the underlying model"
   },
   {
    "name": "Invoice Chase Drafter Agent",
    "context": "Delivery",
    "responsibility": "Draft a professional, invoice chase note-toned (never demand-toned) email to a vendor's deposit-file department for an approved deduction gap.",
    "inputs": [
     "Approved deduction gap",
     "Property manager identity",
     "lease & ledger requirement reference"
    ],
    "outputs": [
     "Drafted invoice chase note email"
    ],
    "tools": [
     "Demand-language deterministic filter"
    ],
    "forbidden_actions": [
     "Using demand, collection, or legal-threat language",
     "Sending without analyst approval"
    ],
    "memory_scope": "Single deduction gap invoice chase note",
    "retrieval_sources": [
     "Building-type quirk knowledge base",
     "Vendor contact map"
    ],
    "validations": [
     "Draft passes the collection-language filter before reaching the analyst"
    ],
    "confidence_scoring": "N/A (deterministic filter gate, not a confidence score)",
    "escalation_triggers": [
     "Filter rejects a draft twice in a row for the same deduction gap"
    ],
    "human_approval": "Analyst approves every draft before send",
    "failure_modes": [
     "Draft reads as aggressive despite passing the filter"
    ],
    "audit_logs": [
     "Every draft + approval + send logged"
    ],
    "metrics": [
     "Vendor response rate",
     "Analyst 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) -> Deduction Drafter Agent (classify + cite) -> OutputValidator -> Analyst (approve or escalate)",
   "Approved deduction gap -> Invoice Chase Drafter Agent (draft) -> collection-language filter -> Analyst (approve or edit) -> send"
  ],
  "rag_map": [
   "Per-Property manager lease & ledger lease-and-ledger set (tenant-scoped) -> retrieval router -> client-scoped hits -> Matching Agent",
   "Versioned per-vendor-format parser fixture + quirk knowledge base -> shared retrieval -> Extraction Agent and Deduction Drafter Agent (cited)"
  ],
  "ai_evaluation": [
   "Golden dataset of past analyst-accepted matches and deduction classifications, per vendor",
   "Regression requirements on auto-match rate + deduction gap-citation coverage",
   "Every prompt release requires a passing evaluator run against the fixture library"
  ],
  "hallucination_controls": [
   "Retrieval-first (no free-form deduction gap generation without a cited vendor invoice line and requirement reference)",
   "Structured-output validator enforces citation-per-claim",
   "Confidence-scored escalation on extraction and matching",
   "Analyst gate on every deduction gap and every outbound invoice chase note",
   "Deterministic filter blocks any demand/collection-style or coverage-determination language before it reaches the analyst"
  ],
  "human_in_the_loop_plan": [
   "Analyst signoff on every Disposition Pack before delivery",
   "Analyst approval on every deduction gap before it appears in a Invoice chase list or goes to a vendor",
   "Senior-analyst co-sign on dispute-supports",
   "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": "Property manager",
    "responsibilities": [
     "Supply lease & ledger set and vendor invoices",
     "Sign vendor-communication authorization",
     "Approve trade deduction scope"
    ],
    "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 Deposit14 Clear, not from it)",
    "quality_metrics": [
     "Intake completeness"
    ],
    "workload_risks": [
     "Month-end time scarcity"
    ]
   },
   {
    "role": "Deposit analyst",
    "responsibilities": [
     "Review AI-drafted matches and gaps",
     "Verify evidence sufficiency",
     "Sign off before delivery or vendor send"
    ],
    "contexts": [
     "Disposition & Evidence Matching",
     "Quality Assurance"
    ],
    "decisions_owned": [
     "Approve, escalate, or reject a deduction gap or match"
    ],
    "ai_support": "Extraction, matching, deduction gap-classification, and invoice chase note-drafting agents",
    "approval_authority": "Sole authority to sign a Disposition Pack or approve a invoice chase note",
    "escalation_authority": "Escalates coverage/claims questions to the property manager's own licensed staff; disputes beyond routine invoice chase note to the property manager's counsel",
    "quality_metrics": [
     "Client-caught material error rate",
     "Review cycle time"
    ],
    "workload_risks": [
     "Volume spike during month-end delivery window"
    ]
   },
   {
    "role": "Senior Analyst",
    "responsibilities": [
     "Second-pass sampling on auto-matched lines",
     "Co-sign dispute-supports",
     "Second review on high-value invoice chase lists"
    ],
    "contexts": [
     "Quality Assurance"
    ],
    "decisions_owned": [
     "dispute-support approval"
    ],
    "ai_support": "None (human-only by design)",
    "approval_authority": "dispute-support co-signature authority",
    "escalation_authority": "Escalates to founder/owner",
    "quality_metrics": [
     "dispute-support rate"
    ],
    "workload_risks": [
     "Contractor-bench availability at scale"
    ]
   }
  ],
  "human_review_checkpoints": [
   "AI draft -> Analyst approval",
   "Public release -> owner acceptance",
   "dispute-support -> senior-analyst co-sign",
   "Prompt rollout -> ops + evaluator"
  ],
  "escalation_matrix": [
   "AI -> Analyst -> Senior Analyst -> Owner -> Property manager's own counsel",
   "Coverage/claims dispute -> Analyst -> Property manager's own licensed staff"
  ],
  "manual_override_rules": [
   "Any manual override captured as an explicit override event with actor + reason",
   "No override may bypass the analyst-signoff or vendor-authorization invariant"
  ],
  "separation_of_duties": [
   "Extraction/Matching/Drafter Agents cannot sign; Analyst cannot draft on behalf of AI without an override event; Senior Analyst cannot silently retract"
  ],
  "quality_control_workflow": [
   "Weekly analyst calibration meeting",
   "Monthly evaluator regression report",
   "Quarterly building-type quirk library re-verification review with owner + compliance"
  ],
  "data_objects": [
   {
    "name": "VacateFile",
    "meaning": "One vendor's vendor invoice for one period",
    "owner_context": "Intake & Normalization",
    "writers": [
     "Extraction Agent",
     "Property manager"
    ],
    "readers": [
     "Deposit analyst",
     "Disposition & Evidence Matching"
    ],
    "source_of_truth": "Intake & Normalization context",
    "retention": "7 years (mirrors standard financial-record retention practice)",
    "privacy": "Sensitive business/financial data, client-isolated",
    "audit": "Every field change logged"
   },
   {
    "name": "Pack",
    "meaning": "One pack cycle's signed source-photo check record",
    "owner_context": "Disposition & Evidence Matching",
    "writers": [
     "Matching Agent",
     "Deposit analyst"
    ],
    "readers": [
     "Property manager",
     "Quality Assurance"
    ],
    "source_of_truth": "Disposition & Evidence Matching context",
    "retention": "7 years",
    "privacy": "Sensitive",
    "audit": "Full version history retained"
   },
   {
    "name": "EvidenceMatrix",
    "meaning": "One cycle's list of classified, evidenced gaps",
    "owner_context": "Disposition & Evidence Matching",
    "writers": [
     "Deduction Drafter Agent",
     "Deposit analyst"
    ],
    "readers": [
     "Property manager",
     "Delivery"
    ],
    "source_of_truth": "Disposition & Evidence Matching context",
    "retention": "7 years",
    "privacy": "Sensitive",
    "audit": "Analyst approval logged per line"
   }
  ],
  "read_models": [
   "OperatorDashboard read model (per tenant): open cycles, in-review, delivered this week",
   "AnalystQueue read model: vendor invoices/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, analyst load"
  ],
  "data_duplication_notes": [
   "Analyst identity is stored in Onboarding, referenced by Quality Assurance — QA does not own it",
   "OwnerActionPack duplicates minimal facts into read models for Disposition & Evidence Matching consumption"
  ],
  "data_retention": [
   "Disposition Packs + evidence matrices + 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 vendor changing its vendor invoice layout",
   "Stale deposit-ledger version AppFolio after a rate change (mitigated by quarterly re-verification)",
   "Missing dispute-support cross-links after a legacy client-history import"
  ],
  "use_cases": [
   {
    "name": "Run a Clock Risk Scan",
    "actor": "Property manager",
    "context": "Intake & Normalization",
    "goal": "Get a matched-percentage and estimated-dollar-value finding within 10 business days",
    "preconditions": [
     "lease & ledger set and 3 months of vendor invoices supplied"
    ],
    "main_flow": [
     "Intake checklist completed",
     "VacateFiles normalized and source-checked",
     "Matching engine runs",
     "Analyst 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 deduction gap ships without analyst approval"
    ],
    "ai_role": "Extraction, matching, classification, drafting",
    "human_role": "Analyst approves and signs",
    "commands": [
     "ReceiveVacateFile",
     "NormalizeVacateFile",
     "RunMatching",
     "ApproveDeduction"
    ],
    "events": [
     "vendor invoice.normalized",
     "pack_cycle.evidence_matched",
     "deduction.analyst_approved"
    ],
    "aggregates": [
     "VacateFileAggregate",
     "LeaseLedgerAggregate",
     "EvidenceMatrixAggregate"
    ],
    "success": "Scan report delivered within SLA with analyst signature",
    "failure_handling": "Missing inputs trigger an automated nag; cycle does not start until complete",
    "audit": "Full audit trail from vendor invoice receipt to report delivery"
   },
   {
    "name": "Deliver a monthly Completeness Desk pack",
    "actor": "Deposit analyst",
    "context": "Delivery",
    "goal": "Ship a signed Itemized Disposition Pack by the 5th business day",
    "preconditions": [
     "Client on an active Completeness Desk tier",
     "Prior cycle's invoice chase notes tracked"
    ],
    "main_flow": [
     "VacateFiles collected and normalized",
     "Matching completed",
     "missing elements approved",
     "Vendor invoice chase notes drafted and sent",
     "Pack signed",
     "Pack delivered"
    ],
    "alternative_flows": [
     "High-value Invoice chase list (>$250) routed to second analyst before finalization"
    ],
    "business_rules": [
     "Statute-element completeness required before signature"
    ],
    "ai_role": "Extraction, matching, classification, invoice chase note drafting",
    "human_role": "Analyst signs; second analyst on high-value invoice chase lists",
    "commands": [
     "RunMatching",
     "ApproveDeduction",
     "SendChaseItem",
     "ReleasePack"
    ],
    "events": [
     "DispositionPack.signed",
     "invoice_chase.sent",
     "pack.delivered"
    ],
    "aggregates": [
     "DispositionPackAggregate",
     "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 invoice-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",
    "disposition-matching",
    "review-delivery",
    "quality-assurance"
   ],
   "frontend_modules": [
    "analyst-console (internal only at launch)",
    "marketing microsite (public)"
   ],
   "api_boundaries": [
    "Internal analyst 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 vendor invoice 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-Property manager book-of-business retrieval + shared per-vendor-format parser/quirk knowledge base",
   "file_storage": "Encrypted object storage, per-client prefix isolation",
   "authn_authz": "SSO with MFA for analysts; row-level tenant auth for Property manager-facing surfaces (year-1 client portal)",
   "admin_dashboard": "Internal only at launch (founder + analyst)",
   "client_portal": "None at launch (email/upload-link delivery); read-only pack-status portal planned year 1",
   "operator_dashboard": "AnalystQueue 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,disposition-matching,review-delivery,quality-assurance}/{domain,application,infra}",
   "modules": [
    {
     "name": "intake-normalization",
     "purpose": "VacateFile receipt, extraction, and source-photo check.",
     "owned_domain": [
      "VacateFile"
     ],
     "application_services": [
      "ReceiveVacateFile",
      "NormalizeVacateFile"
     ],
     "infra_adapters": [
      "Mailbox listener",
      "Object storage adapter",
      "Extraction-model client"
     ],
     "public_interfaces": [
      "vendor invoice.normalized event"
     ],
     "forbidden_deps": [
      "Cannot call disposition-matching internals directly — event only"
     ]
    },
    {
     "name": "disposition-matching",
     "purpose": "Matching, deduction classification, Pack source-photo check.",
     "owned_domain": [
      "Section",
      "EvidenceMatrix",
      "Pack"
     ],
     "application_services": [
      "RunMatching",
      "ApproveDeduction",
      "ReleasePack"
     ],
     "infra_adapters": [
      "spec-export parser",
      "deposit-ledger store"
     ],
     "public_interfaces": [
      "deduction.analyst_approved event",
      "DispositionPack.signed event"
     ],
     "forbidden_deps": [
      "Cannot call review-delivery internals directly — event only"
     ]
    },
    {
     "name": "review-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 dispute-support lifecycle.",
     "owned_domain": [
      "Signoff",
      "dispute-support"
     ],
     "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": "Disposition & Evidence Matching",
     "impact": "severe",
     "control": "Row-level security on every tenant-scoped table; retrieval indices partitioned per Property manager",
     "audit": "Access logged with tenant_id + session_id"
    },
    {
     "risk": "Analyst 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 invoice chase note sent",
     "context": "Delivery",
     "impact": "high",
     "control": "Deterministic filter blocks demand/collection/legal-threat patterns before analyst 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 vendor invoice content treated as untrusted input, never as instructions",
    "Extraction output schema-validated before use downstream"
   ],
   "sensitive_data_handling": [
    "Financial/PII scrubbed from logs",
    "Per-Property manager object-storage prefix isolation",
    "Encryption at rest and in transit"
   ],
   "access_control_matrix": [
    {
     "role": "Property manager",
     "context": "Intake & Normalization",
     "capabilities": [
      "Upload vendor invoices",
      "View own property manager's cycle status"
     ]
    },
    {
     "role": "Deposit analyst",
     "context": "Disposition & Evidence Matching, Quality Assurance",
     "capabilities": [
      "Approve gaps",
      "Sign Packs",
      "Approve invoice chase notes"
     ]
    },
    {
     "role": "Senior Analyst",
     "context": "Quality Assurance",
     "capabilities": [
      "Co-sign dispute-supports",
      "Second-review high-value invoice 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": "Disposition & Evidence Matching",
     "why": "Directly drives analyst minutes per cycle",
     "target": "≥90%",
     "alert_threshold": "<80%"
    },
    {
     "metric": "Analyst minutes per client per cycle",
     "type": "leading",
     "context": "Disposition & Evidence 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, analyst 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 vendor parser"
   ],
   "client_outcome_reports": [
    "Cleared-first report per client per quarter"
   ]
  },
  "testing_strategy": {
   "tests": [
    {
     "type": "unit",
     "validates": "Source-evidence check math and deduction thresholds",
     "context": "Disposition & Evidence 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 vendor invoice per vendor re-run on every prompt change"
    },
    {
     "type": "e2e",
     "validates": "Full intake -> match -> analyst signoff -> delivery path",
     "context": "cross-context",
     "example": "Smoke test against 5 sample vendor invoice formats"
    }
   ],
   "critical_domain_rules": [
    "Statute-element completeness before signature",
    "No deduction gap without a cited source and requirement reference",
    "No invoice chase note without authorization on file"
   ],
   "ai_eval_dataset": [
    "Gold-standard fixture vendor invoices per vendor",
    "Analyst-corrected historical matches and classifications"
   ],
   "regression_plan": "Every parser/prompt/model change re-runs the full fixture suite before touching a live client vendor invoice.",
   "contract_testing_plan": "Per-vendor invoice 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 Invoice chase list over $250 second-reviewed"
   ]
  },
  "mvp_roadmap": [
   {
    "phase": "Thin slice",
    "goal": "One end-to-end Clock Risk Scan delivered and analyst-signed",
    "features": [
     "VacateFile intake",
     "Single-vendor-format extraction",
     "Manual-assisted matching"
    ],
    "contexts": [
     "Intake & Normalization",
     "Disposition & Evidence Matching"
    ],
    "ai_needs": [
     "Extraction Agent v1"
    ],
    "human_workflows": [
     "Founder-run analyst role"
    ],
    "data_needs": [
     "Fixture vendor invoices for 5 formats"
    ],
    "integrations": [
     "None — manual lease & ledger set upload"
    ],
    "risks": [
     "Analyst cycle time far above target at pilot 1"
    ],
    "exit_criteria": [
     "1 scan delivered within 10 business days, analyst-signed"
    ]
   }
  ],
  "scaling_roadmap": [
   {
    "stage": "Pilot (1-10 clients)",
    "trigger": "First 10 pilot property managers onboarded",
    "architecture_change": "None — single monolith suffices",
    "operational_change": "Founder is the sole analyst",
    "risk": "Analyst bottleneck at any volume spike"
   },
   {
    "stage": "Early scale (10-50 clients)",
    "trigger": "Day-90 checkpoint targets met",
    "architecture_change": "Background job queue for vendor invoice extraction",
    "operational_change": "Contract a second deposit analyst",
    "risk": "Parser library coverage gaps on new vendors slow onboarding"
   }
  ],
  "risk_register": [
   {
    "risk": "PMS vendor bundles Completeness 'free' with a invoice invoice chaseflow",
    "likelihood": "medium-high",
    "impact": "high",
    "signal": "Yardi or a competing PMS module adds chase/Delivery features",
    "mitigation": "Portal-agnostic positioning; redelivery/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 deduction gap sent to a vendor",
    "likelihood": "medium",
    "impact": "high",
    "signal": "Vendor disputes an invoice chase note as unfounded",
    "mitigation": "100% analyst approval; evidence-link requirement; invoice chase note-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 analyst-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": "Statute-element 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 analyst 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": "Building-type quirk knowledge base is described but not yet instantiated with real vendor data",
     "improvement": "Populate from the first 5 pilot property managers' actual vendor mixes"
    },
    {
     "category": "ai_governance",
     "score": 4,
     "weakness": "Evaluator regression suite depends on fixture vendor invoices not yet collected at volume",
     "improvement": "Build the fixture library incrementally from each pilot's real (anonymized) vendor invoices"
    },
    {
     "category": "compliance_boundary",
     "score": 3,
     "weakness": "State-by-state collection-Property manager-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",
    "Building-type quirk knowledge base population"
   ],
   "biggest_assumptions": [
    "Scan-to-desk conversion reaches 25-40%",
    "Analyst 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 analyst 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, analyst-gated vertical slice for Deposit14 Clear. Preserve the invariant that no Disposition Pack or invoice chase note leaves the system without a signed human release. Do not launch commercially until owner-action facts close and at least one analyst-released Itemized Disposition 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 Disposition & Evidence Matching or Delivery contexts without OutputValidator pass and citation coverage.",
   "Do NOT ship any public claim on the Deposit14 Clear microsite while owner-action facts (entity, analyst 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": "GOL §7-108 requires a 14-day return + itemized statement or full forfeiture of retention rights; verified against NY Senate statute text and NYS HCR Fact Sheet #9.",
     "evidence_type": "primary-research summary",
     "source": "NY Senate GOL §7-108; NYS HCR Fact Sheet #9",
     "strength": "high",
     "gaps": "None — corroborated across two independent trade-press summaries"
    },
    {
     "claim": "S952B (eff. Nov 15, 2025) extended §7-107 protections to rent-stabilized tenancies; verified against NY Senate S952B and NYC RGB FAQ.",
     "evidence_type": "press + legal filing coverage",
     "source": "NY Senate S952B; NYC RGB Security Deposits FAQ",
     "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-Property manager pilot cohort with explicit pricing conversation",
     "blocking": true
    },
    {
     "assumption": "Analyst minutes per client fall as parser coverage grows",
     "impact_if_wrong": "high — margin target missed",
     "how_to_validate": "Instrument analyst minutes per cycle from pilot 1 onward",
     "blocking": false
    }
   ],
   "language_conflict_map": [
    {
     "term": "pack",
     "meaning_a": "Itemized Disposition Pack (this business's bundled deliverable: Pack + Invoice chase list + report + furnish decisions + posting file)",
     "context_a": "Deposit14 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 'Itemized Disposition Pack' in Deposit14 Clear copy; never bare 'pack' without the qualifier in cross-portfolio contexts"
    }
   ],
   "build_buy_integrate": [
    {
     "subdomain": "Disposition & Evidence 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 vendor disputes an invoice chase note as a collection demand",
     "contexts_touched": [
      "Delivery"
     ],
     "breaks_if": "The collection-language filter has a gap for a novel phrasing",
     "verdict": "Mitigated by analyst approval as a second gate"
    }
   ],
   "unresolved_ownership": [
    {
     "concept": "Trade deduction scope accuracy",
     "candidates": [
      "Property manager",
      "Deposit analyst"
     ],
     "recommendation": "Property manager owns and approves the deduction scope; Deposit14 Clear only computes from it"
    }
   ],
   "published_language_contracts": [
    {
     "producer": "Intake & Normalization",
     "consumer": "Disposition & Evidence Matching",
     "contract": "Canonical normalized vendor invoice schema",
     "versioning": "Schema version pinned per vendor parser release"
    }
   ],
   "shared_kernel_warnings": [
    "None identified — bounded contexts communicate only via events, no shared kernel"
   ],
   "aggregate_stress_tests": [
    {
     "aggregate": "DispositionPackAggregate",
     "scenario": "Concurrent analyst sign attempts on the same Pack",
     "invariant_at_risk": "Statute-element completeness before signature",
     "verdict": "Mitigated by optimistic locking on the aggregate root"
    }
   ],
   "agent_stress_tests": [
    {
     "agent": "Invoice Chase Drafter Agent",
     "scenario": "A vendor's known aggressive collections desk prompts an escalated tone",
     "failure_mode": "Draft reads as a threat despite passing the deterministic filter",
     "guardrail": "Analyst approval catches tone issues the filter misses",
     "verdict": "Acceptable with analyst gate"
    }
   ],
   "regulated_domain_handling": [
    {
     "regime": "NY General Obligations Law §7-108/§7-107",
     "applies_because": "Deposit14 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-Property manager statutes",
     "applies_because": "Vendor invoice chase notes could be miscategorized as third-party debt collection",
     "controls": [
      "Chase emails sent under property manager'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)",
     "Analyst 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": "Analyst minutes not falling with parser coverage",
     "cause": "New vendor 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 vendor"
    }
   ],
   "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": "Analyst identity confirmed",
       "ok": false,
       "evidence": "Pending owner action"
      },
      {
       "name": "Trademark clearance",
       "ok": false,
       "evidence": "Pending owner action"
      }
     ]
    }
   ],
   "contradiction_scan": [
    {
     "id": "C1",
     "severity": "medium",
     "message": "Statewide Day-14 miss-rate has no public audit dataset; not used as a load-bearing go reason (blueprint labels it Unverified/Low).",
     "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": [
      "Disposition & Evidence Matching",
      "Delivery",
      "Evidence & Compliance",
      "Referral & Outreach"
     ],
     "bounded_contexts": [
      "Intake & Normalization",
      "Disposition & Evidence Matching",
      "Delivery",
      "Quality Assurance"
     ],
     "aggregates": [
      "VacateFileAggregate",
      "LeaseLedgerAggregate",
      "EvidenceMatrixAggregate",
      "DispositionPackAggregate",
      "ChaseItemAggregate",
      "AttestationAggregate",
      "DisputeSupportAggregate"
     ],
     "events": [
      "vendor invoice.received",
      "vendor invoice.normalized",
      "pack_cycle.evidence_matched",
      "deduction.analyst_approved",
      "DispositionPack.signed",
      "invoice_chase.sent"
     ],
     "commands": [
      "ReceiveVacateFile",
      "NormalizeVacateFile",
      "RunMatching",
      "ApproveDeduction",
      "ReleasePack",
      "SendChaseItem"
     ],
     "policies": [
      "Auto-route low-confidence match to analyst",
      "Block collection-language patterns",
      "Second-analyst spot check",
      "Auto-escalate aging invoice chase note"
     ],
     "ai_agents": [
      "Extraction Agent",
      "Matching Agent",
      "Deduction Drafter Agent",
      "Invoice Chase Drafter Agent"
     ],
     "invariants": [
      "A Disposition Pack cannot be signed without tying to vendor invoice totals to the penny",
      "A ChaseItem cannot be sent without analyst approval and Property manager authorization on file",
      "No deduction gap is published without a cited source-vendor invoice and statute-element reference",
      "Deposit14 Clear never issues a coverage or claims-adjustment determination"
     ],
     "integrations": [
      "Property management system (PMS) export",
      "vendor invoice portals",
      "Buildium / lease & ledger posting-file import",
      "Vendor invoice mailbox"
     ],
     "adrs": [
      "ADR-001",
      "ADR-002"
     ]
    }
   }
  }
 },
 "ddd_coverage": {
  "slug": "ny-gol-7108-deposit-itemization-deadline-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": "ny-gol-7108-deposit-itemization-deadline-desk",
  "archetypes": [
   "Disposition-and-Delivery workflow application",
   "back-office document-intelligence service"
  ],
  "archetype_impact": "disposition cycle (client + calendar month) is the global scoping parameter — every read/write is scoped by Property manager tenant and cycle, not just tenant alone.",
  "personality": [
   "numerate",
   "calm",
   "evidence-first",
   "no hype"
  ],
  "forces_ranked": [
   {
    "force": "Trust/accuracy (statute-element 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 vendor follow-up at launch trades automation for learning real response patterns first"
  ],
  "quality_scenarios": [
   {
    "attribute": "accuracy",
    "assumption": "Every vendor invoice line traces to its source",
    "target": "Pack source-photo check to the penny before signature, 100% of releases"
   },
   {
    "attribute": "reviewability",
    "assumption": "A analyst can reconstruct any evidence chain quickly",
    "target": "Under 5 minutes to trace any Pack line to its source vendor invoice"
   }
  ],
  "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 invoice-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 analyst console, public marketing microsite.",
   "frontend": "Analyst 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 vendor invoice files",
   "api": "Internal authenticated API for the analyst console; no public API at launch",
   "authn_authz": "SSO + MFA for analysts; row-level auth scaffolding for a future client portal",
   "integrations": "lease & ledger set file ingestion; vendor invoice mailbox/portal; Buildium/lease & ledger posting-file export",
   "background_jobs": "VacateFile extraction, matching, aging-escalation checks",
   "object_storage": "Encrypted, per-client-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 analyst 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": "VacateFile receipt, extraction, and source-photo check.",
    "owned_domain": [
     "VacateFile"
    ],
    "application_services": [
     "ReceiveVacateFile",
     "NormalizeVacateFile"
    ],
    "infra_adapters": [
     "Mailbox listener",
     "Object storage adapter",
     "Extraction-model client"
    ],
    "public_interfaces": [
     "vendor invoice.normalized event"
    ],
    "forbidden_deps": [
     "Cannot call disposition-matching internals directly — event only"
    ],
    "responsibility": "VacateFile receipt, extraction, and source-photo check.",
    "owned_data": [
     "VacateFile"
    ],
    "events_produced": [
     "vendor invoice.normalized event"
    ],
    "events_consumed": [],
    "interfaces": [
     "vendor invoice.normalized event"
    ],
    "depends_on": [],
    "entities": [
     "VacateFile"
    ],
    "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": "disposition-matching",
    "purpose": "Matching, deduction classification, Pack source-photo check.",
    "owned_domain": [
     "Section",
     "EvidenceMatrix",
     "Pack"
    ],
    "application_services": [
     "RunMatching",
     "ApproveDeduction",
     "ReleasePack"
    ],
    "infra_adapters": [
     "spec-export parser",
     "deposit-ledger store"
    ],
    "public_interfaces": [
     "deduction.analyst_approved event",
     "DispositionPack.signed event"
    ],
    "forbidden_deps": [
     "Cannot call review-delivery internals directly — event only"
    ],
    "responsibility": "Matching, deduction classification, Pack source-photo check.",
    "owned_data": [
     "Section",
     "EvidenceMatrix",
     "Pack"
    ],
    "events_produced": [
     "deduction.analyst_approved event",
     "DispositionPack.signed event"
    ],
    "events_consumed": [],
    "interfaces": [
     "deduction.analyst_approved event",
     "DispositionPack.signed event"
    ],
    "depends_on": [],
    "entities": [
     "Section",
     "EvidenceMatrix",
     "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": "review-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 dispute-support lifecycle.",
    "owned_domain": [
     "Signoff",
     "dispute-support"
    ],
    "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 dispute-support lifecycle.",
    "owned_data": [
     "Signoff",
     "dispute-support"
    ],
    "events_produced": [
     "ArtifactSigned event"
    ],
    "events_consumed": [],
    "interfaces": [
     "ArtifactSigned event"
    ],
    "depends_on": [],
    "entities": [
     "Signoff",
     "dispute-support"
    ],
    "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 vendor invoice 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-Property manager-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/invoice 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 vendor invoice 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 analysts",
   "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",
    "Analyst identity spoofing",
    "Prompt injection via uploaded vendor invoices"
   ],
   "abuse_cases": [
    "Bulk fraudulent vendor invoice 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",
    "Vendor portal credential expiry",
    "VacateFile queue backlog at month-end"
   ],
   "graceful_degradation": "Queue and retry rather than fail hard; analyst 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 vendor invoice 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 vendor invoice 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": "Analyst 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-client + per-element 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 vendor",
   "hitl": "Analyst gate on every deduction gap and invoice chase note",
   "guardrails": "Deterministic output filters + structured validation",
   "prompt_injection": "Uploaded vendor invoice 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 deduction 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-evidence check math and deduction 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 analyst 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 vendor",
   "test_data": "Anonymized gold-standard vendor invoice 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, deduction_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%",
    "Analyst minutes >180/cycle"
   ],
   "triage": "On-call reviews alert, checks tenant scope, escalates per runbook"
  },
  "cost": {
   "drivers": [
    {
     "name": "Model inference per vendor invoice",
     "note": "Scales with vendor invoice volume, falls per-vendor invoice as parser coverage grows"
    },
    {
     "name": "Analyst 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-Property manager section list and deposit-ledger 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/invoice 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 Property manager 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 analyst 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 analyst 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 analyst 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 invoice chase notes",
   "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; Property manager-->Intake; Intake-->Completeness; Completeness-->Delivery; Delivery-->QA",
   "container_mermaid": "graph TD; Console-->API; API-->Postgres; API-->ObjectStorage; API-->ModelProvider",
   "data_flow_mermaid": "graph LR; VacateFile-->Extraction-->Matching-->EvidenceMatrix-->Pack-->Pack",
   "auth_flow_mermaid": "graph LR; Analyst-->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; VacateFileExtracted-->Evidence matchCompleted-->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; VacateFile-->ExtractionAgent-->MatchingAgent-->DrafterAgent-->Analyst"
  },
  "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 analyst-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": "Statute-element 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 analyst 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 Property manager LOIs",
     "Evidence pack from each pilot Property manager",
     "Written ICP + pricing hypothesis"
    ],
    "exit_criteria": [
     "≥3 LOIs signed",
     "Owner-action Pack populated per Property manager",
     "Analyst identity confirmed"
    ],
    "kill_criteria": [
     "<2 LOIs after 2 weeks",
     "No willingness-to-pay signal above pilot price"
    ],
    "build": [
     "3-5 pilot Property manager LOIs",
     "Evidence pack from each pilot Property manager",
     "Written ICP + pricing hypothesis"
    ],
    "defer": [],
    "monitor": [
     "≥3 LOIs signed",
     "Owner-action Pack populated per Property manager",
     "Analyst 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 -> analyst signoff -> delivery working end-to-end for one lease & ledger format",
     "Audit trail wired",
     "Instrumentation live"
    ],
    "exit_criteria": [
     "1 real Clock Risk Scan delivered + analyst-signed",
     "p95 workflow latency published"
    ],
    "kill_criteria": [
     "Analyst signoff cycle >10 business days",
     "Evidence bundle cannot be reconstructed on demand"
    ],
    "build": [
     "Intake -> match -> analyst signoff -> delivery working end-to-end for one lease & ledger format",
     "Audit trail wired",
     "Instrumentation live"
    ],
    "defer": [],
    "monitor": [
     "1 real Clock Risk Scan delivered + analyst-signed",
     "p95 workflow latency published"
    ],
    "avoid": [
     "Analyst signoff cycle >10 business days",
     "Evidence bundle cannot be reconstructed on demand"
    ],
    "acceptable_debt": "Manual vendor follow-up and onboarding at pilot scale",
    "dangerous_debt": "Skipping the analyst-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 property managers 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 property managers 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 vendor follow-up and onboarding at pilot scale",
    "dangerous_debt": "Skipping the analyst-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-evidence 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%",
     "Analyst minutes per client not falling with volume"
    ],
    "build": [
     "Public commercial launch of the microsite as 'ready'",
     "Rush rider and Diligence Source-evidence 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%",
     "Analyst minutes per client not falling with volume"
    ],
    "acceptable_debt": "Manual vendor follow-up and onboarding at pilot scale",
    "dangerous_debt": "Skipping the analyst-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-client and per-element lookup."
    },
    {
     "item": "Microservices per bounded context",
     "why": "Premature operational complexity for a founder-operated launch.",
     "simpler": "Modular monolith with enforced module boundaries."
    }
   ]
  },
  "risks": [
   {
    "risk": "PMS vendor bundles Completeness 'free' with a invoice invoice chaseflow",
    "likelihood": "medium-high",
    "impact": "high",
    "mitigation": "Portal-agnostic positioning; redelivery/chase as the human moat",
    "detection": "Yardi or a competing PMS module adds chase/Delivery features",
    "owner": "owner",
    "escalation": "Analyst -> Senior Analyst -> Owner -> Counsel",
    "fallback": "Portal-agnostic positioning; redelivery/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": "Analyst -> Senior Analyst -> Owner -> Counsel",
    "fallback": "Pilot gate at 25%; alternative packaging tested in cohort 2",
    "category": "business"
   },
   {
    "risk": "False-positive deduction gap sent to a vendor",
    "likelihood": "medium",
    "impact": "high",
    "mitigation": "100% analyst approval; evidence-link requirement; invoice chase note-not-demand language",
    "detection": "Vendor disputes an invoice chase note as unfounded",
    "owner": "legal",
    "escalation": "Analyst -> Senior Analyst -> Owner -> Counsel",
    "fallback": "100% analyst approval; evidence-link requirement; invoice chase note-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 analysts",
    "ai_approach": "Scripted extraction/matching/drafting pipeline with analyst gates",
    "integrations": "lease & ledger set ingestion, vendor invoice intake, Buildium/lease & ledger posting export",
    "build_first": [
     "Intake & Normalization",
     "Disposition & Evidence Matching"
    ],
    "revisit_later": [
     "Client-facing portal",
     "Public API"
    ],
    "avoid": [
     "Microservices",
     "Vector search at this scale"
    ],
    "biggest_risks": [
     "Analyst 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",
     "Analyst gate on every client- or vendor-facing output"
    ],
    "first_10_steps": [
     "Confirm the named deposit analyst + 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 -> analyst signoff loop",
     "Wire append-only audit log + hash-chained snapshots",
     "Add row-level auth + tenant-scoped retrieval indices",
     "Instrument scan-request, pack-delivery, and analyst-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": "ny-gol-7108-deposit-itemization-deadline-desk",
  "archetypes": [
   "Pack / Completeness Desk",
   "back-office trust interface"
  ],
  "user_mindset": {
   "goals": "Find out fast whether vendors are shipping incomplete vendor invoice 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 vendor invoice line to Pack to signature"
  },
  "posture": [
   "calm",
   "numerate",
   "institutional-but-warm"
  ],
  "density": "compact",
  "trust_level": {
   "tier": "high",
   "sensitive_domains": [
    "Property manager financial data",
    "tenant dispute data"
   ],
   "implications": [
    "Every dollar figure must show its source",
    "No fabricated proof; honest placeholder slots until real cycles ship"
   ]
  },
  "differentiation": {
   "avoid": [
    "Proptech-startup gradient look",
    "Stock apartment-keys / handshake imagery",
    "Insurtech teal clones of sibling desks"
   ],
   "strategy": "A ledger-desk aesthetic — deep indigo/navy against clean white with a rose 'deadline' accent and a countdown motif — numerate and calm, not consumer-app playful."
  },
  "territories": [
   {
    "name": "Deposit Desk",
    "color_mood": "deep indigo/navy + clean white + rose deadline accent",
    "typography": "Serif numerals, sans body",
    "density": "compact",
    "component_feel": "ledger-like, artifact-shaped cards with a countdown panel",
    "motion": "minimal, calm",
    "fits": "Deposit/back-office trust interfaces with a hard clock",
    "risks": "Navy can read formal; kept warm with generous spacing and plain language"
   },
   {
    "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": "Deposit Desk",
  "chosen_rationale": "The Itemized Disposition Pack is the deliverable; a calm indigo deposit-desk metaphor with a rose deadline accent keeps the 14-day clock front and center and stays visually distinct from sibling desks.",
  "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": "224 64% 33%",
   "brand-fg": "216 33% 97%",
   "surface": "0 0% 100%",
   "ink": "222 30% 14%",
   "muted": "220 13% 40%",
   "accent": "346 77% 45%"
  },
  "type": {
   "display": "Iowan Old Style (system serif stack)",
   "body": "system-ui",
   "fonts_url": ""
  },
  "signature": {
   "motif": "An unlinked move-out photo resolving into a deduction line linked to its vendor invoice, over a Day-0→Day-14 countdown.",
   "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 / late on the 14-day clock (state-risk)",
   "pending analyst or PM approval (state-pending)",
   "blocked / missing evidence (state-blocked)"
  ],
  "uniqueness_audit": {
   "app_specific_decisions": [
    "Pack-teal + amber palette distinct from the portfolio's other palettes",
    "VacateFile-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": "ny-gol-7108-deposit-itemization-deadline-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 vendor-format and deduction gap-classification specifics, evergreen (not deadline-driven) content cadence.",
  "authority_dna": {
   "site_archetype": "outcome-priced back-office authority site",
   "monetization_model": "B2B lead -> Clock Risk Scan -> paid Completeness Desk engagement (not ad revenue; not affiliate).",
   "main_search_intents": [
    "informational",
    "commercial"
   ],
   "topical_authority_opportunity": "Own the \"New York property management deposit disposition completeness\" topic cluster by covering direct-bill vendor invoice formats, building-type quirk patterns, deduction classification, and tenant/court-comment disputes better than any single trade-press explainer.",
   "local_seo_opportunity": "Not justified: buyers search by problem/PMS, not by city.",
   "global_national_opportunity": "National (US-first); state New York deposit regulation varies but the core service is not state-gated.",
   "easiest_ranking_path": "Long-tail, vendor-specific and spec-specific queries (\"Neudash workflows direct bill Completeness\", \"why is my vendor invoice short\") where the SERP is dominated by vendor blog posts, not buyer-first guides.",
   "hardest_ranking_path": "Head terms like \"New York property management deposit software\" — dominated by aged SaaS vendor domains (AppFolio, Roost, Core deposit dispositions).",
   "trust_credibility_requirements": [
    "Named human analyst with role + credentials",
    "Vendor/vendor invoice 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-building-type and per-element how-to pages with real anonymized teardown evidence, refreshed as the parser library grows."
  },
  "search_market": {
   "primary_markets": [
    "New York property management deposit disposition completeness service",
    "NY security deposit disposition Delivery",
    "Clock Risk Scan"
   ],
   "secondary_markets": [
    "tenant deduction dispute resolution",
    "PM portfolio M&A deposit-file diligence",
    "lease & ledger deposit disposition completeness how-to"
   ],
   "low_competition_subtopics": [
    "vendor-specific vendor invoice quirks",
    "market-rate vs rent-stabilized missing-docs risk",
    "Neudash workflows/Roost direct bill Completeness how-to"
   ],
   "high_commercial_intent": [
    "done-for-you deposit disposition completeness service",
    "outsource New York property management deposit disposition completeness",
    "Disposition redelivery service for New York property management property managers"
   ],
   "informational": [
    "what is NY deposit disposition completeness",
    "how to complete New York property management deposit-file vendor invoices",
    "why is my vendor invoice short"
   ],
   "local_intent": [],
   "transactional": [
    "Clock Risk Scan pricing",
    "book a deposit disposition completeness consultation"
   ],
   "comparison": [
    "deposit disposition completeness service vs software",
    "Deposit14 Clear vs AppFolio deposit dispositions vs Neudash"
   ],
   "problem_solution": [
    "vendor rejected my deposit-file what to do",
    "tenant deduction dispute resolution"
   ],
   "near_me": [],
   "long_tail": [
    "Neudash workflows NY deposit disposition completeness",
    "as-earned deposit-file redelivery explained",
    "AppFolio deposit disposition completeness how-to"
   ],
   "questions": [
    "what records does a deposit disposition completeness need?",
    "who reviews a Clock Risk Scan?",
    "how long does deposit disposition completeness take?"
   ],
   "emerging": [
    "AI-assisted vendor invoice extraction",
    "automated invoice chase note drafting"
   ],
   "seasonal": [
    "tax-season lease & ledger set cleanup",
    "PM portfolio M&A diligence season deposit-file verification"
   ],
   "underserved_serps": [
    "vendor-specific vendor invoice quirks",
    "tenant deduction dispute resolution"
   ],
   "weak_serps": [
    "deposit disposition completeness self-check",
    "deposit disposition completeness checklist"
   ],
   "forum_dominated_serps": [
    "why is my vendor invoice short",
    "vendor redelivery explained"
   ],
   "winnable_authoritative_serps": [
    "NY deposit disposition completeness definitive guide",
    "Clock Risk Scan evidence requirements"
   ],
   "avoid_initially": [
    "New York property management deposit software",
    "best deposit tracking tools"
   ],
   "easy_wins": [
    "vendor-specific vendor invoice quirks",
    "deposit disposition completeness checklist",
    "tenant deduction dispute anatomy"
   ],
   "moderate": [
    "NY deposit disposition completeness definitive guide",
    "PM portfolio M&A deposit-file diligence"
   ],
   "long_term_plays": [
    "New York property management deposit software comparison",
    "portfolio-level multi-Property manager Completeness"
   ],
   "do_not_pursue": [
    "generic \"how to start a deposit-ops business\" content",
    "celebrity or trend-jacking posts",
    "AI-generated listicles"
   ]
  },
  "keyword_clusters": [
   {
    "primary": "NY deposit disposition completeness service",
    "related": [
     "done-for-you deposit disposition completeness",
     "outsource deposit disposition completeness"
    ],
    "intent": "commercial",
    "user_problem": "Property manager suspects vendor 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-Property manager-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": "Clock Risk Scan",
    "related": [
     "deposit disposition completeness self-check",
     "how much deposit-file 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 New York property management vendor invoice short",
    "related": [
     "vendor invoice missing",
     "tenant deduction dispute"
    ],
    "intent": "informational",
    "user_problem": "Immediate confusion moment after a light vendor vendor invoice",
    "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 deposit disposition completeness — definitive guide",
    "Building-type quirk & deduction classification library",
    "tenant deduction dispute resolution"
   ],
   "pillars": [
    {
     "name": "Direct-bill deposit disposition completeness — definitive guide",
     "core_intent": "informational",
     "audience": "Property managers and ops managers",
     "conversion_goal": "Self-check / scan request",
     "supporting_pages": [
      "What a redelivery should look like on your Pack",
      "As-earned vs annualized missing-docs risk",
      "vendor invoice formats explained"
     ],
     "internal_links": [
      "/",
      "/resources/self-check"
     ],
     "schema": [
      "Article",
      "BreadcrumbList",
      "FAQPage (where genuine)"
     ],
     "evidence_needed": [
      "Named analyst",
      "Primary-source citations",
      "Worked example"
     ],
     "local_variants": [],
     "national_variants": [
      "US-national (default)"
     ]
    },
    {
     "name": "Clock Risk Scan evidence & trust",
     "core_intent": "commercial",
     "audience": "Property managers",
     "conversion_goal": "Book a scan",
     "supporting_pages": [
      "Anatomy of a Clock Risk Scan",
      "One vendor, 12 months, $X missing"
     ],
     "internal_links": [
      "/#diagnostic",
      "/resources/evidence"
     ],
     "schema": [
      "Article",
      "FAQPage",
      "BreadcrumbList"
     ],
     "evidence_needed": [
      "Worked evidence artifact",
      "Analyst 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": [
    "/ny-gol-7108-deposit-itemization-deadline-desk/"
   ],
   "avoid_url_patterns": [
    "Thin per-element programmatic pages with no unique evidence"
   ]
  },
  "global_national": {
   "national_clusters": [
    "Direct-bill deposit disposition completeness"
   ],
   "linkable_assets": [
    "deposit disposition completeness self-check calculator"
   ],
   "original_research_ideas": [
    "Aggregate pilot-cohort missing-docs risk statistics once cohort completes"
   ],
   "international_needed": false,
   "international_notes": "US-only residential property management regulation; no international expansion in scope"
  },
  "local_seo": {
   "justified": false,
   "reason": "Buyers search by problem/PMS, 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": "/ny-gol-7108-deposit-itemization-deadline-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 analyst (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 analyst 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": [
    "Deposit14 Clear",
    "Itemized Disposition Pack",
    "Clock Risk Scan"
   ],
   "related_entities": [
    "Roost",
    "Neudash",
    "Frontdesk AI",
    "AppFolio",
    "Buildium",
    "Yardi"
   ],
   "people": [
    "Named deposit analyst (pending owner action)"
   ],
   "orgs": [
    "NYS HCR",
    "NYC Rent Guidelines Board"
   ],
   "tools": [
    "Roost",
    "Neudash",
    "Frontdesk AI",
    "AppFolio",
    "Buildium"
   ],
   "regulations": [
    "NY GOL §7-108",
    "NY GOL §7-107 / S952B (eff. Nov 15, 2025)"
   ],
   "problems": [
    "security deposit forfeiture",
    "late or incomplete itemized statement"
   ],
   "solutions": [
    "Itemized Disposition Pack",
    "Clock Risk Scan"
   ],
   "processes": [
    "Intake",
    "Evidence matching",
    "Deposit-analyst review",
    "Delivery"
   ],
   "alternatives": [
    "Enterprise SaaS",
    "BPO services",
    "Specialist deposit-ops firms"
   ],
   "synonyms": [
    "deposit disposition",
    "itemized deduction statement",
    "14-day deposit return"
   ]
  },
  "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 analyst bio pending owner action",
   "expert_reviewers": "Named deposit analyst",
   "editorial_policy": "Facts cited to primary/trade-press sources; vendor-sponsored claims labeled",
   "fact_checking": "Quarterly re-verification cadence",
   "credentials": [
    "Deposit analyst 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 Clock Risk Scan",
   "secondary_cta": "See how a pack is built",
   "lead_magnets": [
    "Clock Risk Scan (vacate-file triage)",
    "NY Day-14 Disposition Checklist PDF"
   ],
   "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 missing-docs risk statistics as original research"
   ],
   "original_research": [
    "Average missing-docs risk by trade/section mix (post-pilot)"
   ],
   "directories": [
    "State Atenant/court/ABC association vendor resource photo/invoices"
   ],
   "expert_contributions": [
    "Guest posts on NY property-management 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": [
     "NY deposit disposition 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-lease & ledger how-tos"
    ],
    "keywords_targeted": [
     "vendor-specific vendor invoice 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": "Deposit14 Clear homepage",
    "slug": "/ny-gol-7108-deposit-itemization-deadline-desk/",
    "page_type": "pillar/service",
    "primary_keyword": "NY deposit disposition completeness service",
    "secondary_keywords": [
     "Clock Risk Scan"
    ],
    "intent": "commercial",
    "funnel": "BOFU",
    "business_value": "high",
    "difficulty": "medium",
    "conversion_potential": "high",
    "cta": "Start a free Clock 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 deposit-ops content"
   ],
   "common_weaknesses": [
    "Written for large brokers, not the $500K-$5M Property manager",
    "No vendor-specific evidence"
   ],
   "how_to_beat_them": [
    "Publish small-client-specific, vendor-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-analyst attribution",
    "applies": true,
    "mitigation": "Named analyst attribution and quarterly re-verification"
   },
   {
    "risk": "Competitor content targeting the same small-Property manager segment",
    "applies": true,
    "mitigation": "Named analyst attribution and quarterly re-verification"
   }
  ],
  "first_20_pages": [
   "Homepage",
   "deposit disposition completeness self-check",
   "Vendor VacateFile 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, analyst identity, trademark clearance) close; then pursue a narrow, evidence-first authority strategy targeting the $500K-$5M Property manager segment the enterprise SEO content ignores.",
  "disclaimers": [
   "Not legal advice; not a law firm; not a legal opinion on any disposition.",
   "Documentation-preparation service; the landlord/property manager remains the statutory actor under GOL §7-108/§7-107.",
   "Statutory references provided for context; figures attributed to named public sources; proof metrics are placeholders until pilot packs ship."
  ]
 },
 "microsite": {
  "category": "New York residential property management — security deposit disposition compliance",
  "shortTitle": "Deposit14 Clear",
  "audience": "New York residential property managers and owners (80–800 doors) running move-out security-deposit dispositions",
  "problem": "A New York landlord must return the deposit balance and deliver a written itemized statement within 14 days of vacatur, or forfeit the right to retain any portion — even for real, photographed, invoiced damage. Late vendor invoices, photos scattered across chat threads, and summer PTO make the clock fail exactly when turnover peaks.",
  "offer": "With Deposit14 Clear, property managers stop assembling itemized statements by hand and get a landlord-ready Itemized Disposition Pack — deduction lines mapped to photo and invoice evidence, an interest note where required, a Day-14 countdown, and a delivery-proof checklist — reviewed by a deposit analyst and ready to approve and send.",
  "faq": [
   {
    "q": "Do you guarantee we win if the tenant disputes the charges?",
    "a": "No. We guarantee completeness — that your pack has the deduction lines, the photo-to-invoice evidence, the interest note where required, and the delivery-proof steps, assembled inside the 14-day window. Whether the tenant disputes is up to them; a complete, source-cited pack makes a dispute far less likely to succeed."
   },
   {
    "q": "Is this legal advice?",
    "a": "No. Deposit14 Clear is a documentation-preparation service, not a law firm. We assemble the pack; you remain the statutory actor who approves the deductions, signs, sends, and attests the facts. Disputed or punitive-exposure files are routed to a NY landlord-tenant attorney."
   },
   {
    "q": "Do you send the statement and refund to the tenant for us?",
    "a": "No. You send. We deliver the finished pack with a send checklist and a delivery-proof template; you issue the statement and the refund and log the proof. Keeping you as the actor keeps you inside the licensing boundary."
   },
   {
    "q": "We manage rent-stabilized units. Did S952B change what we owe?",
    "a": "Yes. Effective November 15, 2025, S952B extended the 14-day return, itemization, and inspection-rights framework more clearly into rent-stabilized tenancies under GOL §7-107. Our checklist has a separate rent-stabilized branch."
   },
   {
    "q": "How is deposit interest handled for larger buildings?",
    "a": "For buildings with 6 or more units, deposits are held in an interest-bearing account and the tenant is owed the interest earned, less a 1% administrative allowance, with the bank disclosed. The pack computes that interest deterministically and drafts the disclosure line, flagging anything it can't confirm."
   },
   {
    "q": "The last vendor invoice always arrives late. What then?",
    "a": "The pack shows exactly which evidence is present and which is still outstanding — a missing invoice is flagged on a chase list, never silently guessed — so you decide, on the record, how to handle a good-faith deduction without letting the clock run out."
   },
   {
    "q": "Can we share lease and ledger data with an outside vendor?",
    "a": "Your documents are handled as confidential business records under a data-processing agreement, with per-client isolation, PII-redaction defaults, and defined retention limits. We keep only the fields needed to build the pack."
   },
   {
    "q": "How fast is a pack?",
    "a": "Standard target is the pack released to you by Day 7 of vacatur; a rush rider gets it to you in under 72 hours. Delivery to the tenant by Day 14 is your send, on your schedule."
   },
   {
    "q": "How do you price it?",
    "a": "Per completed pack — $129 beachhead, $79–$199 range, rush +$49–$79 — or a Portfolio Continuity Desk retainer. Never by the hour and never a percentage of the deposit."
   }
  ],
  "process": [
   {
    "title": "Send the vacate file",
    "body": "Drop the signed lease, the deposit ledger export, move-in and move-out photos, vendor invoices or estimates, and the forwarding address into one secure folder. The 14-day countdown starts from your confirmed vacate date."
   },
   {
    "title": "We assemble the pack",
    "body": "Documents are normalized, photos time-sorted, and each intended deduction line matched to its supporting photo and vendor invoice. Missing evidence is flagged on a chase list, not guessed."
   },
   {
    "title": "A deposit analyst reviews",
    "body": "An analyst checks wear-and-tear vs. damage language, confirms the line math against invoices, computes the interest note for 6+ unit buildings, and routes any legal-edge file to a counsel referral."
   },
   {
    "title": "You approve and send",
    "body": "You approve the deductions, send the itemized statement and refund, and log the delivery proof. You remain the statutory actor — we never send on your behalf."
   },
   {
    "title": "Close and keep the record",
    "body": "The full pack — deduction lines, evidence matrix, interest note, and delivery-proof entry — is retained as the record if the tenant ever disputes."
   }
  ],
  "northStarCta": {
   "label": "Start a free Clock Risk Scan",
   "href": "#scan",
   "secondary_label": "See how a pack is built",
   "secondary_href": "#how"
  },
  "trust": {
   "standards": [
    "Documentation-preparation service — not a law firm, not legal advice, no fund custody, no debt collection.",
    "The property manager remains the statutory actor under GOL §7-108/§7-107 and approves and sends every statement.",
    "Fixed per-pack pricing — never a percentage of the deposit retained, never hourly."
   ],
   "response_time": "Pack released to the PM by Day 7 of vacatur (target); 48–72h rush rider available.",
   "data_handling": "Leases, ledgers, photos, and invoices treated as confidential business records under a data-processing agreement, with per-client isolation, PII-redaction defaults, and defined retention limits."
  },
  "hook": "A free Clock Risk Scan tells you exactly where a disposition would forfeit — before the 14 days run out.",
  "sub_headline": "You send the vacate file — lease, ledger, move-in/out photos, vendor invoices, forwarding address — and get back a landlord-ready Itemized Disposition Pack you approve and send.",
  "dream_outcome": "The itemized statement and refund go out before Day 14, every legitimate deduction survives, and the record proves it.",
  "specific_pains": [
   "A late vendor invoice arrives on Day 12, after the statement was supposed to be drafted.",
   "Move-out photos live in three phones and a text thread, none tied to a deduction line.",
   "A vague 'normal wear' phrase in the statement becomes a tenant's small-claims win.",
   "A 6+ unit building's required interest note was never computed or disclosed.",
   "A rent-stabilized unit's post-S952B process was never added to the SOP."
  ],
  "cost_of_inaction": "Miss the Day-14 dual requirement and New York treats the landlord as having forfeited the right to retain any portion of the deposit — one month's rent, often $2,000–$4,500+ in NYC — with up to 2× punitive exposure for a willful violation.",
  "mechanism": {
   "name": "The Deposit14 Clear pack-cycle engine",
   "steps": [
    {
     "title": "Intake: send the vacate file",
     "body": "Send the lease, deposit ledger, move-in/out photos, vendor invoices, and forwarding address; the Day-14 countdown starts from the confirmed vacate date."
    },
    {
     "title": "Normalize & match",
     "body": "OCR and time-sort photos, parse vendor invoices, and match each deduction line to its photo and invoice; unit and deposit figures reconciled to the ledger."
    },
    {
     "title": "Deterministic gates",
     "body": "Day-14 math, required statutory elements, and the interest-note calculation run as deterministic rules; missing forwarding address or zero photo coverage blocks release."
    },
    {
     "title": "Deposit-analyst review",
     "body": "An analyst reviews contested wear-and-tear vs. damage lines, confirms invoice totals, and escalates legal-edge files to a counsel referral."
    },
    {
     "title": "Release with send checklist",
     "body": "The pack ships with a Day-14 status card and a certified-mail / email + ACH delivery-proof checklist for you to execute."
    }
   ]
  },
  "offer_stack": [
   {
    "item": "Itemized statement draft",
    "note": "Every deduction in statute-aware language, not vague 'normal wear.'"
   },
   {
    "item": "Evidence matrix",
    "note": "Each deduction line crosswalked to its move-out photo and vendor invoice."
   },
   {
    "item": "Interest note",
    "note": "Annual interest (minus 1% admin) computed for 6+ unit buildings, with the bank-disclosure line."
   },
   {
    "item": "Day-14 countdown",
    "note": "A Day-0→Day-14 status card keyed to the confirmed vacate date."
   },
   {
    "item": "Delivery-proof checklist",
    "note": "Certified-mail / email + ACH steps with a proof-capture line."
   }
  ],
  "guarantee": "If a pack we release to you as complete is missing a required statutory element on our checklist, we rebuild it free. We never price on a percentage of the deposit retained and never bill by the hour.",
  "urgency": "There is a single hard clock: 14 calendar days from vacatur to both return the balance and deliver the itemized statement. Miss it and the retention right is forfeited — no grace period.",
  "objections": [
   {
    "q": "Can't our lease admin just do this in the PMS?",
    "a": "They can — until summer turnover, PTO, and a Day-12 invoice collide. We are the surge desk and the evidence-QA layer, not another tool your admin has to operate."
   },
   {
    "q": "Isn't this unauthorized practice of law?",
    "a": "No. We prepare documentation; you approve and send as the statutory actor, and disputed files route to counsel. We never advise on legal strategy or contact the tenant."
   },
   {
    "q": "What if the tenant sues anyway?",
    "a": "A complete, source-cited pack with photo-to-invoice linkage is exactly what makes a deduction survive small claims. We don't promise outcomes; we make the record defensible."
   },
   {
    "q": "We're rent-stabilized — does this even apply to us?",
    "a": "Yes, and more than before: S952B (eff. Nov 15, 2025) extended the framework into rent-stabilized tenancies under §7-107. Our checklist has a dedicated branch for those files."
   }
  ],
  "who_this_is_not_for": [
   "Landlords wanting legal claims prosecuted or a contingency / percentage-of-deposit arrangement.",
   "Operators who want us to contact the tenant or send the statement on their behalf.",
   "Portfolios outside New York (the CA sibling desk covers Civ. Code §1950.5 / 21-day rules)."
  ],
  "proof_pillars": [
   {
    "title": "Deterministic completeness gates",
    "body": "Hard fails on missing forwarding address, unlinked deduction lines, or zero photo coverage on a claimed room block release."
   },
   {
    "title": "Deposit-analyst sign-off",
    "body": "No pack ships without an analyst review of wear-and-tear vs. damage language when deductions exceed $250 or a structural/mold claim is present."
   },
   {
    "title": "Evidence-linked record",
    "body": "Every deduction line traces to a move-out photo and a vendor invoice, retained as the record if a tenant disputes."
   }
  ],
  "stakes_line": "Late means forfeited: New York does not fix your statement, and a missed Day-14 send erases the right to retain any portion of the deposit.",
  "deliverable": "Itemized Disposition Pack",
  "unit_of_work": "vacate file",
  "lexicon": {
   "regulator": "The New York 14-day deposit clock (GOL §7-108 / §7-107)",
   "regulator_full": "New York General Obligations Law §7-108 (and §7-107 for rent-stabilized tenancies), which requires the landlord to return the balance and deliver a written itemized statement within 14 days of vacatur or forfeit the right to retain any portion.",
   "statute": "GOL §7-108 / §7-107 — the 14-day itemization-and-return requirement",
   "statute_frame": "the intake-to-delivery workflow where an incomplete or late pack forfeits legitimate deductions",
   "persona": "Property Manager / Deposit Specialist",
   "persona_moment": "You run deposit dispositions for an 80–800 door NY portfolio and a summer wave of move-outs just hit.",
   "trigger_moment": "keys returned / vacate confirmed with intended deductions over $0, and the 14-day clock is running",
   "enforcement_stakes": "the itemized statement or refund misses Day 14, and the landlord forfeits the right to retain any portion of the deposit — plus up to 2× punitive exposure for a willful violation",
   "retention": "the full record of every pack, evidence-matrix line, interest note, and delivery-proof entry",
   "cta_verb": "Start a free Clock Risk Scan",
   "intake_checklist": [
    "The signed lease and the deposit ledger export",
    "Move-in and move-out photos for every room with a claimed deduction",
    "Vendor invoices or estimates for each repair or cleaning charge",
    "The tenant's forwarding address and the confirmed vacate date"
   ],
   "regulator_faqs": [
    {
     "q": "Does Deposit14 Clear send the statement to the tenant on our behalf?",
     "a": "No. We deliver the pack with a send checklist; you issue the statement and refund and log the delivery proof."
    },
    {
     "q": "Does Deposit14 Clear decide what is lawful to deduct?",
     "a": "No. We assemble and flag; you approve every deduction and attest the facts as the statutory actor."
    }
   ],
   "trust_standards_specific": [
    "The property manager attests all deductions, amounts, and facts before sending.",
    "We never take custody of deposit funds and never price on a percentage of the deposit."
   ]
  },
  "proof_angle": {
   "id": "day14-readiness",
   "headline": "The Day-14 send lands on a complete, source-cited Itemized Disposition Pack.",
   "lever": "Deposit14 Clear stores every deduction line, evidence-matrix link, interest note, and delivery-proof entry.",
   "outcome_verb": "clears",
   "outcome_frame": "the statement and refund clear the 14-day clock with every legitimate deduction intact",
   "proof_promise": "On-time Day-14 delivery rate and first-pass completeness will be published here once pilot packs ship."
  },
  "indexable": true,
  "ubiquitousLanguage": {
   "audience": "New York residential property managers and owners (80–800 doors) running move-out security-deposit dispositions",
   "domain": "New York residential security-deposit disposition completeness",
   "deliverable": "Itemized Disposition Pack + deposit-analyst review",
   "reviewer": "deposit analyst",
   "record": "disposition pack record register",
   "unit_of_work": "vacate file",
   "cta_primary": "Start a free Clock Risk Scan",
   "cta_secondary": "See how a pack is built",
   "regulator": "The New York 14-day deposit clock (GOL §7-108 / §7-107)",
   "regulator_full": "New York General Obligations Law §7-108 (and §7-107 for rent-stabilized tenancies), under the 14-day itemization-and-return requirement",
   "statute": "GOL §7-108 / §7-107 — the 14-day itemization-and-return requirement",
   "trigger_moment": "a confirmed vacate with intended deductions, a summer turn wave, or a rent-stabilized unit under the new S952B process",
   "event_intake_started": "domain.diagnostic_requested",
   "event_conversation_requested": "domain.diagnostic_requested"
  }
 },
 "evidence": [
  {
   "id": "ny-gol-7108-deposit-itemization-deadline-desk-e1",
   "business_slug": "ny-gol-7108-deposit-itemization-deadline-desk",
   "area": "Identity",
   "claim_or_finding": "Operating entity to be declared by owner (brand: Deposit14 Clear) before any public trust claim.",
   "status": "pending-owner-action",
   "evidence": "Owner supplies entity, registered address, and support channel.",
   "verification_command": "Owner submits entity + jurisdiction pack.",
   "fix_owner": "owner",
   "remediation": "Confirm entity, registered address, and support channel before removing the launch noindex.",
   "severity": "low"
  },
  {
   "id": "ny-gol-7108-deposit-itemization-deadline-desk-e2",
   "business_slug": "ny-gol-7108-deposit-itemization-deadline-desk",
   "area": "Regulatory",
   "claim_or_finding": "GOL §7-108 requires return of the balance and a written itemized statement within 14 days of vacatur or forfeiture of the right to retain any portion; up to 2× punitive damages for a willful violation.",
   "status": "verified",
   "evidence": "NY Senate GOL §7-108 statute text; NYS HCR Fact Sheet #9; verified via fresh 2026-07-15 fetch of nysenate.gov.",
   "verification_command": "Fetch nysenate.gov/legislation/laws/GOB/7-108 and confirm the 14-day and forfeiture language.",
   "fix_owner": "none",
   "remediation": "Re-verify quarterly; monitor for statutory amendment softening forfeiture.",
   "severity": "low"
  },
  {
   "id": "ny-gol-7108-deposit-itemization-deadline-desk-e3",
   "business_slug": "ny-gol-7108-deposit-itemization-deadline-desk",
   "area": "Regulatory",
   "claim_or_finding": "S952B extended 14-day return, itemization, and inspection protections to rent-stabilized tenancies under GOL §7-107, effective November 15, 2025.",
   "status": "verified",
   "evidence": "NY Senate S952B; NYC Rent Guidelines Board Security Deposits FAQ; 2026 NY PM guides. Confirmed via fresh 2026-07-15 search.",
   "verification_command": "Confirm S952B amendment B and RGB FAQ reflect the §7-107 expansion and effective date.",
   "fix_owner": "none",
   "remediation": "Maintain a separate rent-stabilized checklist branch; re-verify quarterly.",
   "severity": "low"
  },
  {
   "id": "ny-gol-7108-deposit-itemization-deadline-desk-e4",
   "business_slug": "ny-gol-7108-deposit-itemization-deadline-desk",
   "area": "Market",
   "claim_or_finding": "NYC has ~2.32M renter-occupied units (2023 NYCHVS / RGB 2025) and ~4,652 NY property-management companies (Rentech Digital, Apr 2026) — a dense, high-turnover deposit market.",
   "status": "verified-medium",
   "evidence": "2023 NYCHVS Selected Initial Findings; RGB 2025 Housing Supply Report; Rentech Digital NY PM directory.",
   "verification_command": "Re-check NYCHVS/RGB figures and the directory count at next quarterly pass.",
   "fix_owner": "owner",
   "remediation": "Label market figures with source and methodology; treat directory count as medium confidence.",
   "severity": "low"
  },
  {
   "id": "ny-gol-7108-deposit-itemization-deadline-desk-e5",
   "business_slug": "ny-gol-7108-deposit-itemization-deadline-desk",
   "area": "Competitive",
   "claim_or_finding": "Roost and Neudash sell customer-operated deposit refund/return automation; Frontdesk AI answers inbound refund questions; AppFolio/Buildium/Yardi are PMS ledger tools — none DFY-assemble evidence-linked NY packs under a 14-day clock SLA.",
   "status": "verified",
   "evidence": "Roost (joinroost.com) deposit/refund automation confirmed via fresh 2026-07-15 search; Neudash and Frontdesk positioning per blueprint.",
   "verification_command": "Confirm competitor positioning pages describe customer-operated automation, not a DFY disposition-pack desk.",
   "fix_owner": "none",
   "remediation": "Compete on DFY surge + evidence QA + NY statute depth; re-verify competitor feature bundling quarterly.",
   "severity": "low"
  },
  {
   "id": "ny-gol-7108-deposit-itemization-deadline-desk-e6",
   "business_slug": "ny-gol-7108-deposit-itemization-deadline-desk",
   "area": "Proof",
   "claim_or_finding": "No testimonials, client names, win rates, or on-time-delivery statistics exist yet; all proof slots are honest placeholders keyed to real future pilot packs.",
   "status": "placeholder",
   "evidence": "Landing page proof section uses dashed placeholder slots; no fabricated metrics present.",
   "verification_command": "Grep landing page for fabricated testimonials/metrics; confirm placeholder treatment.",
   "fix_owner": "owner",
   "remediation": "Populate on-time and first-pass-completeness figures from real pilot packs before making proof claims.",
   "severity": "low"
  }
 ],
 "seo_pages": {
  "id": "seo-ny-gol-7108-deposit-itemization-deadline-desk",
  "business_slug": "ny-gol-7108-deposit-itemization-deadline-desk",
  "route": "/ny-gol-7108-deposit-itemization-deadline-desk",
  "title": "Deposit14 Clear — NY 14-day Itemized Disposition Packs for property managers",
  "description": "Done-for-you NY security-deposit Itemized Disposition Packs: deduction lines mapped to photo and invoice evidence, a Day-14 countdown, and a delivery-proof checklist — so your statement and refund clear GOL §7-108 before you forfeit.",
  "canonical": "/ny-gol-7108-deposit-itemization-deadline-desk",
  "og_title": "Deposit14 Clear — clear the NY 14-day deposit clock",
  "og_description": "Itemized Disposition Packs for New York property managers, assembled inside the GOL §7-108 14-day window and reviewed by a deposit analyst.",
  "schema_type": "FAQPage",
  "schema_status": "pending-owner-facts",
  "sitemap_include": false,
  "noindex": true
 },
 "vertical_style": {
  "accent": "deposit-navy",
  "signature": "Deposit-ledger desk with a Day-14 countdown chip and a matched/at-risk/pending/blocked status row.",
  "layout": "NY security-deposit disposition completeness desk index",
  "anti": "Proptech gradient hero, stock apartment-keys or handshake imagery, teal clones of sibling desks."
 },
 "canva": {
  "slug": "ny-gol-7108-deposit-itemization-deadline-desk",
  "territory": "Deposit Desk",
  "family": {
   "id": "ny-deposit-disposition-desk",
   "name": "New York residential security-deposit disposition",
   "motion": "calm"
  },
  "tokens": {
   "brand": "224 64% 33%",
   "brand-fg": "216 33% 97%",
   "surface": "0 0% 100%",
   "ink": "222 30% 14%",
   "muted": "220 13% 40%",
   "accent": "346 77% 45%"
  },
  "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 560px at 88% -12%, hsl(224 64% 33% / 0.10), transparent 60%)",
   "cta_gradient": "linear-gradient(135deg, hsl(224 64% 33%), hsl(346 77% 45%))",
   "section_wash": "linear-gradient(180deg, hsl(0 0% 100%) 0%, hsl(220 33% 99%) 100%)"
  },
  "motif": "Move-out-photo-to-linked-vendor-invoice over a Day-14 countdown cover art"
 },
 "capabilities": {
  "marketing": "True",
  "portal": "False",
  "ops": "True",
  "chatbot": "False",
  "payments": "False"
 },
 "generated_at": "2026-07-15T00:00:00Z",
 "checksum": "46e66745bffa0022"
}