How I built a fully automated review collection system across 7 interconnected GoHighLevel workflows — routing customer sentiment, generating AI responses, and handling follow-ups without a single manual step.
After a rental order is completed, there's a window where the customer's experience is still fresh. That window is the best time to ask for a review. Miss it, and the moment is gone. Chase it badly, and you look desperate or disorganized.
The problem wasn't that reviews weren't being requested. It was that the whole process depended on someone remembering to do it at the right time, saying the right thing, routing the right response, and following up if nothing came back. All manually. All on top of everything else a busy operation already demands.
"Negative feedback needs a human-aware response within hours. Positive feedback needs to turn into an actual Google or Facebook review before the customer forgets they even had a good experience. Neither of those things happen reliably when someone has to remember to make them happen."
Beyond timing, the routing itself was a problem. A negative review and a positive review require completely different responses. Getting that wrong — sending a generic follow-up to someone who just had a bad experience — makes a recoverable situation worse. The system needed to think, not just send.
The goal was a review pipeline that could handle the full range of post-rental outcomes on its own: ask for feedback, read the sentiment, route accordingly, generate contextually appropriate responses using AI, follow up on silence, and know when to stop. No manual triggers. No one watching the inbox. Just a system doing exactly what a thoughtful person would do, at the right moment, every time.
The architecture ended up spanning 7 GoHighLevel workflows, a Make scenario handling AI message generation and external review posting, and OpenAI powering the response logic for negative feedback. Each stage hands off cleanly to the next. The whole thing runs as one connected pipeline from the moment a rental is marked complete.
| # | Workflow | What it does |
|---|---|---|
| 1 | SMS Evaluation | Sends the initial 1–5 rating request, monitors replies, and routes non-responders to drip |
| 2a | Negative Review | Alerts team, offers callback via AI-analyzed reply, follows up or closes based on response |
| 2b | Positive Review | Removes from eval flow, sends AI-generated review request, routes to chat loop |
| 3a | Review Chats 1 | Sends AI response from Make, waits 3 days, loops to Chats 2 or escalates to Follow Ups |
| 3b | Review Chats 2 | Mirrors Chats 1 logic — processes reply, generates AI response, loops back to Chats 1 |
| 4 | Follow Ups | 3-stage re-engagement sequence for non-responders; adds Conversation Ended after attempt 3 |
| 5 | Conversation Stopper | Clean exit — tags contact and removes from all active review workflows |
Before the system, collecting reviews meant someone on the team had to remember to follow up after every completed rental, write a message, send it, check for replies, route the response appropriately, and follow up again if nothing came back. All of that happened manually — or didn't happen at all.
After, the pipeline runs on its own from start to finish. Positive experiences get guided toward public reviews through a conversation that feels personal because the AI is generating contextually appropriate responses, not sending a canned template. Negative experiences get triaged with empathy and routed to the right outcome without anyone having to manually intervene unless a callback is actually requested.
What made this system worth building wasn't just the automation — it was the decision logic underneath it. A lot of review tools blast the same message to every customer and call it done. This one reads what the customer actually says, decides what that means, and responds accordingly. A negative experience doesn't get a generic "thank you for your feedback." A customer who already left a review doesn't get asked to do it again.
That's the difference between automation that runs and automation that thinks. The goal was always the second one.