Completed jobs enter through one validated intake path.
The intake workflow validates each job before the idempotent PostgreSQL upsert.
BrightFlow asks once when a completed service case closes. Every eligible customer gets the same review link and the same path to a person.
Manual review follow-up is easy to miss, and one fixed delay ignores the difference between a drain cleaning and a larger installation. The system also has to ask fairly. Rating, sentiment, job value, technician, complaint status, and the expected review never decide who receives the link.
I built this demo for BrightFlow, a fictional Austin plumbing company. Eligibility checks completion, contactability, consent, duplication, case closure, and a uniform 90-day frequency limit.
Problem replies reach the owner without retracting the review link.
PostgreSQL owns timing, leases, weekly caps, sends, suppressions, replies, and idempotency. The longest service line sets the delay. Gmail handled the controlled email test. SMS stays disabled until an approved A2P campaign exists.
Every eligible message uses fixed copy with both the review link and a way to reply to a person. The Cloudflare redirect uses an opaque token and records no IP address or user agent.
All 39 automated checks passed. The controlled allowlisted run delivered the initial request and one final reminder, recorded one tracked click and one redacted problem reply, then sent the owner alert and static acknowledgement. A token-rotation bug surfaced during the click test. I fixed the D1 upsert, added a regression test, deployed the Worker, and repeated the click successfully.
Controlled result: 39/39 tests passed. The initial request and one reminder arrived once each. PostgreSQL recorded one click and one redacted problem-reply event. The owner alert and static recovery acknowledgement both arrived.
Current limits: The Gmail credential can send but cannot read the inbox, so the reply test used a provider-confirmed delivered fixture after automatic ingestion returned 403. I did not run a service restart. SMS, Google Business Profile OAuth, and review totals remain staged. The dashboard totals are synthetic and labeled that way.
$349/month. No setup fee. The first month is due before the build starts. Month to month after that, cancel anytime. Monthly service includes monitoring, maintenance, updates as the business changes, one improvement, and a short summary.
BrightFlow is fictional. This is controlled test evidence, not a client result or conversion claim. No Google Business Profile was created.
Like this project
Posted Jul 28, 2026
Built and tested a fair review follow-up system with fixed copy, a 90-day limit, one reminder, owner alerts, and no rating or sentiment gate.