| A one-star review at midnight costs you more than a one-star review at noon. The gap in between is the real problem. Here's what I learned building two projects to close it. |
I want to walk through a problem I kept running into while scoping two recent projects, because the problem itself turned out to be more interesting than either solution on its own.
Here's the scenario: a customer buys a product, it arrives defective, and they leave a one-star review at midnight. Nobody on the support team sees it until the next morning. By then, the review has already been read by hundreds of other shoppers, maybe shared once or twice, and the original customer has already written the company off.
Ask most teams what went wrong here, and they'll point at the review itself — "we got a bad review." That's not really the failure. The failure is the gap between the moment a customer tells you something and the moment your business does anything about it. A one-star review at midnight and a one-star review at noon are the same complaint. The difference that actually costs you customers is the eight hours in between.
That gap is invisible when you're handling ten reviews a day. It becomes a structural problem the moment you're handling thousands of them, spread across a marketplace, an app store, and three social platforms — which is exactly the situation most growing businesses find themselves in sooner than they expect.
Lesson One: A "Negative" Label Hides More Than It Reveals
The first project I built was, on the surface, a standard sentiment classifier — trained on movie reviews, predicting positive or negative. But the more I worked with it, the clearer it became that stopping there throws away almost everything useful in the text.
Two "negative" reviews can be negative for completely different reasons:
- One customer is annoyed about a slow delivery.
- Another customer received a genuinely broken product.
Both get flagged "negative." Both, in a naive system, get treated the same way. That's the mistake I wanted to design around.
So instead of a single sentiment score, the system pulls apart a review across several dimensions:
- The emotion underneath the words — is this anger, disappointment, or just mild surprise? (This came from word embeddings and cosine similarity, not simple keyword spotting.)
- What aspect of the product or experience the review is actually about — story vs. acting vs. visuals in the movie-review dataset; price vs. durability vs. support in a commercial one.
- How similar this complaint is to others, using BERT-based embeddings, so that ten different customers describing the same defect in ten different ways get grouped as one recurring issue instead of ten unrelated complaints.
The practical effect: instead of a dashboard that says "40% negative today," you get one that says "12% of today's negative reviews are about shipping delays, and 6% are about a specific hardware defect that's trending upward." That second version is something a business can actually act on.
Lesson Two: Understanding Without Action Is Just a Nicer Dashboard
The second project started from a blunter question: once you know what customers are saying, what do you actually do about it — especially when there are too many reviews for a human to respond to each one individually?
This is the part where it's tempting to just hand the problem to an LLM and let it reply to everyone. I'd push back on that instinct. An AI responding to customers at scale, with no oversight, can get facts wrong, drift from brand tone, or worse — say something that creates a compliance problem nobody catches until it's already public. Speed is only a win if what's moving fast is also correct.
So the system I built treats "fast" and "safe" as two requirements that both have to be satisfied, not traded off against each other:
- Reviews get pulled straight from a live database rather than a static export, so the system reflects what's happening right now.
- Each review gets tagged not just with sentiment but with urgency and intent — is this praise, a complaint, a product issue, or a feature request? Each of those routes to a different team.
- Recurring themes get surfaced across reviews, so a support lead can see a pattern forming before it becomes a crisis.
- An LLM drafts a response aligned to company policy and tone — but it drafts, it doesn't send.
- A human reviews and approves before anything reaches a customer.
That last point is the one I'd defend the hardest. The value of GenAI here isn't replacing judgment — it's clearing out the repetitive 80% of the work so a human's judgment gets spent on the 20% that actually needs it.
Two Questions, Not One
What I like about having built both pieces is that they answer two genuinely different questions that are easy to accidentally merge into one:
What are customers really telling us? — that's a data science and NLP problem.
How should we respond, responsibly? — that's a systems and process design problem, and the interesting decisions there are mostly about where you deliberately slow the system down so a person stays in the loop.
Neither project is complete without the other. Understanding without a response mechanism is a report nobody acts on in time. A response mechanism without deep understanding just replies fast to the wrong problem.
I'll be publishing the deeper technical breakdown of both — the actual pipeline, the model choices, and the specific tradeoffs I ran into — in the posts that follow.
I'd genuinely like to hear how others think about that tradeoff.
Comments
Post a Comment