Skip to content
What we do

Seven services, and what each one costs.

Most projects start with one of these and grow into the next. Not sure which you need? Tell us what keeps going wrong and we’ll say where we’d start. If it’s time lost to repeated work, the free audit measures it first.

One order desk, one person, one week, 40 hoursBEFORE9.2 reading email15.3 keying orders5.4 stock7.7 invoicing + errors2.4 talking to customersAFTER32.1 hours handed back to the person0h10h20h30h40hCoral is the time that always needed a human. It’s the one block that didn’t shrink.One order desk, one weekbeforeafterreading email9.2 h1.1 hkeying orders15.3 h1.8 hchasing stock5.4 h0.9 hinvoicing + errors7.7 h1.7 htalking to customers2.4 h2.4 h32.1 hours handed backTalking to customers didn’t move.It’s the one row that didn’t shrink.
fig. 00 · one order desk, measured over one week
31automations since 2019
7 momedian payback across those projects
82%median share handled without a person
0clients locked in. You own the code and the data
Which one do you need

Find the problem that sounds like yours.

Nobody wakes up wanting workflow automation. They wake up because the same thing went wrong again on Friday. Pick the sentence that sounds like your week.

Sounds familiar?What’s going onWhere we’d start
“We rekey the same order into three systems.”Your tools don’t talk to each other, so a salary covers the gap.Business Automation$8,000 to $14,000
“Two people do nothing but answer the same forty questions.”The answers are already in your records. Nobody has connected them to the inbox.AI Solutions$12,000 to $22,000
“Everything runs off one spreadsheet and I’m scared of it.”One file, one person who understands it, and no record of who changed what.App DevelopmentBusiness Automation$18,000 to $40,000 · $8,000 to $14,000
“Our site looks fine but nobody ever fills the form.”Usually load time on phones. Sometimes a form that asks for nine fields when three would do.Web Development$9,000 to $24,000
“We tried an off-the-shelf tool and abandoned it.”The tool assumed a process you don’t have. Another tool rarely fixes that.ConsultingBusiness Automation$1,500 · $8,000 to $14,000
“I don’t know where the time goes.”The most common answer, and why every project starts by measuring.Free audit firstfree audit first
The arithmetic

One real project, with every number shown.

This is the parts distributor from the top of the page: the same order desk, the same week, orders arriving as email attachments. We timed it during the five-day mapping week, before quoting, and that’s where these figures come from.

Before
Orders arriving by email each weekcounted212
Average handling time per ordertimed4 min 20 s
Hours a week spent on order entry212 × 4.33 min15.3 h
Loaded hourly costpayroll + 22%$38.00
Annual cost of the manual path15.3 × 38 × 52$30,233
After
Orders handled without a person187 of 21288%
Exceptions still reviewed by hand25 × 4.33 min1.8 h
Annual cost of the remaining human time1.8 × 38 × 52$3,557
Annual cloud and model spendmetered$4,800
One-time buildfixed price$9,800
Saved every year, from year one30,233 − 3,557 − 4,800$21,876
Payback on the build9,800 ÷ (21,876 ÷ 12)5.4 months

Nobody was let go. The same person still sits at that desk and handles the orders that need a person.

What it looks like built

Four projects we shipped, drawn to scale.

These are real projects. We’ve left the clients unnamed and rounded the figures, but the timings, percentages and failure paths are the ones we measured. Every number on a diagram here came from a log.

Business Automation

The four minutes a person spends being glue.

A document arrives and six systems need to agree about it. Someone opens five tabs and retypes the same twelve fields, and by now that’s just the job. We replace it with a pipeline that runs in about four seconds and only hands over the cases it isn’t sure about.

ONE ORDER, END TO END4.34 s machine time · replaces 4 min 20 s of human timeEmail landsinbox webhook40 msParse the PDFlayout model0.4 sMatch the SKUfuzzy + history1.1 sPrice and termscontract lookup0.3 sCredit checkledger read0.9 sWrite to the ERPBusiness Central1.4 sConfirm to buyertemplated reply0.2 sHuman review queue12% of orders · 25 per week · Slackno confident matchone keystroke returns it to the pipelineONE ORDER, END TO END4.34 s machine timereplaces 4 min 20 s of human timeEmail landsinbox webhook40 msParse the PDFlayout model0.4 sMatch the SKUfuzzy + history1.1 sPrice and termscontract lookup0.3 sCredit checkledger read0.9 sWrite to the ERPBusiness Central1.4 sConfirm to buyertemplated reply0.2 sHuman review queue12% of orders · 25 a week · Slackno confident match, so a person decidesone keystroke returns it to the run

