cd /news/ai-tools/the-model-writes-the-review-reply-th… · home › topics › ai-tools › article
[ARTICLE · art-150108] src=dev.to ↗ pub= topic=ai-tools verified=true sentiment=· neutral

The Model Writes the Review Reply. The Owner Keeps the Promises.

A developer built Review Reply Writer, a local-first tool that uses Ollama and Gemma 3 4B to draft responses to customer reviews for independent cafe and hospitality operators, with an approval boundary that blocks any unauthorized compensation promises before text can be posted. The MIT-licensed Python application keeps business policy separate from customer text and model output, flagging detected unauthorized offers such as refunds or credits and requiring the owner to re-review any edited reply. The developer notes that demand, willingness to pay and time saved remain unproven.

by read5 min views2 publishedOct 14, 2026

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle. “The coffee was excellent, but I was charged twice. The waiter ignored my question about the bill.”

That fictional review has three things worth answering. Thanking the customer for the coffee is easy. Acknowledging the double charge and unanswered question takes more care. Promising a refund introduces a different decision: does the person writing the reply have permission to offer one?

I built Review Reply Writer for independent cafe and small hospitality operators. Gemma drafts the language locally. The owner supplies the business policy, reads the result, and approves the exact text before copying it for manual posting.

The Side Hustle hypothesis is paid installation, policy setup and support for an operator who wants local control without configuring a model. The application code stays free. Demand, willingness to pay and time saved remain unproven.

Watch the 68-second historical Gemma demonstration. Recorded October 13, 2026 Hawaii time, this earlier build uses a fictional cold coffee and 25-minute-wait complaint. It shows a real local Gemma draft, an added unauthorized refund blocking approval, the correction, approval and copy. The persistent banner identifies the earlier code. Captions were added later. Playback was checked without a Descript login on October 14.

This is an automated demonstration, not operator feedback or a recording of the current source. The visible Quality Lab screen is not a completed evaluation.

To inspect the same approval boundary in the current application, use its fictional Duplicate billing example with no compensation authorized:

The current duplicate-billing path has executed HTTP fixture evidence using labelled templates. It has not been recorded in a current Gemma/browser run. An edited reply is not untouched Gemma output.

Repository: https://github.com/nolankido/reviewReplyWriter The repository is publicly accessible without a GitHub login. The application is MIT licensed; Gemma's model terms are separate.

Run py -3 rrw_setup.py --launch on Windows or python3 rrw_setup.py --launch on macOS/Linux. The application uses Python's standard library and local browser assets. Model-written drafts require Ollama and downloaded gemma3:4b weights. Clearly labelled template preview works without either.

Original coding began October 13, 2026 at approximately 8 AM Hawaii time, during this challenge's development window.

The editor places the saved review beside the reply. Details to keep links recognized concerns to exact excerpts of the original text. Prompts, fallbacks and checks share a bounded interpretation, so “charged twice” does not quietly become a generic billing apology.

An unanswered question also matters. A reply can mention the coffee and still leave the customer's main frustration untouched. Unsaved edits mark the checks stale until the owner saves and rechecks.

The interface says Mention detected because a phrase match cannot establish understanding. The owner still reads the whole review and reply.

The first version required a make-it-right offer in negative replies. That was a bad default: it encouraged commitments without permission.

Now authorization is separate from customer text, earlier replies and voice examples. Exact owner statements can permit an offer or action. Detected unauthorized promises block approval, whether introduced by the model, a fallback or an edit. An authorized credit cannot silently become a larger credit plus a refund.

Approval is tied to the saved text and check version. Changing the reply requires a new review. Serious allegations are conservatively referred for personal handling before routine generation.

A lost response should not mean a lost draft. Saved generation receipts let the owner check an interrupted request without automatically running it again. Pending edits, private recovery copies and checked backups support recovery. Recovery leaves authorization unchecked and does not resurrect old approval.

The recurring workflow includes saved profiles and a one-business CSV inbox. Each reply still needs individual review. Nothing posts automatically.

On October 14, the local release check ran 569 passing Python tests. Linux launcher HTTP workflows and Node state checks also have executed evidence. These checks do not establish current Windows, browser/mobile or model behavior.

Two historical three-case Gemma smoke runs remain in the repository. The later run produced three model drafts on first attempts, but both runs predate current drafting-source changes and have no recorded human assessments. They do not validate this version's reply quality.

A historical false rejection of “should have addressed” and an accepted reply that softened an exact wait duration helped expose limits in the checks. Quality Lab preserves attempts, rejection reasons, retries, fallbacks and available model receipts so those failures remain inspectable.

AI assistance helped implement, test and prepare the project and this write-up.

Downloaded Gemma weights support inference on the owner's machine without a hosted-model charge for each draft. Hardware, electricity and setup still cost money. Local execution gives the owner control over the customer context sent to the model and the runtime processing it.

Open application code makes the policy boundary inspectable: what entered the prompt, why a candidate was rejected, and which fallback was used. The browser uses local assets without external fonts, scripts or analytics.

The initial model download needs internet access. Privacy still depends on the computer and Ollama configuration; a loopback URL alone does not prove a private model runtime.

The English pattern checks can miss unfamiliar topics, sarcasm and subtle claims. They cannot establish whether an owner-supplied fact is true.

Current-source Gemma results need genuine human assessment. Setup usability, operator preferences, comparative task times and willingness to pay need real observation. No operator trial, customer adoption or revenue is claimed.

Best Use of Gemma. Gemma 3 generates the AI drafts through Ollama. Template previews and fallbacks are separately labelled and are not counted as Gemma output.

── more in #ai-tools 4 stories · sorted by recency
── more on @review reply writer 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/the-model-writes-the…] indexed:0 read:5min 2026-10-14 · —