# My first user said 'yeah, absolutely': shipping a review-reply product in five days with an agent team

> Source: <https://dev.to/devbrewery/my-first-user-said-yeah-absolutely-shipping-a-review-reply-product-in-five-days-with-an-agent-5h6j>
> Published: 2026-10-18 13:14:06+00:00

*This is a submission for the [Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle](https://dev.to/devteam/join-the-hacktoberfest-open-source-ai-challenge-side-hustle-2550-in-prizes-across-18-winners-55ba)*

**replydesk** is a review-reply desk for small businesses. Local shops live and die by their Google and Yelp reviews, and answering them well is mind-numbing, never-ending work with an outsized effect on search ranking. replydesk turns a stack of reviews into ready-to-post replies that sound like the owner wrote them on their best day.

The flow: sign up at **[replydeskhq.tech](https://replydeskhq.tech/)**, describe how you talk (the *tone guide*), paste in your reviews — and replydesk triages every one into **thank-you**, **fix-it**, or **needs-a-human**. Legal threats, safety claims, and refund disputes never get an auto-draft; they get a plain reason and a human. Everything else gets a reply drafted in the owner's voice by **GLM-5.3-Flash**, an open-weight model (MIT license), then run through a fact-grounding check that rejects any promise, price, name, or policy that doesn't trace back to the tone guide or the review itself. Fail twice and you get a clearly-labeled template instead of an invented fact. You edit, you copy, you post it to Google. Nothing is ever posted for you.

Who pays: solo operators and small teams — the people for whom review-replying is real work but not a job. A founding member signed up this week at **$9/month** — he said he'd pay and asked to set up a payment plan.

**Live product:** [https://replydeskhq.tech/](https://replydeskhq.tech/) — sign up, activate the founding trial (no card), paste reviews, draft replies.

**Recorded offline run** (no key, no network — the same pipeline on committed fixtures): [https://replydeskhq.tech/demo/](https://replydeskhq.tech/demo/)

Live drafting is served from my own machine through an accountless tunnel — if it's ever offline the product hands you clearly-labeled template drafts instead, and the recorded demo above is always up.

A review-reply desk for small businesses: paste the raw copy from your Google
Business Profile or Yelp page, and replydesk triages every review (praise
mixed, needs-a-human) and drafts a reply in your own voice — grounded in your
tone guide, with a verifier that rejects any draft inventing facts your paste
never contained. The offline core runs entirely from committed fixtures, and a
recorded demo renders the full flow without a network. Hosted demo and help
[replydeskhq.tech](https://replydeskhq.tech/) ·
[recorded demo](https://replydeskhq.tech/demo/) ·
[help](https://replydeskhq.tech/help/).

The open-source core is model-agnostic: it ships pointed at GLM-5.3-Flash
(MIT weights) but speaks to **any OpenAI-compatible endpoint** — set
`LLM_BASE_URL` and `LLM_API_KEY` in a gitignored `.env` and it runs.

Python 3.12, standard library only — no dependencies to install.

```
# offline demo, no key needed
py app.py --demo
# online mode: copy .env.example to .env and fill endpoint + key
py app.py --online

#
```

…
The open-source core is **GLM-5.3-Flash** (open weights, MIT), called through any OpenAI-compatible endpoint — in the live demo the drafting bridge runs on my own hardware behind an accountless tunnel, with inference served by GLM-5.3-Flash over an OpenAI-compatible API. Because the weights are open, pointing the whole product at self-hosted inference — reviews never leaving the building — is one config line, not a rewrite.

Three deliberate design choices make it trustworthy enough to charge for:

The build itself was done by an **agent team**: an orchestrator (GLM-5.3, max thinking) briefing and verifying, an architect (GLM-5.3, high) designing, and a builder (GLM-5.3-flash, low) writing every line of application code. The suite is **240+ tests, fully offline, network always mocked**. The session with my first user was transcribed locally with open-source whisper.

Reviews are other people's personal data — names, complaints, bad days. A closed API means shipping that text to someone else's pricing page forever. Open weights mean the inference endpoint is a config line: the business, or a reseller serving small businesses, can run replydesk on their own hardware and the reviews never leave the building. That's not a feature I could bolt onto a closed-API product; it's the reason this can be sold to people who answer their own phones. It also means no lock-in: any OpenAI-compatible model drops in. And the agent team that built it — open-weight GLM models in an open harness — is the same bet one layer up.

The entire repo was built by the agent team described above, one task per verified commit. The full decision log — every ruling, every caught defect, the honest post-mortems (two sub-agent push hangs, a missing `__main__` that made the server a silent no-op, a demo card mislabeled until an external review caught it) — ships in the repo as [`JOURNAL.md`](https://github.com/dev-brewery/replydesk/blob/main/JOURNAL.md); commits from builder sessions carry `Signed-off-by: GLM-5.3-flash (via pi)` trailers, and the exceptions (operational commits) are journaled there too.

A local business owner signed up at **replydeskhq.tech**, activated the founding trial, and pasted in a real review from his own Google Business Profile. The whole session was recorded as a voice memo (22 minutes, transcribed with an open-source whisper model running locally).

The moment that made the week: his first draft came out wordy — his own read was "a fair amount of almost saying it twice." We added two lines to his tone guide — *don't be too wordy, get to the point, always sign off with "God bless"* — and re-drafted. The reply came back tight and signed off in his voice. His reaction:

"See, I like that. I suck at putting all this together — but now reading this… I like it."

That's the product thesis in one sentence: not writing his reviews *for* him — sounding like him on his best day.

`star` words instead of icons). He fell back to typing `5 | review text` lines, which worked immediately — and the parser learned the dashboard shape the same day; both surfaces now paste cleanly.
His identity stays private — he is "a local business owner" — and the voice memo never leaves my devices.