Drag to follow the run

fig. 01 · order intake for a parts distributor · 4.34 s machine time

What it touches

InboundEmail, EDI, portal scrape, SFTP drop, webhook
SystemsBusiness Central, NetSuite, QuickBooks, Shopify
Runs onYour AWS or GCP account, Temporal for the state

How we prove it

Shadow runWeeks 1 to 3 beside your team, writing nothing
Gate to go live95% agreement with your team, or it doesn’t ship
RollbackOne flag, reverts to manual in seconds

What it costs

Build$8,000 to $14,000, varies by project
Running$180 to $400 a month in cloud
AI Solutions

A model is only worth having if it knows when to stop.

Anyone can connect a model to an inbox. Whether you can leave it running depends on the confidence threshold on each branch, tuned against your own labelled history, so it hands over instead of guessing.

It learns from your own history

We fine-tune on eighteen months of your own resolved tickets. The model learns your SKUs, your abbreviations and the way your customers write.

Every answer carries its receipt

Each reply links the three source records it drew from. A person can check the work in four seconds without leaving the thread.

The threshold is yours to move

One slider per branch. At 0.97 almost nothing sends on its own. This wholesale supplier settled near 0.92 after a month of watching it.

ONE WEEK OF INBOUND1,840 messages arriveemail 1,402 · web form 311 · SMS 127Classifierf1 0.94 on held-out weekQuote request41%Prices it from the contract, drafts the replyauto-sent above 0.93Order status28%Reads the ERP, answers with a tracking linkauto-sent above 0.90Return or claim17%Opens an RMA, attaches the photosalways shown to a person firstEverything else14%Summarized, tagged, put in the right queuenever auto-sentBelow threshold → a person166 messages · 9% · median wait 11 minNothing is deleted. Every branch keeps the raw message.ONE WEEK OF INBOUND1,840 messages arriveemail 1,402 · web 311 · SMS 127Classifierf1 0.94 held-outQuote request41%Prices it from the contractauto-sent above 0.93Order status28%Reads the ERP, sends trackingauto-sent above 0.90Return or claim17%Opens an RMA with the photosalways seen by a personEverything else14%Summarized, tagged, queuednever auto-sentBelow threshold → a person166 msgs · 9% · waits 11 minNothing is deleted. Every branchkeeps the raw message.
fig. 02 · one week of inbound at a wholesale supplier
ModelsClaude for reasoning, a small local classifier for routing
Your dataStays in your tenant. The vendor doesn’t train on it
EvaluationA week it has never seen, rerun on every prompt change
Drift watchWeekly agreement report, alert under 0.90
Build$12,000 to $22,000, varies by project
Running$0.004 per message at current volumes
App Development

The spreadsheet the whole operation depends on.

Many businesses have one workbook that everything depends on, that one person understands, and that breaks when two people open it. We turn it into an app with logins, a record of every change, and a phone screen the crew will use.

dispatch.yourcompany.ca · Tuesday 17 Feb
Northline Mech.4 crews · 6 jobs todayTodayDispatch boardCrewsInventoryInvoicesPhotosSettingsJOBCUSTOMERCREWWINDOWSTATUSDispatch board2 jobs need attentionD-4471Blackcakes BakeryCrew 208:00 - 10:00On siteD-4472Riverdale DentalCrew 109:30 - 11:00TravellingD-4473Hanlon FreightCrew 410:00 - 13:00Parts missingD-4474Kensington GrocerCrew 211:15 - 12:00ScheduledD-4475Etobicoke AutoCrew 313:00 - 16:30ScheduledD-4476Leslieville Cafe-14:00 - 15:00UnassignedLast write 14 s ago by dispatch@northline · every change is versioned

Drag to see the rest of the board

