Give every support request a ticket number and a status link
Published 2026-10-26
Any team that sells something gets support requests: a login that fails, an order that did not arrive, a question about a bill. They come in through a contact form, a shared inbox, or a direct email to whoever answered last time. The person asking has no idea whether anyone saw it, so they write again, and the second message lands somewhere else. ChatGPT or Claude can write a good answer once you paste the request in. It cannot receive the request, number it, or tell the customer where it stands.
What a chat cannot do alone
A chat has no address that customers can write to and no form they can submit. It keeps no list of open requests, so it cannot tell you which ones are a week old. It cannot send a confirmation the moment a request arrives, and it cannot host a page that shows the current status. Every one of those steps still depends on someone remembering to do it.
What your assistant builds with Sails
Sails is a coding agent you connect over MCP, with cloud deployment built in. Your assistant writes the code and Sails runs it in the cloud. For support it builds a few small pieces.
A table of tickets, with a short number, the customer's name and email, the subject, the full message, a status of new, in progress, waiting on customer, or closed, who owns it, and a timestamp for each change. A second table keeps every message on the ticket in order.
A support mailbox and a form on your domain. Both feed the same handler, which creates the ticket, saves any attached files, and replies at once from your address with the ticket number and a private status link. When the customer replies to that email, the message joins the same ticket instead of starting a new one.
A status page behind the private link. It shows the ticket number, the current status, and the last update, and it needs no account or password.
A scheduled job written as ordinary shell code with no model in the loop. Every weekday morning it emails you a list of tickets that are new, unassigned, or have had no update in two days.
Why it works
The customer gets an answer in seconds, even if the real reply takes a day, and the status link stops most of the repeat messages. Every request lives in one table, so nothing is lost in a personal inbox. When you ask your assistant for help with a reply, it can read the whole ticket history from the table instead of a pasted fragment, and it can add a new status or a weekly report in any later chat.
Hand it off
Copy this into your assistant:
Add Sails from https://sails.app/start. Build a support desk on my domain. Keep a table of tickets with a short number, customer name and email, subject, status, owner, and timestamps, plus a table of messages for each ticket. Set up a support mailbox and a form that both create tickets, save attachments, and reply from my address with the ticket number and a private status link. File customer replies onto the same ticket. Host a status page for each link with no login. Write a weekday scheduled job in plain shell code with no model involved that emails me tickets that are new, unassigned, or quiet for two days. Show me how to change a ticket's status. Ask me anything you need before you start.