Back to Blog
ailead-generationclaude

I Built an AI Sales Rep That Writes Its Own Discovery Reports

Ryan C·

What if your website could have a real conversation with a potential client, figure out what they need, and hand you a structured discovery report — all before you've said a word? I replaced my contact form with a Claude-powered chatbot that does exactly that.

Most agency websites have a contact form. Name, email, "tell us about your project," submit. Then you get an email that says "I need a website" and you spend 30 minutes on a discovery call figuring out what they actually need.

I replaced the contact form with a Claude-powered chatbot that has a conversation with the visitor, qualifies the lead, and sends me a structured Project Discovery Report — all before I've exchanged a single email.

The Problem with Contact Forms

Contact forms optimize for the wrong thing. They minimize friction for the visitor, which sounds good, but it means you get the lowest-effort version of their request. "I need an app" tells you nothing. "I need a website for my business" tells you almost nothing.

The information I actually need to evaluate a lead — their problem, current solution, timeline, budget, technical requirements — takes a 30-minute conversation to extract. And half the leads that fill out a contact form aren't a good fit anyway.

How It Works

There's a chat widget embedded on the homepage. When a visitor opens it, they're talking to Claude with a carefully tuned system prompt that acts as a consultative discovery partner, not a pushy sales bot.

The AI has two tools available to it:

notify_ryan — A quick notification for simple inquiries. Captures the visitor's name, contact info, and a brief summary of what they need. This is the "someone's interested, follow up when you can" alert.

send_pdr — The full Project Discovery Report. This is a structured document with 15+ fields:

- Visitor contact (name, email, phone)
- Company and role
- Problem statement
- Current state (what they're using now)
- Desired outcome
- Technical requirements
- Existing integrations
- Data description
- Timeline and budget
- Conversation summary (internal)
- Fit assessment (internal)

The AI decides when to call which tool based on the depth of the conversation. A casual "what do you guys do?" gets a notification. A 10-message conversation about migrating their legacy system gets a full PDR.

The Streaming Experience

The chat uses server-sent events (SSE) for streaming responses. Characters appear with a slight throttle so it feels conversational rather than instant. The visitor can upload screenshots and images (up to 20MB) which get stored in S3 and included in the PDR.

Session persistence is handled with sessionStorage — if the visitor refreshes the page or navigates away and comes back within 30 minutes, their conversation is still there. No login required, no cookies.

What the PDR Email Looks Like

When the AI triggers send_pdr, two emails go out:

To me: The complete discovery report with all structured fields, the full conversation transcript, any images shared, and an internal fit assessment. I can evaluate the lead in 2 minutes instead of scheduling a 30-minute call.

To the visitor (optional): A formatted summary of what was discussed, confirming that their inquiry was received and providing a recap of the key points. This makes the interaction feel professional even though they were talking to an AI.

The Results

The conversion quality is dramatically better than contact forms. By the time I get a PDR, I know:

  • Whether this is a real project or someone kicking tires
  • The technical scope (and whether it's something I can deliver)
  • Their budget expectations (the AI asks naturally, not like a form field)
  • Their timeline and urgency

I've had visitors spend 15 minutes in the chat, exploring their problem with the AI, arriving at clarity about what they actually need. That's a discovery session that happened without my involvement.

The Admin Side

All conversations are logged to the database with the visitor's email, name, message count, and flags for whether a PDR was sent or a lead was captured. I can review them in the admin dashboard, see the full conversation history, and pick up where the AI left off.

Conversations Dashboard:
├── Visitor email + name
├── Message count
├── PDR sent? (yes/no)
├── Lead captured? (yes/no)
└── Full conversation replay

What I'd Do Differently

The system prompt took more iteration than the code. Getting the tone right — consultative but not pushy, thorough but not interrogative — required testing with real visitors and adjusting. The first version asked for budget too early. The current version lets the conversation flow naturally and captures structured data when it makes sense.

I'd also add a human handoff mechanism. Right now, if the AI determines the visitor wants to talk to a real person, it can only say "I'll have Ryan follow up." A live takeover of the chat session would close that gap.

The Bigger Picture

Every agency has the same funnel problem: too many unqualified leads, not enough information to triage them. The traditional answer is a long intake form (which nobody fills out completely) or scheduling calls (which wastes time on bad fits).

An AI that can have a real conversation, understand what the visitor needs, and produce a structured report is the best of both worlds — low friction for the visitor, high signal for the agency.

Want us to build something like this for you?

We ship production software in days, not months. Tell us what you need — our AI receptionist is standing by.

Back to Blog
Page

Page

Client AI · Online

Page

Hey, I'm Page.

Tell me what you need. I'll point you to the right person — or tell you if we're not the right fit.

Powered by Claude · Responses may vary