For Florida law firms
The firm's consult door: a request screened before anyone opens it
firm lane · Deterministic — no model call
Current availability
ShippedConfigured and enabled: any visitor on a firm's host; the firm's staff read the requests.
- Where it lives
- firmname.estatedraftfl.com/consult (firm hosts only) · /api/consult · Consults (/admin/consults)
- What unlocks it
- anyone on a firm's own host (the door answers 404 everywhere else); the requests are read by the firm's staff
Status is evaluated against this deployment's configuration by the capability-status service at build time; the catalogue's facts were last reviewed on the date shown.
Capabilities
- ShippedTwo steps in the visitor's language (English, Spanish, Haitian Creole, Russian, Hebrew): what they need and how to reach them, then the people involved, the times that suit them and a few facts.
- ShippedThe people named are screened against the firm's own records BEFORE the request is stored; the screen and the request are stored together, never as a matter.
- ShippedEach request goes to an owner by rotation (the firm's attorney who least recently received one; the governance roles when the firm has no attorney).
- ShippedThe firm records the contact, declines (the prospect joins the declined register) or opens a matter from it — the intake is prefilled, screened again, and the questions the request left open are carried onto the matter as agenda rows.
- ShippedThe visitor is told only that the request was received — never anything about the screen.
Limits
- Sending a request does not make the firm the visitor's lawyer, and the form says so before it is sent.
- Five requests per address per hour and sixty per firm per hour; the limits fail closed.
- A request is never edited or deleted; it is contacted once and decided once.
What EstateDraftFL refuses
| Reason code | HTTP | What it means |
|---|---|---|
| not-found | 404 | The consult door exists only on a firm's own host. |
| invalid | 400 | The first field that failed is named, in the visitor's language. |
| captcha | 400 | The bot check did not complete (only when it is keyed). |
| rate-limited | 429 | Too many requests from this connection or to this firm — try later. |
| unavailable | 503 | The request could not be screened or stored — nothing was saved. |
Evidence
- src/app/consult/page.tsx
- src/components/conflicts/ConsultForm.tsx
- src/app/api/consult/route.ts
- src/lib/conflicts/consult-shape.ts
- src/app/admin/consults/page.tsx
- supabase/migrations/20260926120000_phase9_consult_requests.sql
- docs/security/MASTER-PLAN-PHASE9-2026-09-26.md
Last reviewed 2026-09-26