Property Report
A complete walkthrough of the on-demand Property Report PDF — what it shows, how it's built, and how to read each section.
Property Report
The Property Report is a deep-dive O&E (Ownership & Encumbrance) PDF built on demand for any single property. It pulls live data from the Property Appraiser, Clerk of Courts, Tax Collector, Code Enforcement, and DERM — extracts the lien and mortgage bodies with vision AI — and assembles a defensible chain of evidence in 30–120 seconds.
Reports are paid (per-report Stripe checkout) and gated by your site's feature flags.
How to generate one
- Open a lead in the detail panel (from the leads table, review queue, or any campaign).
- Click Generate Report.
- Complete the Stripe checkout if prompted.
- The status indicator shows pending → generating → complete. Live polling refreshes every 3 seconds.
- When the status flips to complete, a download link appears.
Older reports for the same property stay listed so you can compare runs over time as new clerk filings or violations land.
What's in the PDF
The report is a single PDF with a fixed section order, an inline appendix for overflow, and source-cited links throughout.
Page 1 — Headline & summary
- Property identity — Address, folio, owner of record (legal entity case is preserved verbatim —
LLC,INC,TRUSTstay uppercase). - Care-of agents — If the PA mailing record lists a c/o agent, it's broken out separately from the legal owner list rather than treated as a co-owner.
- Status-reason chip — A single chip telling you why this property surfaced (foreclosure leads, code-enforcement pressure, tax distress, etc.). The chip is coverage-aware — if a feed is stale or unreachable, the chip reflects what we can actually substantiate rather than overclaiming.
- Headline summary — Plain-language paragraphs synthesized from the deterministic data underneath.
Encumbrance Picture
A topline view of what's affecting title. The headline is qualified by acquisition-date provenance — i.e. it tells you whether the picture is anchored to a clerk-recorded vesting deed (highest confidence), a PA-only chain (moderate), or no chain at all.
Chain of Title
Chronological list of recorded transfers — clerk recordings first, then PA sales-history rows that have no clerk match. Each row shows:
- Date, instrument code (
WD,QCD,SWD,CT, …), grantor → grantee - Consideration (sale price) when present
- CFN and a deep link to the clerk record
- A provenance badge (clerk-folio / name-search / PA-only)
Nominal transfers ($1, $10, $100) suppress the Appreciation Since Purchase line because they distort comparison.
Mortgage Status
Open mortgages with body-level detail extracted by vision AI:
- Borrower, lender, amount, recorded date, maturity date (when extracted)
- FL §95.281 flagging — Mortgages likely extinguished under Florida's 20-year statute of repose are flagged
STATUTORILY_LAPSEDwith a footnote explaining the inference. - Recent NOC signal — If a Notice of Commencement was recently filed, it's surfaced here as a near-term construction-financing signal.
Recorded Liens (Title-Affecting)
Two-lane structure:
- Active under current ownership — Liens recorded after the current owner acquired the property.
- Pre-existing (prior ownership) — Liens that pre-date acquisition. Surfaced for visibility but separated so the active-encumbrance count isn't inflated.
Each row carries per-row badge indicators:
| Badge | Meaning |
|---|---|
SURFACED_VERIFY | Surfaced via owner-name search. Confidence is below the auto-attach threshold — please verify before treating as definitively title-affecting. |
STATUTORILY_LAPSED | Recorded over 20 years ago with no satisfaction on file. Likely extinguished under FL §95.281, but recording remains in the chain. |
LIS_PENDENS | Lis pendens — pending litigation that could attach to title. De-duplicated against foreclosure leads so you don't see the same case in two sections. |
Per-row reasoning is aggregated into a single footnote block at the bottom of the section rather than cluttering each row.
Foreclosure Leads (when applicable)
Surfaced when foreclosure-leaning filings are present in the chain. A page-2 chip qualifies the lead by what types of building violations are also active.
Code Enforcement (CEF)
Open code-enforcement balances are surfaced inline. Closed cases route to the appendix to keep the main flow focused on active pressure. The headline distinguishes a null balance (we couldn't fetch it) from a confirmed $0 balance, and discloses unknown counts honestly.
DERM Enforcement
Environmental enforcement cases (DERM). Closed cases also route to the appendix.
Building Permits
Active permits in the main flow; completed permits in the appendix. Master and sub permits are deduped — a master/sub pair counts once for the master with sub permits listed beneath it as sub-rows.
Coverage
The Coverage panel appears at the end of the report and tells you which data sources successfully returned, which were stale, and which were unreachable. This is the "show your work" section — every claim earlier in the report is anchored to a source listed here. Per-row indicators are typed flags, not derived peer-range guesses.
Appendix
Routes for:
- Completed building permits
- Closed code-enforcement cases
- Closed DERM cases
- Statutorily-lapsed liens beyond an inline cap
- Stale recorded liens at the cap
An AppendixToggle lets you expand the inline overflow when present.
Bottom disclaimer
Includes a parcel-renumbering disclosure — Miami-Dade has historically renumbered folios; the report is anchored to the current folio at request time, but historical clerk records may pre-date the current number.
Section-level caveats
Caveats are not boilerplate — they only render when the underlying data warrants them. Wording is shared between the report PDF and the in-app SPA view, so you'll never see drift.
Common caveats:
- Sales & Equity caveat — When the PA has no qualified arms-length sale, the equity estimate is flagged as informational only.
- Commercial / income-approach caveat — Fires on multi-family properties with 10+ rental units, where the income approach to valuation is more appropriate than comparable sales.
- Prior foreclosure caveat — Fires when a Certificate of Title appears in the chain.
- Unpermitted structural risk — Fires when permits coverage is sufficient to make the absence of permits meaningful.
How the report is built (technical detail)
If you're curious about the underlying workflow, the report runs as a Cloudflare durable workflow with 20+ named steps, each event-logged. Steps include:
- Property Appraiser refresh and HTML snapshot
- Clerk folio search + owner-name search + AI disambiguation
- Owner derivation (multi-owner + care-of split)
- Code-enforcement citation lookup
- Tax Collector balance fetch
- Vision-AI extraction of lien amounts, mortgage details, and deed tenancy
- Final AI cross-check before PDF render
- Browser-rendered PDF upload to R2
Engineering reference: see docs/REPORT_STEPS.md (in the codebase) for the full step list and typed error codes. If a step fails with a typed error code, you'll see a user-actionable message and a suggested retry window — and you will not be charged.
When data is stale or unreachable
The system distinguishes three states per source:
- Fresh — Data fetched successfully and recently.
- Stale — Data exists but is older than the freshness threshold for that source.
- Unreachable — Source returned an error or timed out.
Each state is surfaced honestly in the report — the headline chip, the Coverage panel, and individual section headers all reflect what we could actually substantiate. We never silently substitute one for another.