Bring your own AI

Ask it anything.
Tell it to do anything.

Plug the AI your team already uses straight into your business — Claude, ChatGPT, Copilot, an agent you wrote yourself. Not a chatbot bolted on the side that can answer a few questions. The real thing, holding the same handles your people hold.

From the van: “what’s my next job?” · “raise a PO to Ferguson for this one” · “mark me arrived and start the checklist.”

From the board room: “which zone is carrying the week?” · “what did callbacks cost us last month?” · “push every PM in Houston out four days and tell me what that breaks.”

Same system, same permissions, same audit trail. A phone at a rooftop unit and a laptop at a board table are two ends of one conversation.

And you do not have to run your company on us to get this. Sync your jobs in from the system you already have, run a few workflows and a handful of events, and your AI can already answer for the work and act on it. The rest of the modules are there when you want them.

One capability, every door

Most products bolt an assistant onto the side and give it a dozen things it is allowed to touch. The gap between what the chat box can do and what the app can do is where the disappointment lives.

Here there is no gap, because there is no bolt-on. A capability is written once, and the screen, the API and the agent are three renderings of it.

446capabilities in the platform
175read — ask it anything
190write — it can actually do the work
81destructive — and gated, see below

They are grouped the way the business is: 35 for workflows, 23 for parts, 22 for billing, 22 for storage, 19 for rates, 18 for agreements, 16 for custom fields, 14 for purchasing, 10 for routes — 59 areas in all.

Which means you never have to ask whether the AI can do this one. If a person in your company can do it, you can ask for it in words — and if we ever shipped one you could only reach by clicking, the build would stop us.

How an owner asks

An owner does not want a dashboard somebody built last year for a question they are not asking today. They want to ask the question.

📊

“Which zone actually made money last month?”

A zone is a profit center with its own team and its own timezone, so this is a real question with a real answer — not an allocation somebody invented in a spreadsheet.

“What is late, and who is it late for?”

Late is measured against what was promised, not against when the office got round to it. The answer names customers, not counts.

🔧

“How many PMs are we going to miss this month?”

Every obligation carries a window and the room left on it. The system knows which ones can still move and which are about to breach.

💰

“Where is the estimating queue backing up?”

A queue is a column with a person’s name on it. Work sitting in one is measurable, and so is how long it has been sitting.

The point is not the chat box. It is that the answer is assembled from the same records the work is done in, by an agent holding the same read capabilities your reporting does — so there is no second version of the truth to reconcile.

How a dispatcher asks

Seven in the morning, three people calling, and a board with two hundred cards on it. This is the case the tool surface was built for.

  1. “Who has not started yet?”

    Every visit carries travel, arrival and work-start as separate stamps, so “on the way”, “standing at a locked gate” and “working” are three different answers instead of one status.

  2. “Move everything Marcus has left to Dani.”

    Each one is a real transfer, one at a time, so each one raises its event and starts the destination queue’s checklist. A bulk update would move the cards and silently start nothing.

  3. “A heat wave landed. Push this week’s PMs.”

    It shows what that would breach before it does it. PM work is the schedule’s shock absorber and the system knows how far each one may move.

  4. “Build tomorrow’s routes.”

    One plan per driver, stops in driving order, per-leg drive times. On the board or in a sentence — same capability either way.

  5. “Why did job 40219 go to Parts?”

    Because step 3 of a published procedure said so, on Tuesday, run by a named technician. The causation is recorded when it happens, which is the only time it can be.

The take-an-action page: every action in the product listed in a dispatcher's own words, grouped and searchable.

The same actions, written in a dispatcher’s words. What the copilot reaches, a person can still reach by hand.

The copilot on every screen

Not a panel per page. One conversation, written into the layout itself — on the board, in the customer record, in the estimator, inside a running procedure. A dispatcher who asks about a job and then opens a customer does not lose the thread.

It knows where you are looking

“Close this job” is meaningless without it. So the copilot is told which record is on screen.

⚠ That context is recorded, never trusted. Anything a caller can assert is something a caller can forge, so it rides the audit trail and never the permission check.

It runs as you, not as a robot account

Your roles, your company, your limits. It cannot reach a capability you could not reach yourself, and every act it takes is signed with your name.

A lock is a guide, not a wall

When a procedure gates a capability, it does not just refuse. It says “that is locked behind New Commercial Customer — shall I start it?” A system with no way through gets its locks switched off within a month.

A courier day on the dispatch board: seven drivers each with their own lane of job cards, plus unassigned and parts queues as columns.

The board an agent is talking about. Same lanes, same queues, same cards — it is not a separate reporting copy.

What it will not do

An agent with 446 tools and no rules is not a feature, it is an incident waiting for a Tuesday. Four lines, and they are not negotiable.

It runs the work. It does not author your SOPs.

A procedure written casually in a chat window has no provenance a year later — and provenance is the entire point of writing it down. Authoring stays in the builder, where a version is published, attributed and pinned.

🔒

Irreversible acts need authority

Hold the role and it just happens. Do not, and somebody who does can approve that single act with a code — one code, one delete. So you can stop handing out permanent destructive access to five people.

The confirmation is the real one

Where a screen would stop and ask, the agent stops and asks — with the same words, naming the thing and its blast radius. “14 sites and 212 jobs reference this customer.” It is not allowed to be cleverer than a prompt somebody wrote on purpose.

📜

Everything it does is on the record

Which door a call came through is audited on every single write — screen, API, or agent. You can always answer “did a person do this?”

What is real today

We would rather tell you where the line is than let you find it.

CapabilityState
446 capabilities, each a REST route and an MCP toolShipped
Build-time gate that fails if a capability misses a doorShipped
Scoped API keys that can never out-reach their ownerShipped
An agent connected over MCP, doing real work on real dataShipped
Role gating, confirmation prompts, full audit of the calling doorShipped
The copilot surface inside the portalIn build
Approval-by-code for irreversible actsIn build
Agents running a published procedure end to end, unattendedIn build

The part that is hard is already done, and it is the unglamorous part: every single thing the product can do is reachable without a screen. A copilot on top of that is a surface. A copilot without it is a demo.