The board / Gated
Plyco storefront agent
Answers the five questions every trade store gets. Hands the sixth to a person.
Rails
- aloneReadsProducts, orders, stock, prices and delivery estimates, live.
- aloneWritesBuilds the cart. Raises the ticket.
- with a personMoneyQuotes freely. Refunds only after a person says so.
- alonePublicTalks to customers on the storefront.
- aloneUnattendedOn duty whenever the store is.
- a person, every timeDecidesHands over when it should, and before any money moves back.
Problem
Support tickets on a trade store are mostly the same five questions, and the sixth needs a human. The agent should answer the five with live data and get out of the way for the sixth.
The risk is not a wrong answer. It is a confident one about money.
System
Decisions
- Two models by stakes: Claude Haiku 4.5 for chat, Claude Sonnet 4.6 for anything that changes money, such as refund extraction.
- Visual search embeds product images with CLIP ViT-L/14 on Replicate into Upstash Vector. A customer photographs a board and gets matches.
- Refunds are staff-gated through HubSpot. The agent prepares; a person approves.
- Behavioural evals run against live models, so prompt changes are measured rather than hoped.
- BotID in front of the endpoint keeps the model bill for humans.
Stack
Next.js, Vercel AI SDK, Claude Haiku 4.5, Claude Sonnet 4.6, CLIP, Upstash Vector, Shopify, HubSpot