StudentQR
The engine behind every automation we ship
We built our own automation platform, and every workflow we deliver runs on it. It is small enough to run on a modest server, quick for our team to change, and it draws each workflow as a diagram anyone can follow. AI assistants like Claude and ChatGPT can check on it and fix things through MCP.
- the whole platform, in one container
- 188 MBthe whole platform, in one container
- a changed workflow goes live without a restart
- 0 downtimea changed workflow goes live without a restart
- tokens for an AI assistant to answer “what’s broken?”
- < 300tokens for an AI assistant to answer “what’s broken?”
- recorded, with an alert the moment one fails
- Every steprecorded, with an alert the moment one fails
An automation platform built for the way we work
Most automation platforms are built for someone dragging boxes around a screen. Most of their weight goes into that editor and hundreds of integrations nobody uses. They are heavy to host, hard to review, and when something breaks, usually nobody knows.
We wanted the opposite: small, fast to change, and impossible to fail quietly. So we built Automator, and moved every client automation off n8n onto it.
Before
A typical automation platform
- A heavy install, mostly for a visual editor
- Workflows stored as big JSON files, hard to review and hard to undo
- A failed message is a red row nobody is watching
- AI assistants spend thousands of tokens to read it
After
Automator
- One 188 MB container and one database file, with no database server
- Each workflow is a short code file with a full change history
- A saved change goes live in seconds, without downtime
- Every failure sends an alert, with the reason
- AI assistants see what broke in under 300 tokens
Something happens, a workflow runs, the work gets done
Every automation follows the same path. Automator sits in the middle: it starts the workflow, tries again when a service is down, and records what happened so there is always an answer to “did it send?”
Starts when
Something happens
- A form is submitted
- A board status changes
- A WhatsApp message arrives
- A time of day
- New rows in Notion
Automator
Runs the workflow
- Checks it is genuine
- Retries on failure
- Resumes where it broke
- Records every step
- Alerts on failure
Ends in
The work is done
- Telegram
- Instagram · Facebook · Threads
- Monday.com
- Notion
- Claude · OpenAI
Each workflow is drawn as a diagram, straight from its code
Our team writes workflows as code, because code is fast to change and easy to review. Clients shouldn’t have to read code, though. Automator reads each workflow and draws it as a map: what starts it, each decision, each step, and where it ends. Click any step to see what it does in plain language.
What it does for our clients every day
The Mantra
Post once, publish everywhere
PBLSH
Signed agreements, delivered
Your AI assistant can run it: ask what broke, get an answer
We built Automator an MCP server. MCP is the open standard AI assistants like Claude and ChatGPT use to connect to other software. The team can ask “what broke overnight?” from a laptop or a phone, the assistant checks the platform and replies in plain language, and with permission it can re-run the failed message.
Many platforms send an AI thousands of tokens to answer one question. Ours adds up the numbers on the server and returns a short table, so a typical “what’s wrong” answer takes under 300 tokens. A phone can be given read-only access, so only a laptop with full access can re-run anything.
You ask your AI assistant
- What broke overnight?
- Why is the cross-poster failing?
- Show me what that webhook actually sent.
Claude, ChatGPT or any MCP-ready assistant picks the tool, calls automator and answers from what comes back, on a laptop or a phone.
Read · every connection
- overviewthe whole state in one call
- failureswhat is failing, grouped by cause
- runone run: steps, calls, logs
- trendwhich workflows went quiet
- hotspotsslowest steps, wasted retries
- configwhich credentials are connected
Act · full access only
- resumefinish a failed run, skip what worked
- replayrun it again on the same input
- triggerstart a workflow now
- set_pausedswitch a workflow off or on
Nothing fails quietly
An automation matters most when it breaks, because that is when a customer never gets their message. These features are there so that doesn’t happen.
Alerts, with the reason
Resume from the broken step
Every run recorded
Only real senders get in
Secrets never stored in plain text
Webhooks set themselves up
A workflow is a short file, and AI is built in
Our engineers can write a workflow in minutes, and every change goes through code review and version history. Claude and OpenAI are available to every workflow, so adding AI to an automation takes one line.
export default defineWorkflow({
name: "daily-digest",
trigger: cron("0 9 * * 1-5", { tz: "Asia/Kuala_Lumpur" }),
retries: 2,
async run(ctx) {
const commits = await ctx.step("fetch", () =>
ctx.http.get("https://api.github.com/repos/you/repo/commits"),
);
const summary = await ctx.ai.claude(
`Summarise for standup:\n${commits.map((c) => c.commit.message).join("\n")}`,
);
await ctx.slack.send("#general", summary);
},
});Mistakes caught early
Services built in
- TypeScript
- Bun
- Hono
- SQLite
- Docker
- Coolify
- Claude API
- OpenAI API
- MCP