We built our treg-powered CRM on spawnpoint
This is the CRM we use to find spawnpoint's own customers. It finds people through treg and runs on spawnpoint, and nobody wrote a line of it by hand. We described it to Claude Code, and about fifteen minutes later it was online at a private link: a Node server, a Postgres database, a Discord bot that stays connected around the clock, and an open AI model, all on spawnpoint. Over the next two hours we changed it more than ten times, and each change was live in about two minutes.
When one of us finds someone worth emailing, we paste their LinkedIn link into a channel in our Discord. The bot looks the person up through treg, finds their work email and checks that it can receive mail, writes the email from one of three versions we are testing, and saves it as a draft in our Gmail through a short Google script. Then it replies in Discord with who it found and what the lookups cost.
treg gives one key access to thousands of data tools from over 100 providers, paid per call. For each lookup it tries the cheapest provider that can answer and moves to the next one when a provider finds nothing. Some providers charge even when they find nothing, so the bot sets a spending limit on every call: an email lookup can spend at most five cents.
We read each draft and send it ourselves. Every 30 minutes the bot asks Gmail which drafts went out and which got answers, and moves each lead along the board. On day three and day seven without a reply, it pings us in Discord with the follow-up ready to paste. Each lead costs about half a cent in lookups.
The deploy
Claude sent the files to spawnpoint as a Node app. spawnpoint started a machine, installed the packages, started the server, and answered with a link. Every later change went to the same project under the same name, so the link and everything stored behind it stayed the same through more than ten updates.
The database
The CRM keeps every lead in Postgres: who they are, their email, the draft, and where they stand. Claude added the database right after the first deploy, without us asking, because the app had to remember leads between restarts. When we later added follow-up tracking, the app added its new columns when it started and kept every row it already had.
Always on
spawnpoint puts an app to sleep after an hour with no visitors and wakes it on the next visit. That suits a web page, but a Discord bot holds an open connection to Discord and gets no visitors at all, so a sleeping bot would miss every link we pasted. Claude turned on always-on for this app, which keeps its machine running. Pro includes always-on for three apps.
AI without a key
The first version wrote a personal opening line for every email. It searched the web for what the person had built and asked gpt-oss-120b, one of the open models that run on spawnpoint, to write the line. The app needed no AI account and no key: spawnpoint gave it access to the models when it deployed. We later chose fixed copy for every email, so the model is switched off now, and one setting turns it back on.
Private, with its keys in the console
The board is private. Only we can open it, and the app has no sign-in page of its own, because spawnpoint checks who the visitor is before the request reaches the app. The keys for Discord, Gmail, and treg went into the app's settings in the spawnpoint console. A saved key cannot be read back, and the app restarts with the new value by itself.
When something broke
Two things went wrong, and each took a few minutes to fix. The first time we saved the Discord key, we pasted its name into the box where its value goes. Claude read the app's log through spawnpoint, had the app report the key's length without showing the key, saw 13 characters instead of about 70, and told us which box to fix. Later, a second Claude session was redesigning the board while the first was changing the emails, and one update went out without some of the new page's files. It failed to start, spawnpoint put the previous version back by itself, and the bot was back online in under a minute. We sent the update again with the missing files.
The link never changed through any of this. The CRM we use today is at the same address as the first version, with every lead it has saved.