Intake Block — generation prompt
You are configuring the intake form. The intake is where the visitor who's INTERESTED but not READY-TO-BOOK leaves their info. v1's hardcoded default ("Tell us about your project") leaked into every workspace — and made every vertical's intake feel identical. v2's job is to write an intake form that feels written FOR THIS BUSINESS.
The mental model
The intake form is a conversation, not a database insert. Each question asks: "Will the answer change what we do for this person?" If no, drop it.
Order matters. Start with low-stakes identifying questions (name, email), then scope (what service, what timeframe), then open-ended at the end (anything else?). Don't ask for budget, address, or sensitive info before establishing trust.
Length matters. 3-5 questions = healthy completion. 6+ = friction.
Voice rules
- Title names what the form actually is. "Get a Quote" if it's a quote request. "Request a Consultation" if it's that. NOT "Get in touch."
- Questions in the visitor's voice. "Tell us about your dog" not "Provide pet information". "What kind of cut are you thinking?" not "Service preference".
- Required fields earn it. Mark a field required only if you GENUINELY can't proceed without it. Optional fields with helper text often outperform forced ones.
- Select options match real choices. If the operator's services are "AC repair / Heating / Duct cleaning", those are the select options. Don't invent generic categories.
- Completion headline is human. "Thanks — we'll get back to you today" beats "Submission received."
Worked examples
Mobile dog grooming
{
"title": "Tell Us About Your Dog",
"description": "Quick form so we know what to bring to your appointment. Takes about 60 seconds.",
"questions": [
{ "id": "owner_name", "label": "Your name", "type": "text", "required": true },
{ "id": "email", "label": "Email", "type": "email", "required": true },
{ "id": "phone", "label": "Phone (text-friendly)", "type": "phone", "required": true },
{ "id": "dog_name", "label": "Your dog's name", "type": "text", "required": true },
{ "id": "dog_breed", "label": "Breed (or best guess for mixes)", "type": "text", "required": true },
{ "id": "service", "label": "What's the main thing they need?", "type": "select", "required": true, "options": ["Full-service grooming", "Bath & brush", "Nail trim only", "De-shedding treatment", "Puppy first groom", "Not sure — recommend something"] },
{ "id": "notes", "label": "Anything we should know?", "type": "textarea", "required": false, "helper": "Anxiety, sensitivities, prior bad experiences — all helpful." }
],
"completion_headline": "Thanks — we'll text you within the hour",
"completion_message": "We'll confirm a time and a quote based on your dog's coat. Same-day grooming often available."
}
HVAC
{
"title": "Request Service or a Free Estimate",
"description": "Two minutes, no obligation. We'll call back within an hour during business hours.",
"questions": [
{ "id": "name", "label": "Your name", "type": "text", "required": true },
{ "id": "email", "label": "Email", "type": "email", "required": true },
{ "id": "phone", "label": "Best phone", "type": "phone", "required": true },
{ "id": "service_address", "label": "Service address", "type": "text", "required": true, "helper": "So we can confirm we serve your area." },
{ "id": "service_type", "label": "What do you need?", "type": "select", "required": true, "options": ["Emergency repair", "Scheduled repair", "New install / replacement", "Maintenance / tune-up", "Free estimate", "Not sure"] },
{ "id": "equipment", "label": "Equipment", "type": "select", "required": false, "options": ["Central AC", "Furnace", "Heat pump", "Ductless mini-split", "Water heater", "Other / not sure"] },
{ "id": "issue", "label": "What's the issue?", "type": "textarea", "required": false }
],
"completion_headline": "Got it — we'll call within the hour",
"completion_message": "If it's after-hours we'll respond first thing tomorrow. For true emergencies call (480) 555-2100."
}
Legal
{
"title": "Tell Us Your Situation",
"description": "Confidential. We'll review and reach out within one business day to schedule a free 30-minute consult.",
"questions": [
{ "id": "name", "label": "Your name", "type": "text", "required": true },
{ "id": "email", "label": "Email", "type": "email", "required": true },
{ "id": "phone", "label": "Phone (we won't call without permission)", "type": "phone", "required": true },
{ "id": "matter_type", "label": "What kind of matter?", "type": "select", "required": true, "options": ["Divorce", "Custody / Parenting", "Mediation", "Estate planning", "Other family law", "Not sure"] },
{ "id": "summary", "label": "Briefly, what's going on?", "type": "textarea", "required": true, "helper": "A few sentences is plenty. We'll ask follow-ups at the consult." },
{ "id": "urgency", "label": "How urgent?", "type": "select", "required": false, "options": ["This week", "This month", "Just exploring options"] }
],
"completion_headline": "Thanks — we'll be in touch tomorrow",
"completion_message": "Sarah will personally review and reply within one business day. Everything you wrote is confidential."
}
Coaching
{
"title": "Take the Fit Quiz",
"description": "Five questions. Helps us figure out whether coaching is the right move for where you are right now.",
"questions": [
{ "id": "name", "label": "Your name", "type": "text", "required": true },
{ "id": "email", "label": "Email", "type": "email", "required": true },
{ "id": "current_role", "label": "Where are you now?", "type": "text", "required": true, "helper": "Title + industry is plenty." },
{ "id": "goal", "label": "What change are you trying to make?", "type": "textarea", "required": true },
{ "id": "timeline", "label": "Timeline?", "type": "select", "required": true, "options": ["Already in motion", "Next 3 months", "Next 6-12 months", "Just exploring"] },
{ "id": "tried_before", "label": "Worked with a coach before?", "type": "select", "required": false, "options": ["Yes, was great", "Yes, wasn't a fit", "No, first time"] }
],
"completion_headline": "Got it — give me 24 hours",
"completion_message": "I'll read through and reply with whether I think we're a fit. If not I'll point you somewhere better."
}
Output format
Return ONLY a single JSON object matching the props schema. No prose, no markdown fences.
If the operator gave you minimal context, default to a 4-question form (name + email + phone + one open-ended "what do you need?"). Adding more questions without a clear reason hurts completion. Less is almost always more here.