Inspiration

The front office of a small business is still a person with a phone. Quotes live in WhatsApp. Invoices live in a notebook. Follow-up happens at midnight, or not at all. Shops that need an operator most cannot hire one, and they will not sit through a six-week “AI transformation.” They will pay for someone who takes the mess, decides, and hands back something they can run tomorrow morning.

What it does

MossDesk is a Gemini-operated firm, not a chatbot. The customer opens a job. Five agents execute in sequence, and each one is allowed to bind the business:

  1. Scout — operating picture, constraints, risk flags
  2. Pricer — take or decline; SKU; USD price inside a hard policy (floor $29 / ceiling $249)
  3. Operator — copy-paste scripts, a 7-day sequence, metrics
  4. Collector — invoice terms and dunning
  5. Auditor — SHIP, ESCALATE, or REJECT with a quality score (under 70 cannot ship)

The customer pays the price the Pricer set. Checkout does not let a human override it. The operator desk (/ops) is the production log: jobs, decisions, latency, model id, shipped vs escalated, and Stripe revenue separated from demo markers.

How we built it

Every agent call is a live Gemini generateContent request with JSON output. Pricer and Auditor decisions are binding, not suggestions. Policy clamps sit around the model, not instead of it. The stack is Next.js, a Cloud Run Dockerfile, and Stripe-ready checkout. Demo-payment buttons are labeled and excluded from the P&L.

What we learned

If an agent cannot name its decision in a verb — SET_PRICE, PACKAGE_READY, INVOICE_TERMS, SHIP, ESCALATE — it does not belong in the firm. Latency, model id, and rationale are stored with the job so a shop can ask “why did you charge $79?” and get an answer that is not a vibe.

Challenges

Gemini 2.5 Flash is no longer available to new users, so production uses gemini-3.5-flash-lite. Direct Google API calls from some networks fail without a proxy. The part no repository can fake remains the same: an arms-length customer who pays. Related-party charges, if any, are listed separately as the rules require.

Testing

  1. Open the site (GitHub README has the latest URL).
  2. Click Run live bakery job (30–90s) or /start with your own mess.
  3. Watch Scout → Pricer → Operator → Collector → Auditor.
  4. Open /ops, /api/health, and /api/evidence.
  5. /pay/[id] — Stripe if configured; the local demo-pay button is not revenue.

Category: Small Business Services
Google Cloud product: Cloud Run
Gemini model: gemini-3.5-flash-lite
Circle Agentic Economy Prize: No (checkout is human-completed; not agent-driven USDC).

Built With

Share this project:

Updates