Every inbound message from a potential customer — phone calls handled by your AI receptionist, web-form submissions, emails to your business address, SMS replies — flows into /portal/leads. Each lead has a category, urgency level, AI-extracted contact info, and the original message body.
Categories
| lead | Standard new business — quote request, service call, etc. |
| urgent_lead | Flagged urgent by the AI (mentions emergency, water damage, no heat). You're paged immediately. |
| follow_up | Existing customer reaching out. Not a new lead per se but worth tracking. |
| spam | Marketing solicitations, bots, wrong-numbers. Auto-archived. |
| out_of_area | Caller's address is outside your service radius. AI politely declines + flags for analytics. |
Reply via the lead detail
Click any lead to open the detail page — the conversation thread, AI's draft reply, and Send button. Toggle between Email / SMS reply channels. Once you reply, the status flips to 'contacted' and the lead moves down the pipeline.
Tick checkboxes on the list view and a floating action bar appears bottom-center: archive, mark spam, or restore. Useful for cleaning up after a marketing burst that brought in lookie-loos.