Hallmark Property Reports

Branded reports as web URLs

Internal landing — phase 1 (read-only)

How this works

Each client report lives as a row in Supabase and renders at /r/[share_token]. No PDF generation, no print-CSS surgery, no orphan pages. Same source feeds the browser view and Cmd-P print.

Phase 1 — read only

Create a report row in the Supabase dashboard with status = 'shared' and a populated content JSON. Open the share URL.

Phase 2 — admin form (next)

Browser-based editor at /admin for last-mile copy tweaks without touching code or SQL.

Phase 3 — Investor OS hook (later)

The OS calls POST /api/reports with assembled data; the same renderer publishes the URL.

Section types available

typeUse for
coverFront cover with title, address, meta grid
exec_summaryTile grid + paragraphs + bottom-line callout
narrativeTitle + lead + paragraphs + optional callouts
data_tableBranded table — comparables, sources, etc.
dual_avmSide-by-side PropTrack + Cotality cards

Adding a new type? One function in sections.js.