Home/Thoughts
Thoughts

Your Chatbot Punishes Users for Being Helpful

Rigid lead-capture flows don't just frustrate users - they actively penalize your most engaged ones.

The User Did Everything Right. The Bot Punished Them Anyway.

I was on a coaching call recently, reviewing a chatbot one of the guys I work with had built. It's a lead capture bot - the kind that opens with a greeting, asks for your name, your email, your phone number, and then hands you off to a sales flow. Pretty standard setup.

So I'm testing it live on the call. The bot asks for my name. I type something like: "Alex - and also, what is BANT?"

One message. My name. And a legitimate question about the product.

The bot ignored the question entirely and moved straight to: "What's your phone number?"

I just volunteered more engagement than the bot asked for. I gave it my name and showed genuine curiosity about the offer. And the bot's response was to pretend the question never happened and demand my phone number.

Your conversion logic is broken at the design level. And if your chatbot does this - or your sales flow does this - you're losing your best leads first.

Your Most Engaged Users Are Getting Punished

Think about who sends a message like that. Not someone who's half-checked-out and just filling in forms. Someone who typed their name and had a specific question about the product. That's a person leaning in - curious, with buying intent wrapped in a compliance action.

A good salesperson on a call would catch that immediately. They'd answer the question, acknowledge the name, and keep the conversation moving. The lead would feel heard. They'd trust the process more, and closing them would be easier.

The bot? It's running a queue. It processed the message, decided the only relevant data was the name field, stored that, and moved to the next item on the list. The question - the signal that this person wants to engage - got discarded.

And the user notices. Maybe they don't consciously think "this bot is ignoring me." But they feel it. The conversation becomes transactional, the warmth drops, and trust starts to erode. And by the time the bot asks for a phone number, they're already less likely to give a valid one.

You built a lead capture system that actively discourages engagement from the leads most worth capturing. That's the problem.