09:14OfflineD-4473 · Crew 4Hanlon Freight2280 Dixie Rd · 10:00 - 13:00Parts missing, flagged 08:51ArriveAdd photoClose jobQueued: 2 photos, 1 note.Syncs when signal returns.
fig. 03b · the same job, in a van · arrive, photograph, close

One thumb, outdoors, with no signal

The office and the crew see the same records, laid out for two different jobs. The crew never sees a table, every button is 48px high, and changes wait on the phone until there’s signal, so nobody spends an afternoon re-entering a job.

A history on every field

When an invoice is disputed four months later, the answer is one click away, not buried in someone’s sent folder.

What you own at the end

OfflineFull read, queued writes, reconciles on reconnect
Retention7 years, immutable, CSV and Parquet export
Build$18,000 to $40,000, varies by project, then $60 to $220 a month
Web Development

Built for someone on three bars in a parking lot.

Your site gets opened one-handed, outdoors, by someone deciding whether you’re worth a phone call. Everything below follows from that.

6.81s → 1.12s

Largest contentful paint on a mid-range Android over Fast 3G.

2.4MB → 118KB

Total transferred on a first visit to the home page.

+34%

Enquiry form completions in the ninety days after launch.

0s1s2s3s4s5s6s7s8sBEFORE · LCP 6.81sdocument0.40sstyles.css1.20sapp.bundle.js3.10shero.jpg 1.8MB2.40sfonts (4 faces)0.90stagmanager.js4.21sAFTER · LCP 1.12sdocument0.18sapp.js (18KB)0.30shero.avif 94KB0.55sfonts (2 faces)0.24sanalytics, deferred0.42sMoto G4, Fast 3G, cold cache, median of 9 runs. Styles are inlined, so they never appear as a request at all.0s2s4s6s8sBEFORE · LCP 6.81sdocument0.40sstyles.css1.20sapp.bundle.js3.10shero.jpg 1.8MB2.40sfonts (4 faces)0.90stagmanager.js4.21sAFTER · LCP 1.12sdocument0.18sapp.js (18KB)0.30shero.avif 94KB0.55sfonts (2 faces)0.24sanalytics, deferred0.42sMoto G4, Fast 3G, cold cache,median of 9 runs.
fig. 04 · the same home page rebuilt · the tag manager was 62% of it

What it touches

StackNext.js, statically rendered, no client framework on marketing pages
CMSSanity or plain MDX in your repo. Both are fine

How we prove it

Budget enforcedBuild fails over 120KB of JavaScript on any route
AccessibilityWCAG 2.2 AA, checked on every code change

What it costs

Build$9,000 to $24,000, varies with page count
Questions we get on the first call

The awkward ones first.

Will this let us cut staff?
Sometimes, but we don’t build the business case on it, and we’d advise you not to either. If your plan needs redundancies to pay for the build, the numbers are usually thinner than they look once you price the handover and the knowledge that leaves with the person.
What happens if we stop working with you?
Everything runs on accounts in your name, billed to your card: your cloud, your database, your repository. We hand over the code, a runbook and a recorded walkthrough. There’s no licence to renew, and nothing phones home to us.
Our data is a mess. Is that a problem?
No. That’s the normal starting point, and it’s why we measure first. Three years of inconsistent SKU names are far cheaper to find at the start, when they change the price, than in week three.
Can you work with our existing IT provider?
Yes, and we prefer to. They usually hold logins and context we need, and they’ll be there after we leave. In the first week we agree in writing who owns what.
How much of this is just an API call to a model?
Some of it. The model is maybe a fifth of the work. The rest is getting data out of the system that has no API, deciding what happens when confidence is low, making failures visible, and making sure the whole thing can be switched off. If a vendor quotes you on the model call alone, ask what happens the day it returns something wrong.
Why a fixed price instead of hourly?
We measure before we quote, so we aren’t guessing, and an hourly rate pays us more when the work runs long. If we misjudge the estimate, that’s our cost to absorb, not yours. It has happened twice in thirty-one automation projects.

Not sure which one?

Tell us what keeps going wrong and we’ll say which of these fits, or whether none does. If the trouble is time lost to repeated work, the free audit costs the bottleneck first.