Quote Collection System for BE SEEN Print & Sign
| Field (Key) | Primary Voice Prompt | Expected Format | Validation & Handoffs | Conditional Follow-ups (if needed) | Examples |
|---|---|---|---|---|---|
| first_name, last_name | "Hi! I'll grab a few details for your quote. What's your first and last name?" | Free text (names) | If only one token: accept as first_name; reprompt for last_name once. | "Got it. And your last name?" | "Alex Chen" |
| phone | "What's the best phone number for updates?" | Digits, spoken or DTMF | Normalize to E.164; if < 10 digits, reprompt once; then offer SMS link. | "I heard 408-555-0199. Is that right?" (yes/no) | "(408) 555-0199" |
| "What email should we use for proofs?" | Spelled or spoken; allow "at/dot" | Basic email pattern; if unclear, confirm slowly or offer texted link to confirm. | "I captured alex at pinepress dot com. Is that correct?" | "alex@pinepress.com" | |
| project_category | "Is this for printing or signage?" | Enum: printing | signage | If unclear, give short examples of each. | "Printing like business cards or flyers; signage like window vinyl or panels." | "Signage" |
| description | "In a sentence, what are you looking for?" | Free text (≥ 5 chars) | If too short, reprompt: "Any key details I should note?" | — | "Window logo + hours for front door." |
| due_date | "When do you need this by?" | YYYY-MM-DD or natural date ("next Friday") | Parse to date; if past/invalid, reprompt. If ≤48h, set priority=rush. | "I can put this as Friday the 18th. Is that right?" | "Next Friday" → 2025-10-17 |
| 🖨️ Printing Branch (if project_category=printing) | |||||
| product_type | "Which product: business cards, postcards, flyers, folders, banner, stickers, or other?" | Enum | If other → capture free text to product_type_other. | — | "Business cards" |
| sizes_requested, size_units | "What size do you need? You can say something like three-and-a-half by two inches." | WxH + units (in/ft/mm). Allow multiple. | Parse numerals; if units missing, ask: "Is that in inches or millimeters?" | "Any other sizes for this order?" | "3.5 by 2 inches" |
| quantity | "How many do you need?" | Integer ≥1 | If range ("2–3 hundred"), map to upper bound and note in comments. | — | "500" |
| artwork_status | "Do you have print-ready artwork, or do you need design help?" | Enum: have_print_ready | need_design_help | not_sure | — | — | "Need design help." |
| 🏢 Signage Branch (if project_category=signage) | |||||
| signage_type | "What type of sign: window vinyl, banner, A-frame, channel letters, wall graphic, or panel sign?" | Enum (+ other) | If other → capture free text. | — | "Window vinyl" |
| install_needed | "Do you need installation as well?" | yes | no | unsure | If yes → ask location next. | — | "Yes" |
| install_location | "Where is this being installed: interior, exterior, vehicle, or other?" | Enum | — | "Any site details like tinted glass, stucco, or landlord guidelines?" → site_notes | "Exterior" |
| sizes_requested, size_units | "What size or panel dimensions do you need? You can say width by height in inches or feet." | WxH + units; allow multiples | If multiple panes, collect list; confirm total. | "Any additional panels or sizes?" | "72 by 24 inches" |
| 📍 Optional Helper Fields | |||||
| zip_or_city | "What city or ZIP is this for?" | Free text | — | — | "San Jose 95112" |
| preferred_contact | "Do you prefer a call, email, or text?" | phone | email | sms | Map "text me" → sms | — | "Text" |
| budget_range (optional) | "Do you have a budget range in mind?" | Free text or range | — | — | "Around $600–800" |
All Projects:
+ Printing Projects:
+ Signage Projects: