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
| type | Use for |
|---|---|
cover | Front cover with title, address, meta grid |
exec_summary | Tile grid + paragraphs + bottom-line callout |
narrative | Title + lead + paragraphs + optional callouts |
data_table | Branded table — comparables, sources, etc. |
dual_avm | Side-by-side PropTrack + Cotality cards |
Adding a new type? One function in sections.js.