Back to Projects
LiveSaaS2025

Revoply

AI-powered platform that generates professional, brand-consistent responses to Google Reviews in seconds. Eliminate the manual burden of reputation management and turn every piece of customer feedback into a trust-building opportunity.

Next.jsTypeScriptOpenAINest.jsPostgreSQLTailwind CSS

Most businesses know they should respond to Google Reviews. Almost none of them do it consistently. Revoply fixes that — AI-generated responses that actually sound like the business wrote them, not like a chatbot.

The Problem Worth Solving

Responding to reviews builds trust and improves local SEO ranking. Google explicitly factors review response rate into local search ranking. Yet most business owners skip it entirely — not because they do not care, but because writing a unique, on-brand response to every review is genuinely time-consuming.

The tools that existed before Revoply were either generic AI wrappers that produced robotic output, or expensive agency services. Neither solved the core problem: responses need to match the business's voice, reference the specific feedback the customer left, and feel human.

Architecture

Revoply is split into two services. The Next.js frontend handles authentication, the dashboard, and the review management UI. The NestJS backend manages the OpenAI integration, Google My Business API polling, and the response queue.

Next.js (frontend)
  └── Auth (NextAuth + PostgreSQL sessions)
  └── Dashboard UI
  └── REST calls → NestJS API

NestJS (backend)
  └── Google My Business API polling (cron)
  └── OpenAI response generation
  └── Response queue (BullMQ)
  └── PostgreSQL (reviews, responses, brand profiles)

Reviews are polled from Google My Business on a configurable schedule. When new reviews arrive, they are stored and optionally auto-queued for response generation based on the business's settings.

The Hard Part: Brand Voice

Generic AI responses are immediately recognisable. The prompt engineering problem was getting GPT-4 to write in a business's specific voice without fine-tuning a model. The solution was a structured brand profile: tone descriptors, example phrases the business actually uses, topics to avoid, and a sample of previous manual responses.

// Brand profile fed into every generation prompt
interface BrandProfile {
  businessName: string;
  industry: string;
  tone: 'formal' | 'friendly' | 'casual' | 'professional';
  keywords: string[];       // phrases to include naturally
  avoidPhrases: string[];   // things that break brand voice
  exampleResponses: string[]; // few-shot examples
}

Combined with the review content itself — star rating, specific complaints or praise, reviewer name — the prompt produces responses that pass the "did a human write this?" test most of the time.

Rate Limiting the OpenAI API

A business with hundreds of reviews queued at setup would hit OpenAI rate limits immediately if processed naively. BullMQ handles the generation queue with a concurrency limit and exponential backoff on failures. Businesses on lower plans get a slower processing rate; higher plans get priority queue slots.

The Monetisation Layer

Stripe powers the subscription tiers. The integration needed to handle three cases cleanly: new subscriptions, plan upgrades mid-cycle (prorated), and cancellations that should allow access until the period ends. Stripe webhooks feed into a NestJS handler that updates the database and invalidates the session cache.

What I Would Do Differently

The Google My Business API has significant limitations that were not obvious until mid-build. Polling is the only viable option for most account types — webhooks exist but require verification steps that not all business accounts can complete. I would plan around the polling constraint from day one rather than designing for webhooks first.

I would also build the brand profile onboarding as a multi-step interview flow from the start, rather than a single settings form. The quality of responses correlates directly with how detailed the brand profile is, and a guided setup produces better profiles.

Status

Revoply is live at revoply.com. It handles real reviews for real businesses. The AI generation cost per response is low enough that margins are healthy at the current pricing tiers.

Interested in working together?

I am available for new projects — whether you have a clear brief or just an idea worth exploring.