Automations · Canarlo, Leeds
Custom automations, integrations, and internal tools
When Zapier hits a limit. Custom workflows that survive a million-row backfill, integrations with signed webhooks both directions, internal tools your team will actually open. For technical founders past the point where no-code stops paying back.
The case for custom
Where automations beat off-the-shelf
Long-running processes Zapier can't handle
A Zap with a thirty-second timeout cannot enrich a thousand records. The workflow silently truncates, the queue backs up, the first you hear is a sales rep asking why half the leads have no company data. We ship edge functions and Postgres-backed queues that survive a million-row backfill.
Complex branching with real conditional logic
Make's visual canvas works at three branches. At ten it is unreadable, at twenty it is unmaintainable, at thirty the no-code platform charges you per execution and the bill grows quarterly. We write the branching in plain TypeScript — the diff fits on one screen, the on-call engineer can debug it.
Transactional guarantees (retry, idempotency, audit)
n8n retries on failure. It also retries on partial success — and creates duplicate invoices, duplicate Stripe charges, duplicate Slack pings. We ship idempotency keys on every external call, an audit row per attempt, exponential backoff that tells a 502 from a 4xx. The wrong thing cannot easily happen twice.
Custom UI for non-technical users
Retool gets you a working admin form in a morning. By month six the screen has thirty fields, half of them broken, none of them accessible — and the per-user pricing means finance refuses to add seats. We ship a real Next.js admin tool. Role-based, audited, keyboard-friendly, yours.
What we ship
Three solutions we ship
Solution
Workflow Engines
The orchestration layer the spreadsheet has outgrown. Queues, retries, branches, schedules — written in plain TypeScript, observable in your dashboard. Replaces the Zap that nobody owns and the cron job nobody documents.
Solution
Integrations
Two systems, five systems, ten systems — typed contracts on every payload, signed webhooks both directions, retry logic that distinguishes a 502 from a 4xx. The integration your CRM vendor calls a roadmap item.
Solution
Internal Tools
An admin surface your team will open without complaint. Role-based access, audit trail on every write, the seven workflows currently held together by a shared spreadsheet — moved into one tool, owned by you.
AI inside workflows
AI-augmented automations
LLMs belong inside workflows in a narrow band — classification, triage, summarisation, drafting, extraction from unstructured input. The places a deterministic rule cannot fit because the input is messy and the output is a judgement call. A support ticket routed by intent. A PDF turned into a structured row. A draft reply waiting for a human to send.
They do not belong inside financial calculations, regulatory decisions, or any deterministic state machine you already know how to write. The model will be confidently wrong four times in a hundred — and the hundredth is the audit finding. We do not put an LLM behind a number a regulator will read.
The pattern we ship: the model produces a candidate decision, the workflow runs deterministic validation, a rule-based or human gate sits in front of any irreversible action. Confidence below threshold routes to a person. Above it, the action fires with the audit row attached. The kill switch is one config flag. The eval set catches the regression before the customer does.
Foundations
What we build on
Next.js 16 application surface
Server actions, edge runtime, typed routes. The admin UI, the dashboards, the trigger surface — all in one codebase, deployed in one command, debugged from one log.
Supabase (Postgres + RLS + Edge Functions)
Postgres for state, RLS for isolation, edge functions for the runs that take longer than a request. One database, not three services that drift apart in production.
Signed webhooks (inbound + outbound)
HMAC-SHA256 on every payload, timing-safe verification on receipt, audit row per attempt. Forged events do not enter the system. Lost events show up in the dashboard.
Edge functions for long-running jobs
Enrichment, sync, batch processing — five-minute runs that would time out on a serverless function. Idempotent by default, retried with backoff, observable at every step.
Deployment to your cloud (Vercel + Supabase)
Your Vercel team, your Supabase project, your domains, your keys. We deploy with your credentials and walk off at handover. No agency-held infrastructure, no per-execution markup.
Our process
How we work
Step 1
01
Discovery
One scoping call. We map the workflow as it exists — the spreadsheet, the Zap, the shared inbox. The failure modes get named. Output: a written brief, one week.
Step 2
02
Architecture
Data model on the page. The queue topology, the retry policy, the idempotency strategy. Integration contracts written before a line of code. One week, you sign off.
Step 3
03
Build
Four to eight weeks depending on scope. Weekly demo on a real preview URL. You can read the diff. Every external call audited from day one.
Step 4
04
Ship
Deploy to your cloud, cut over from the legacy Zap, watch the first week of real traffic. A handover doc that names the failure mode and the on-call step.
Step 5
05
Forge Care
Optional retainer — vendor API changes, dependency updates, continued workflow work. From £500 a month. Same engineer. Cancel any time.
The workflow your no-code platform charges per execution to run.
Pricing
Pricing
Fixed fee, scope written down before billing starts. £15k buys a single workflow with two integrations and an admin surface. £40k buys a workflow engine, five integrations, queues, retries, and the internal tool to operate it.
Custom automation engagements from £15k. Pricing transparent on our cost page.
Full pricing rationale and cost breakdown: How much does AI engineering cost?
After ship
Beyond the build — Forge Care
Vendor APIs break. Pricing changes. A new field appears in your CRM and the integration goes quiet. Forge Care covers the on-call response, the contract updates, and a budget of engineer-days a month for new workflow work. Same engineer who built it. Not a support ticket queue.
Every web app build can transition into Forge Care — ongoing maintenance, hosting, and security patching from £500/mo.
Frequently asked
Questions technical founders ask before they engage.
What's the difference between this and Zapier/Make/n8n?
Zapier and Make are right until they aren't. Two steps, stable shapes, no retry logic — keep them. Beyond that the ceiling hits hard: no typed inputs, no replay, no audit trail, no version control on the logic. We build the same workflow in plain TypeScript. Diff-able, testable, yours.
Do you maintain workflows after delivery?
Optional retainer from five-hundred a month — security patches, dependency updates, alert response. Or take it in-house. The handover names every cron, queue, and integration, with a written runbook. No vendor lock-in on the maintenance side either.
Can you integrate with our existing CRM/data stack?
Yes. HubSpot, Salesforce, Pipedrive, Airtable, Notion, Postgres, BigQuery — anything with an API. OAuth handled, credentials rotated, rate limits respected, partial failures retried. If the API exists, we wire to it. If it doesn't, we build the polling job or the inbound webhook handler.
What about AI-augmented workflows?
Routine. Triage, classification, drafting, routing — wired into the workflow with structured outputs, not free text. Eval gates on the AI step, fallbacks when the model is uncertain, audit log on every decision. The automation does not become a chatbot. It becomes a step that happens to call a model.
Who owns the workflows after the build?
You. The code lives in your repo, on your infrastructure, with your keys. Plain TypeScript — no proprietary runtime, no Canarlo SaaS. Any competent engineer can read the diff and extend it. The whole point is you walk away from us when you no longer need us.
Start here
Workflows that survive a million rows. Tools your team will open.
Twenty-minute call to scope the work. Or send a written brief — proposal in your inbox inside forty-eight hours.