# Gorgias Alternative: Support Desk

> Draft Shopify support replies and review responses on your own read-only token — no per-resolution meter. It writes drafts. You send them.

- Agent: Claude Code
- Plan: Starter (1 vCPU, 2 GiB RAM, 10 GiB disk)
- Forks: 0 · Stars: 0
- Creator: https://www.jurniti.com/creator-ca0ff2
- Tags: claude-code, customer-support, e-commerce, ecommerce, gorgias, shopify, support
- Requires config (you provide): ANTHROPIC_API_KEY
- Skills: review-responder, support-reply-drafter

**To fork:** open https://www.jurniti.com/templates/gorgias-alternative-support-desk and use the Fork action — it starts a Stripe Checkout for a new VM seeded with this template's persist disk (same flat plan price, no fork fee).

## README

# Your helpdesk charges you per resolution. This one has no send button.

Gorgias bills roughly **$0.90 every time its AI resolves a ticket** — and a
conversation it resolves can bill twice, once as a ticket and once as a
resolution, unless a human reaches the shopper within 72 hours.

You are paying a meter to have replies written.

The writing is the part worth having. The auto-send is the part that costs you
money and puts an unreviewed sentence in front of your customer.

So this template does the first and refuses the second.

## What you get on fork

A Claude Code box with two skills and a working tree already in place:

- **`support-reply-drafter`** — reads a ticket, pulls the actual order from your
  Shopify Admin API, and writes a reply into `~/support-desk/drafts/`. Every
  draft ships with a **Basis** block naming the API field behind each claim.
- **`review-responder`** — classifies a review (defect, shipping, sizing, wrong
  expectation, abuse), checks it against the real order where the reviewer is
  identifiable, and drafts a reply under 60 words aimed at the *next* buyer.
- **`~/support-desk/facts/GROUNDING.md`** — your return window, restocking fee
  and exception rules, plus the list of things the agent may never assert.

## The guard is a file, not a promise

`GROUNDING.md` carries a literal `NEVER_AUTOSEND` block, and both skills are
instructed to read it before every task. Ask the agent to send, email, or
resolve a ticket and it refuses and points at that file.

This matters because the alternative — writing "never auto-send" into a system
prompt — does not survive contact with a working agent. A file the fork
inherits does.

The token is read-only by design. Drafting is a read operation. There is no
write scope to misuse.

## What you supply

- `SHOPIFY_STORE_DOMAIN` and a **read-only** `SHOPIFY_ADMIN_TOKEN`
  (`read_orders`, `read_customers`, `read_products`, `read_fulfillments`)
- Your own Claude Code login
- Your actual policies, pasted into `GROUNDING.md`

Nothing is stored in the template. Export the token in your shell.

## First five minutes

1. Fork, then export your store domain and token.
2. Fill in the `## Store policy` section of `~/support-desk/facts/GROUNDING.md`.
3. Drop a real customer email into `~/support-desk/tickets/`.
4. Ask for a draft. Read the Basis block. Decide whether you agree.

Leave the policy section empty and you will get hedged, useless drafts — on
purpose. The agent will not invent a return window it cannot cite.

## Where this stops

It drafts. It does not send, post, refund, or resolve. There is no inbox
integration and no queue automation. If you want tickets closing themselves on
a per-resolution bill, that product exists and this is not it.

It is built for a Shopify store. The Admin API calls assume Shopify; a
WooCommerce or BigCommerce store would need the fetch step rewritten.

Verified on build: the skills, the working tree and the `NEVER_AUTOSEND` guard
are present on a fresh fork, and no token shape exists anywhere in the snapshot.
The end-to-end draft-from-live-order run is yours to make with your own store.
