Drafting multilingual replies to customer reviews offline with a small local model
A developer built a 120-line script that drafts on-brand replies to guest reviews in the reviewer's own language, using Gemma 3 4B on an ordinary CPU through llama.cpp. On 10 real reviews of his family's hotel, every draft was in the right language and specific.
Evidence: The source shows its work: steps, screenshots, code or data you can inspect.
The business problem
Replying to public reviews matters for reputation but takes time, especially across several languages, and paid reply tools charge a monthly fee per property. Sending customer reviews to a cloud API also raises privacy questions.
What was tried
1. Run a local llama.cpp server with Gemma 3 4B (quantized) on a normal CPU; no GPU or cloud service. 2. For each review, the first model call detects the language (temperature 0, returns a two-letter code). 3. The second call drafts the reply with a system prompt that works like a reputation-manager playbook: reply only in the detected language, 40 to 80 words, mention one specific detail, apologise without arguing, name a concrete fix for maintenance problems, avoid certain topics, sign as the business. 4. The detected language is restated in the user message. The author's first version just said to reply in the review's language, and the small model answered about half the English reviews in French; detecting first and stating the language explicitly fixed it. 5. Reviews can be processed in bulk from a CSV, or pasted into a small web page for non-technical staff, which returns a draft in about 20 seconds. 6. A person reads each draft (about 30 seconds) before posting. The brand voice lives in an editable prompt.
What was reported (positive)
On 10 real, unanswered Google reviews in several languages, the author checked all drafts: 10 of 10 in the correct language, 10 of 10 specific to the review, none arguing with the guest. He judged them good enough to post after a quick human read. Marginal cost per reply is zero beyond hardware already in place. No posted replies, response rates or rating changes are reported.
Limitations
Very small test (10 reviews), graded by the author himself. The business is a physical hotel, not an online business; the method should transfer to app store, marketplace or software reviews, but that was not tested. It is a hackathon challenge entry, which may favour a positive write-up. No evidence yet that the hotel or anyone else uses it day to day, or of any effect on ratings or bookings. Quality from a 4B model may vary on harder or hostile reviews.
What you need
A computer that can run llama.cpp, the Gemma 3 4B model weights, Python, and comfort running a script. The code is public.
With small models, make hard constraints mechanical: detect the language in a separate call and state it explicitly in the drafting prompt.
Sources
- DEV Community (jeffreyturov) ↗ Firsthand write-up, published October 13, 2026, main source
- Codeberg (review-concierge repository) ↗ Code repository, publication date unknown
Source published: October 13, 2026. Last reviewed here: November 3, 2026. Spot a mistake? Tell us.
Tools in this workflow
- llama.cpp: Runs the model locallyTry llama.cpp
- Gemma 3: Open-weight model that detects language and drafts repliesTry Gemma 3
Get new workflows like this by email
A short selection of the most useful new workflows, including the ones that did not work. Free, and you can unsubscribe at any time.
Related workflows
Keep your first 100 customers by hand with a free Claude Code retention skill: first result, weekly check, support templates and an honest cancel flow
A free, open-source Claude Code skill walks a solo founder through retention before 100 customers: define the first result, a 15-minute weekly check, simple support replies, a feedback loop and a no-dark-patterns cancellation flow.
Find out why your support agent breaks refund policy: replay real tickets as JSON decisions, then let code enforce the rule
A solo operator's support agent kept refunding outside a 30-day window. Replaying 30 real cases 20 times each showed rule position, prompt length and a vague 'be flexible' line caused it; code now makes the final call.
A Claude-built support inbox that drafts replies, pulls orders and learns from the owner's edits
A small online seller had Claude build Relay, an internal web app that turns email, Facebook and Instagram messages into tickets every 10 minutes, drafts replies with order data, and handles cancellations and returns after his approval.
Run a tiny paid app with Claude drafting support replies, changelogs and a weekly usage digest
A founder with about four focused hours a week has Claude draft feedback replies, a changelog line and a post each week for $2 a month. The product has 3 paying users and $4 MRR.