Marketing leads from the public /contact form

Marketing leads are submissions to the public /contact form on the marketing site (turtini.com/contact). They flow into the platform's lead pipeline so the sales team can triage and respond fast.

The flow:
1. Visitor fills out the contact form on turtini.com/contact
2. Submission writes to Firestore as a Marketing Lead
3. Cloud Function fires:
• Notifies the sales team via email (configured under Admin → Marketing Leads → Notification Recipients)
• Sends an auto-reply to the visitor confirming receipt
4. Lead appears in Admin → Marketing Leads with status="new"
5. Sales rep reviews, replies, optionally creates an Account/Contact/Opportunity in CRM

Lead fields:
• Name, email, phone (optional), company name (optional)
• Reason for reaching out (free-form)
• Source page (which marketing page they came from — pricing, home, /redhat, etc.)
• Any UTM parameters (utm_source, utm_medium, utm_campaign) for marketing attribution
• Submission timestamp

Spam protection:
• Cloudflare Turnstile on the form (invisible challenge)
• Rate-limited per IP
• Automated submissions from known spam IP ranges blocked at edge
• Honeypot field detects basic bot fills
• Suspicious leads quarantined to a "Spam" lane in Admin — review and re-classify if false positive

Routing:
• Auto-routing rules in Admin → Marketing Leads → Routing
• Examples: "leads from /pricing → assign to Sales Manager"; "Federal-related leads → assign to Federal BD lead"
• Default round-robin if no rule matches

Follow-up workflow:
• Click any lead → "Reply" sends an email via your Resend domain
• Or "Create CRM Contact" → promotes the lead into a tracked Contact (with original lead context attached)
• Or "Create Opportunity" → opens an opp pre-filled from lead data
• Status moves through new → contacted → qualified → converted (or dismissed)

Reporting:
• Admin → Marketing Leads → Reports
• Volume by source page, by UTM, by week/month
• Conversion rate from lead to opportunity to closed-won
• Average time to first response (SLA tracking)