INTAKE_FORM_SECTION_DEFS defines eleven stable section ids with labels, descriptions and a defaultEnabled flag: Identity, Mailing Address, Contact Info, Co-signer/Spouse, Property Info, Lender Info, Source of Funds, Permits & HOA, Photo ID Upload, Proof of Ownership, Insurance Certificate. Settings stores `{ [sectionId]: boolean }` and both the form renderer and the contract renderer respect it.
Also called: intake settings · which questions to ask · customize intake form · form sections · do not ask for date of birth · custom intake questions
- 1Settings shows the eleven sections as a two-column grid of labelled checkboxes with a one-line description each.
- 2Toggling saves immediately (upsert on invoice_settings, onConflict org_id) and shows a Saved dot.
- 3getIntakeSettings() merges stored values over DEFAULT_INTAKE_SECTIONS so a new tenant gets sensible defaults.
- 4Sections a customer never sees simply leave their key empty in form_data — the contract's clauses degrade gracefully.
The design note is explicit: 'every form section is a row in INTAKE_FORM_SECTION_DEFS with a stable id. Settings → Intake stores `{ [sectionId]: boolean }` which both the form renderer and the contract template renderer respect.' Stable ids matter because a signed contract's form_data has to stay readable after a builder reorders their form. Defaults are chosen for the common case — photo ID off, but described as 'Driver's license — some lien laws require'.
- A one-size form that either over-asks or misses what a builder needs
- Customers abandoning a long form for a small job
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →