{"slug": "my-first-user-said-yeah-absolutely-shipping-a-review-reply-product-in-five-days", "title": "My first user said 'yeah, absolutely': shipping a review-reply product in five days with an agent team", "summary": "A developer built replydesk, a review-reply desk for small businesses that triages Google and Yelp reviews into thank-you, fix-it, or needs-a-human categories and drafts replies in the owner's voice using the open-weight GLM-5.3-Flash model, with a fact-grounding verifier that rejects any promise, price, name, or policy not traceable to the tone guide or the review. The open-source core is model-agnostic, runs on Python 3.12 with only the standard library, and speaks to any OpenAI-compatible endpoint via LLM_BASE_URL and LLM_API_KEY. The build was carried out by an agent team — an orchestrator, architect, and builder — and the project reports 240+ fully offline tests with network calls mocked, plus a first paying founding member at $9/month.", "body_md": "*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)*\n\n**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.\n\nThe 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.\n\nWho 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.\n\n**Live product:** [https://replydeskhq.tech/](https://replydeskhq.tech/) — sign up, activate the founding trial (no card), paste reviews, draft replies.\n\n**Recorded offline run** (no key, no network — the same pipeline on committed fixtures): [https://replydeskhq.tech/demo/](https://replydeskhq.tech/demo/)\n\nLive 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.\n\nA review-reply desk for small businesses: paste the raw copy from your Google\nBusiness Profile or Yelp page, and replydesk triages every review (praise\nmixed, needs-a-human) and drafts a reply in your own voice — grounded in your\ntone guide, with a verifier that rejects any draft inventing facts your paste\nnever contained. The offline core runs entirely from committed fixtures, and a\nrecorded demo renders the full flow without a network. Hosted demo and help\n[replydeskhq.tech](https://replydeskhq.tech/) ·\n[recorded demo](https://replydeskhq.tech/demo/) ·\n[help](https://replydeskhq.tech/help/).\n\nThe open-source core is model-agnostic: it ships pointed at GLM-5.3-Flash\n(MIT weights) but speaks to **any OpenAI-compatible endpoint** — set\n`LLM_BASE_URL` and `LLM_API_KEY` in a gitignored `.env` and it runs.\n\nPython 3.12, standard library only — no dependencies to install.\n\n```\n# offline demo, no key needed\npy app.py --demo\n# online mode: copy .env.example to .env and fill endpoint + key\npy app.py --online\n\n#\n```\n\n…\nThe 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.\n\nThree deliberate design choices make it trustworthy enough to charge for:\n\nThe 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.\n\nReviews 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.\n\nThe 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.\n\nA 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).\n\nThe 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:\n\n\"See, I like that. I suck at putting all this together — but now reading this… I like it.\"\n\nThat's the product thesis in one sentence: not writing his reviews *for* him — sounding like him on his best day.\n\n`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.\nHis identity stays private — he is \"a local business owner\" — and the voice memo never leaves my devices.", "url": "https://wpnews.pro/news/my-first-user-said-yeah-absolutely-shipping-a-review-reply-product-in-five-days", "canonical_source": "https://dev.to/devbrewery/my-first-user-said-yeah-absolutely-shipping-a-review-reply-product-in-five-days-with-an-agent-5h6j", "published_at": "2026-10-18 13:14:06+00:00", "updated_at": "2026-10-18 13:16:59.809075+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "large-language-models", "ai-products", "developer-tools"], "entities": ["replydesk", "GLM-5.3-Flash", "GLM-5.3", "Google", "Yelp", "Hacktoberfest"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/my-first-user-said-yeah-absolutely-shipping-a-review-reply-product-in-five-days", "markdown": "https://wpnews.pro/news/my-first-user-said-yeah-absolutely-shipping-a-review-reply-product-in-five-days.md", "text": "https://wpnews.pro/news/my-first-user-said-yeah-absolutely-shipping-a-review-reply-product-in-five-days.txt", "jsonld": "https://wpnews.pro/news/my-first-user-said-yeah-absolutely-shipping-a-review-reply-product-in-five-days.jsonld"}}