Why This Happens (It's Not Just Bad Engineering)

The double-response bug we spotted on the call was part of the same underlying issue. The bot was pinging the AI twice on certain inputs - once from the initial message handler, once from the main response function. So sometimes you'd get two answers to one question. Sometimes you'd get an answer that contradicted itself between the first and second response.

We saw it live: I asked about BANT, and the first response was confused - didn't really know what it was. The second response nailed it. Same question, two different quality answers, in the same message thread. That's what happens when your architecture is calling the same function from two different places without knowing the other one fired.

But the double-response thing is a code problem. You fix it by cleaning up where the function gets called. Ignoring secondary intent is a design problem. The bot we were reviewing had clean code - the design approach was wrong.

Every chatbot I've reviewed follows the same approach: collect the fields in order, validate each one, move to the next. Linear and predictable, which makes it easy to build. And completely different from how people talk.

When someone types a message to your bot, they might be doing three things at once: answering your question, asking their own question, and signaling something about where they are in the buying process. A rigid sequential flow can only handle one of those. It captures the answer to the field it's currently on and discards everything else.

Free Download: 7-Figure Offer Builder

Drop your email and get instant access.

By entering your email you agree to receive daily emails from Alex Berman and can unsubscribe at any time.

You're in! Here's your download:

Access Now →

The Fix: Two-Pass Intent Processing

On the call, we worked through what the right architecture looks like. It's not complicated in concept, even if the implementation takes a day or two to get right.

When a user submits a message, the AI needs to do two things, not one.

Pass one: Validate the data. Is this a valid name? Is this a valid email? Does this phone number have a country code? Yes or no. Store the valid value, flag the invalid one to ask again.

Pass two: Check for secondary intent. Is there a question in this message? Is there something the user said that needs a response beyond the field validation? If yes, answer it. Then continue to the next field.

Every lead capture bot I've tested - including the one we were reviewing - is only doing pass one. They're validating (or trying to) and moving on. Pass two never happens. The question dies in the input.

What we were working toward is a system where the AI gets the message, returns something like: "Yes, valid name. And there's a question here about BANT." Two pieces of output. One that routes to data storage, one that routes to the response generator. The user gets their question answered, and the bot still captures the field data.

You can do this with a key-value pair in the prompt response, or comma-separated outputs - pick whatever format is easy to parse. The point is: the AI needs to be explicitly told that a single user message might contain multiple types of intent, and it needs to handle both.

The Data Validation Rabbit Hole (And Where to Stop Digging)

We also got into the weeds on data validation itself, and I want to address this because it's a place where teams over-engineer and kill their timelines.

The instinct is: let's validate everything perfectly. Valid email, valid phone number, valid name, country code included, format verified, no typos. And I get why - garbage data in means garbage leads out. Bad lists are a mess that takes forever to sort out.

But there's a ceiling on how deep you should go here, and it's lower than you'd expect.

On phone numbers specifically: we went back and forth on country codes. The argument for requiring them is sound - if you don't have a country code, you can't call the number. A string of ten digits with no prefix is not a usable phone number. So you need it.

But don't make it difficult. You don't make the user retype their entire number. You ask in plain English: "Hey, I noticed this number doesn't have a country code - what country are you in?" They say India, you prepend +91. They say UK, you prepend +44. The AI can infer the country code from the country name. That's a solved problem. You don't need to build a regex library for every phone format on the planet.

What you don't do is build a masking input that auto-detects country from IP address and formats the field accordingly. That's a native mobile app feature. In a chat interface, you don't have an input box to format. The conversation itself is the interface. Use it.

On email: validate that it looks like an email. Check the format. Don't over-index on real-time verification against a live database - that adds latency, adds cost, and still won't catch every bad address. The goal is usable data, not perfect data. If someone gives you a fake email, no validation layer will fix that. No amount of regex fixes a person who doesn't want to give you their address.

If your chatbot is deployed on a website that serves multiple countries, don't assume your leads are local. I've got a US-based website and a significant chunk of the people who come through are international. Building your validation logic around the assumption that everyone is domestic will break the experience for the leads you want to reach.

The Storage Bug That Made It All Worse

Here's what happened when I tested the bot and it skipped the lead questions entirely and went straight to answering my BANT question: it was doing exactly what it was designed to do.

The bot had stored my previous session data in local storage. I had answered the three lead capture questions in an earlier test - name, email, phone - so when I came back, the bot recognized that I'd already completed that sequence and skipped it. Went straight to the AI conversation layer.

Smart, right? Don't make the same user answer the same questions twice. That's good UX.

Except: the data I'd entered in the previous session hadn't passed validation. The email or phone hadn't been verified properly. So the bot had stored bad data, marked me as complete, and would now never ask me to correct it. It had learned the wrong thing and was confidently acting on it.

The logic of "remember the user so you don't repeat questions" is correct. The implementation has to account for whether the remembered data is valid. If the session data includes unvalidated fields, the bot needs to know to re-ask. The memory and the validation need to be aware of each other - right now they were running independently, which meant the memory could overwrite the validation requirement entirely.

Fix the validation first. Then build the memory layer on top of validated data, not raw input.

Need Targeted Leads?

Search unlimited B2B contacts by title, industry, location, and company size. Export to CSV instantly. $149/month, free to try.

Try the Lead Database →

What This Means for Your Sales Flow (Not Just Your Chatbot)

I want to zoom out here because this isn't really a chatbot post. The chatbot is just where the problem is most visible.

The same mistake happens in cold email sequences. Someone replies to email one with a specific question about your offer - and the autoresponder fires email two at them anyway. Email two has nothing to do with their question. It's the next step in the sequence. You've just told a warm lead that you're not listening.

It happens on discovery calls. The prospect answers your question and then adds something - a detail, a concern, a signal - and the salesperson checks the box and moves to the next question on their script. The signal gets buried. The call ends. The prospect doesn't move forward because they never felt heard.

It happens in follow-up sequences. Someone opens your email four times and never replies, and your system just keeps sending the same template on the same schedule because it can only track opens and days-since-send. It can't interpret "this person keeps coming back to this email but hasn't responded yet" as a signal that requires a different message.

The common thread: rigid sequential logic optimized for the average user, applied uniformly to users who are doing more than average. The above-average engagement gets penalized because the system wasn't designed to handle it.

If you're building lead capture flows - chatbot or otherwise - the design question you need to answer is: what happens when a user gives me more than I asked for? If your answer is "the system ignores it," fix that before you scale.

The Prompt Engineering Side of This

One thing we worked out during the call: when you're using an AI to handle data validation inside a conversational flow, the prompt has to be explicit about multi-intent handling.

A prompt that says "validate this as a proper name and return yes or no" will do exactly that. It'll return yes or no. It won't tell you there was a question buried in the same message. You didn't ask it to look for that.

You need the prompt to say something like: validate the primary field value, return the validation result, and identify whether there is any secondary question or intent in the message that requires a response. Return both, separately, in a structured format.

We were working through a few versions of this - testing with GPT-4 to get a one-word validation response (yes/no or 1/0) plus a separate key for any secondary content that needs to be answered. The format is less important than making sure the prompt explicitly asks for both things. If you only ask the AI for field validation, that's all you'll get.

Test it with adversarial inputs: what happens if someone gives their name and asks a question? What about a valid email paired with a request to be removed from the list? Try a phone number without a country code and see what you get. Your prompt needs to handle the edge cases, not just the easy cases.

And test across different scenarios before you call it done. The double-response bug we saw on the call was a coding issue, but prompt issues can create similar-looking symptoms - two different answers, contradictory responses, the bot seeming to get smarter between messages. If you see that, look at both layers: where the function is being called in the code, and what the prompt is asking the AI to do.

The Takeaway

The people who type their name and ask a question in the same message are your best leads. They're curious and engaged, already doing more than the minimum. Your job - whether it's a chatbot, a sequence, or a salesperson - is to reward that engagement, not ignore it.

A system that punishes users for being helpful will eventually train them to stop being helpful. They'll learn to give you the minimum. One-word answers and fake phone numbers. They'll check boxes with no intent behind them. Because every time they tried to give you more, the system made them feel like they were talking to a wall.

Build flows that can handle a user who's doing more than one thing at once. It's not that much harder to build. It just requires thinking about the non-average case before you ship.

If you want to see how I structure the lead capture and follow-up side of outbound - the email sequences, the scripts, the frameworks that don't punish engaged prospects - the Cold Email Follow-Up Templates are a good starting point. And if you're sourcing leads to even put into these flows, ScraperCity's B2B database is what I use to build the lists before any of this starts.

The mechanics of outbound only work if the infrastructure treats your prospects like people. Start there.

Ready to Book More Meetings?

Get the exact scripts, templates, and frameworks Alex uses across all his companies.

By entering your email you agree to receive daily emails from Alex Berman and can unsubscribe at any time.

You're in! Here's your download:

Access Now →