
Project Overview
A US local services business operating multiple locations was receiving dozens of Google and Yelp reviews every week and responding to fewer than 30 percent of them. Inconsistent and delayed responses were affecting local search rankings and the impression the business made on prospective customers who read reviews before making a booking decision. We fine-tuned a lightweight foundation model on their review history and brand voice guidelines to draft personalized responses for each review, paired with a sentiment-based flagging system so negative reviews were always reviewed by a human before going live.
The Challenge
The business had the motivation to respond to reviews but not the bandwidth. With multiple locations each generating reviews across two platforms, the volume required more consistent attention than any single staff member could maintain alongside their other responsibilities. Reviews were not being ignored because the team did not care about them: they were being ignored because the team was stretched and review response was always the task that got deprioritized when something more urgent came up.
- Dozens of reviews per week across multiple locations and two review platforms
- Response rate below 30 percent, with the majority of reviews going unanswered
- Average response time measured in days rather than hours when responses were sent at all
- Inconsistent response quality, with some responses feeling personal and others formulaic depending on who wrote them and how much time they had
- Negative review responses required especially careful handling: a poorly worded response to a negative review carries public reputational risk that a non-response does not
Our Solution
We fine-tuned a lightweight foundation model on the business’s complete review history and the brand voice guidelines their team used for customer communications, producing a model that could draft responses that felt genuinely personal and location-specific rather than templated. We paired the model with a sentiment classification layer that automatically routed negative reviews to a human reviewer before any response was posted publicly.
- Review History Training: We compiled and cleaned the business’s full review history across both platforms and all locations, stratifying by rating, location, and service type to ensure the model learned response patterns appropriate to each context.
- Brand Voice Encoding: The team’s brand voice guidelines were encoded into the model’s instruction-tuning format, covering tone, language preferences, how to acknowledge specific service types, and what to avoid in public-facing responses.
- Sentiment-Based Routing: A sentiment classification layer ran before the response model on every incoming review. Negative reviews were flagged and queued for human review before any draft was posted. Positive and neutral reviews with high model confidence were queued for rapid approval or auto-posted based on a threshold the team configured.
- Location Specificity: The model was trained to reference the correct location and service context in each response, so responses did not read as interchangeable across the business’s different sites.
Technical Approach
The pipeline pulled new reviews from Google and Yelp via their respective APIs on a scheduled basis throughout the day. Each review passed through the sentiment classifier before reaching the response model. The response model generated a draft that was surfaced in a lightweight review interface, allowing the team to approve, edit, or reject each response before it was posted through the platform API. Negative review drafts were always routed to a designated team member for review before posting, regardless of draft quality assessment.
Results & Impact
- Response rate went from under 30 percent to near 100 percent across all locations following deployment
- Average response time dropped from several days to under 24 hours across all platforms and locations
- Local search visibility improved in the months following deployment, consistent with the known relationship between review response rates and local search ranking signals
- All locations were covered consistently for the first time, eliminating the variation that had existed between higher-traffic locations that received more attention and lower-traffic locations that were frequently overlooked
- Negative reviews were flagged reliably for human review, maintaining the team’s control over the responses that carried the highest reputational risk
Lessons Learned
The sentiment routing layer for negative reviews was not optional from the start of the project. The team was clear that they would not deploy a system that auto-posted responses to negative reviews without human sign-off, and that was the right boundary to set. The risk of a poorly worded public response to a complaint is qualitatively different from the risk of a slow response to a positive review. Designing the system to reflect that asymmetry made the team comfortable deploying it, and that comfort drove the adoption rate that produced the results. The location-specificity requirement also took more iteration than anticipated: early drafts were technically correct but felt interchangeable across locations, which was exactly what the team wanted to avoid. Several rounds of refinement on the location context layer were needed before the responses felt genuinely site-specific.