An AI agent inside your business, on a stack you own

Connected to your CRM, your inbox and your files, it knows every customer, every job and every conversation, and works across all of them at once. Every call on the record, every quiet account noticed, every pattern nobody had the hours to find. On your accounts, with your choice of model.

How a project starts →
agents · your-business ● 6 running
$ run account-review --scope all-active
planning · 4 steps · model claude-sonnet
crm.contacts(status=active)✓ 412 accounts
gmail.threads(per account, last 90 days)✓ 3,180 threads
calls.transcripts(last 90 days)✓ 96 calls
skill: what-a-cooling-account-looks-like✓
crm.task.create ×9 · note on each account✓ 1.2s
found · 9 accounts quiet for 60+ days with an open quote, owners notified
done · 1,240 tool calls · 2.1M tokens · $3.40 · cache 71%
$ _

What an agent
is made of

Connected to your CRM, your inbox and your files, it knows every customer, every job and every conversation, and works across all of them at once. Three things underneath make that possible: a harness, connectors and skills.

Account review
Account TBTrinity Beach Dental PPriya
Signal Quiet 71 days, last call mentioned a second site
Task TASK-2292Ask about the second clinic

Notices what nobody had the hours to find

Every Monday the review agent reads the CRM, the inbox and the call transcripts for every active account, and leaves a task on each one that has gone quiet. A minute of a person's attention per finding, instead of a week of reading.

Fig 0.1

The harness

Plans a task, works through it in steps, calls tools, holds context across a long job, checks its own output and recovers when something fails.

Fig 0.2

Connectors

Your CRM, Gmail, Drive and Calendar through their connectors, your own systems through the open connector protocol. Adding one is configuration, not a project.

Fig 0.3

Skills

Your procedures written down in plain text. How a quote is checked, what counts as quiet, what counts as finished. Change a line and the agent works differently on Monday. Someone non-technical can open and edit them.

Nothing
stops quietly

The jobs that run on their own, morning keys sync, overdue reminders, the settlement folders, each record their last run and its result. A job that stops is reported as stopped, not left showing as scheduled with nobody the wiser.

The failure that costs money is never the loud one. It is the job that has not run for three weeks while the dashboard said it had.

runsschedulehistory today · Australia/Brisbane
joblast 14 runslast runresult
keys-overdue-syncdaily 07:00 07:00:04 ✓ ok
settlement-foldersdaily 07:00 07:01:12 ✓ ok
outstanding-keys-emailweekdays 08:00 08:00:02 ✓ ok
signboards-syncweekdays 08:00 08:00:41 ✓ ok
hr-remindersdaily 07:00 07:00:00 ! reported
account-reviewmondays 06:00 today 06:00 ✓ ok
backup-verifysundays 03:00 sunday 03:00 ✓ ok
1 of 7 needs attention · hr-reminders: model unavailable, retried twice, reported 07:00 to ops@

A bill you can
break down

Every call is recorded against the agent and the model that made it. You see which one is expensive, which one runs the most, and how much of a long task came from cache instead of being paid for again.

The live figures sit in your own provider accounts. A number nobody can break down is a number nobody can control.

spend · by agent september · your provider accounts
assistantclaude-sonnet · 1,204 runs $58.20
account-reviewclaude-sonnet · 4 runs $13.60
listing-checkdeepseek-v4 · 618 runs $9.85
settlement-folderskimi-k3 · 27 runs $0.90
keys-overdue-syncscript · 30 runs no model calls $0.00
total cache hit 61% $82.55
paid from cache, not paid again: $56.20 this month

Any model,
per agent

Claude, GPT, Gemini, DeepSeek and Kimi sit behind one routing layer on accounts in your name. Each agent gets the model that fits its job, a strong one for drafting, a cheap one for checking, with a fallback order for when a provider is having a bad day.

The model you would pick today is not the one you would pick in six months. Changing it is a settings edit, not a rebuild.

config / agents.yml +2−2 settings, not code
agents:
  listing-check:
−    model: claude-sonnet
+    model: deepseek-v4
    fallback: [kimi-k3]
 
  account-review:
    model: claude-sonnet
−    fallback: [gpt-5]
+    fallback: [gpt-5, deepseek-v4]
    skills: [what-a-cooling-account-looks-like]
Routing layer · lit is in use
Claude GPT Gemini DeepSeek Kimi

How a project
starts

Three steps before anything is built: a conversation about the jobs, a written scope, and one fixed price for the build. There is no list price, because no two agents do the same work.

Model usage is billed to your own provider accounts at the provider's list price, never marked up.

01

The conversation

What the business already has: the systems, the records, the calls and emails that nobody has time to read. What an agent takes over first, and who looks after it once it is running.

02

The scope

Written down before anything is built: the agents, the connectors, the schedules, what is in and what is out, and which accounts it all sits on.

03

The price

One figure for the build, fixed once the scope is agreed. What runs afterwards, the model usage and any ongoing arrangement, is listed separately so the two never blur.

Get in touch

Put an agent to work

Every business has work that nobody gets to: every call and email with a customer transcribed and on the record, the connections between accounts that no one person can hold in their head, the report that would take a week by hand. The first conversation is about which of those comes first. From there you get a written scope and a fixed price.

See the Content Engine→

Questions people ask before they get in touch