Table of Contents
How to Audit AI in Your Business: The B.R.A.I.N.S.™ Guide
You built it.
You ran it.
Now comes one of the most important questions in operational AI:
What is it actually doing?
Set aside what you intended, what the demo showed and what the prompt says.
What is the AI actually doing when it runs inside your business?
That is the purpose of Audit, the third stage of the B.R.A.I.N.S.™ framework:
Build → Run → Audit → Improve → Normalize → Scale
Audit is where AI becomes something you can observe.
You should be able to answer questions like:
- What AI systems are running?
- What triggered them?
- Which agent ran?
- Which model was used?
- Which process or SOP was being performed?
- What information did the AI receive?
- Which tools did it use?
- What did it plan to do?
- What actually happened?
- Did the execution succeed?
- Did a human review it?
- How many tokens did it use?
- What did the execution cost?
- How long did it take?
- Did it save time?
- Did it follow your business rules?
- Is its performance improving or deteriorating?
If you can't answer those questions, you do not have meaningful visibility into the AI operating inside your business.
And as AI moves from generating output to taking action, that visibility becomes increasingly important.
A useful rule is:
If AI can act in your business, every execution should leave a receipt.
01 -What Does It Mean to Audit AI?
An AI audit is a structured review of how an AI system is configured, what happens when it runs and whether its behavior produces acceptable business outcomes.
There are two layers of Audit.
System-Level Audit
A system-level audit looks at the AI implementation itself.
That may include:
- Business purpose
- Agent architecture
- Prompt or instruction set
- Model selection
- Data sources
- Knowledge bases
- Connected applications
- Tools
- APIs
- Permissions
- Authentication
- Human approval requirements
- Error handling
- Escalation logic
- Data retention
- Security controls
- Ownership
- Versioning
- Cost
- Logging
- Performance metrics
This answers:
Is this AI system designed appropriately?
System-level auditing covers the design.
You also need to know what happened every time the AI actually ran.
02 -Execution-Level Audit
Execution-level auditing records the behavior of an AI system one run at a time.
This is where Audit becomes operational.
If an AI system analyzed a sales meeting at 2:41 PM on Tuesday, you should be able to find that execution and understand what happened.
If it updated a deal incorrectly, you should be able to trace the action back to the AI run that caused it.
If costs suddenly increase, you should be able to determine which agent, process, model or workflow is responsible.
Think of execution-level auditing as an AI execution ledger.
Each meaningful AI run creates a record.
That record is the receipt.
03 -Track Every Meaningful AI Run
Aggregate provider dashboards are a starting point.
Knowing:
We used 14 million AI tokens this month.
still leaves the question:
What business work did those tokens perform?
You want to be able to move from aggregate usage to operational traceability.
For example:
We ran our Customer Risk Agent 3,842 times this month.
97.4% completed successfully.
4.6% required human correction.
The average run cost $0.08.
One particular SOP generated 61% of all corrections.
That is actionable.
It requires you to track executions individually.
04 -Give Every Execution an ID
The first requirement is simple:
Every meaningful AI execution should have a unique identifier.
For example:
ai_exec_483f20f9
That identifier should follow the run across your systems.
Imagine this flow:
HubSpot task
↓
n8n workflow
↓
AI agent
↓
OpenAI API request
↓
HubSpot update
↓
Slack alert
Those five systems should all be traceable back to one identifier:
Execution ID: ai_exec_483f20f9
This is particularly important once AI systems begin calling other agents, tools and workflows.
05 -Build an AI Execution Ledger
An AI execution ledger is the centralized record of what your AI systems are doing.
A ledger can stay lean. It needs enough information to answer:
What ran?
Why did it run?
What did it use?
What did it do?
What did it cost?
And did it work?
We use a custom AI Executions object in HubSpot for this purpose.
That lets us make AI activity visible inside the same operational system where much of the underlying business work already lives.
The object currently contains more than 80 properties because it supports multiple agent architectures, n8n workflows, OpenClaw sessions, HubSpot workflows, human review and historical migration.
A business recreating the model can start with a subset of those properties.
The important part is the underlying structure.
06 - The Core AI Execution Schema
These are some of the most important properties we currently track in our HubSpot AI Executions object.
execution_name
execution_id
execution_platform
execution_source
agent
agent_role
jbtd
sop_name
model_used
workflow_status
workflow_started_at
workflow_stopped_at
runtime_seconds
tokens_input
tokens_output
tokens_total
execution_cost_usd
plan_summary
plan_outcome
outcome_summary
execution_grade
execution_grade_notes
human_feedback_notes
skills_used
sops_executed
transcript_url
test_mode
We also track properties specific to particular architectures, including:
n8n_workflow_idn8n_workflow_namehubspot_workflow_idtrigger_task_idworkflow_version_idworkflow_version_counteropenclaw_agent_idopenclaw_installsession_idsession_keysession_started_atsession_ended_atsession_duration_secondsskills_countsops_count
Those are useful when you need deeper traceability, and optional otherwise.
Join the B.R.A.I.N.S Framework founding cohort to get the full AI Execution Object Schema.
Heading 1
with a request body that specifies how to map the columns of your import file to the associated CRM properties in HubSpot.... In the request JSON, define the import file details, including mapping the spreadsheet's columns to HubSpot data. Your request JSON should include the following fields:... entry for each column.
07 -Use Human Review as Part of the Audit Model
Our HubSpot AI Executions object also has its own pipeline:
AI Agent Tasks
with stages:
Human Review Necessary
↓
In Review
↓
Human Review Not Necessary
That reflects an important principle.
Different AI executions need different levels of oversight.
Some executions can be safely logged and sampled.
Others should require explicit review.
The decision should be based on risk and consequence.
08 -Separate Observation From Action
A useful way to think about AI risk is:
Observe → Recommend → Prepare → Execute
Observe
AI reads or analyzes information.
Example:
Summarize a customer meeting.
Recommend
AI proposes an action.
Example:
Recommend changing a deal stage.
Prepare
AI creates the action but does not execute it.
Example:
Draft the customer email.
Execute
AI changes the business environment.
Example:
Send the email.
Update the deal.
Create a task.
Modify a file.
The farther an AI system moves toward Execute, the stronger your audit requirements should generally become.
09 -Audit the Plan and the Outcome
One feature of our AI Executions schema that I think is particularly important is that we distinguish between:
what the agent planned to do
and:
what actually happened.
That is why we track both:
plan_summary
and:
outcome_summary
along with:
plan_outcome
Plan → Approve → Execute
For any execution with real consequences, our agents work in three steps. The agent writes a plan. A person approves it. Then the agent executes.
The approval happens where people already work. Our agents post the plan in Slack, and the deal owner or reviewer replies in the thread to approve it, change it, or turn it down. Microsoft Teams, Google Chat or a HubSpot task can play the same role. What matters is that the approval becomes a recorded event with a name and a timestamp, stored next to the plan it refers to.
That is why plan_outcome has three values:
- Completed: the plan was approved and carried out.
- Failed: the plan was approved, and the execution broke.
- Rejected: a person read the plan and said no.
A rejection is a finding in its own right. A rising rejection rate tells you the SOP, the prompt or the model is producing plans people distrust, long before anything goes wrong in the CRM.
An agent can also make a perfectly reasonable plan, get it approved, and still fail operationally.
For example:
Plan: Create a follow-up task for the deal owner.
But perhaps:
- The HubSpot API failed
- The owner was missing
- Authentication expired
- The task was duplicated
- The workflow stopped midway through execution
If you only save the AI's reasoning or final response, you may never know the operational action failed.
One caveat. The outcome summary is written from what the agent could observe. A failed API call or an expired token shows up because the agent sees the error. A duplicated task only shows up if the agent checks its own work, so build that check into the SOP.
Audit both.
10 -Audit the Tool Calls
As AI becomes agentic, the model response is only one part of the execution.
An agent may:
- Read a HubSpot record.
- Search a knowledge base.
- Query another API.
- Call another agent.
- Update a CRM property.
- Create a task.
- Write a document.
- Send a Slack notification.
- Schedule another workflow.
The natural-language response may say:
Done.
An audit trail needs the actual tool activity.
For important tool calls, consider capturing:
- Tool name
- Action
- Input
- Result
- Timestamp
- Status
- Error
- Record accessed
- Record changed
- Authorization used
- Approval requirement
The question that matters most:
What did the AI do?
11 -Track the Business Purpose Behind Each Run
Technical logs naturally focus on things like:
- Model
- Request
- Tokens
- Latency
- Error code
Those are useful, and businesses also need to understand why the AI ran.
That is why our schema includes fields such as:
jbtd
agent_role
sop_name
and:
sops_executed
These make it possible to analyze AI activity by business process.
Provider logs say:
GPT-5 consumed 4 million tokens.
Your ledger can eventually say:
Customer onboarding consumed 4 million tokens.
or:
Sales call classification is costing $0.11 per successful call.
That is a much more useful level of analysis.
12 -Track the Model Used
Every execution should identify the model that ran it.
Our schema stores it in one field, ai_model_used, as free text. Store the exact identifier the provider returns, including the version or snapshot date. A marketing name such as "GPT-5" is too coarse to diagnose anything.
Model identity matters because AI behavior changes.
A prompt may perform well on one model and poorly on another.
Model providers also retire and replace models.
OpenAI explicitly notes that prompting behavior can vary between model snapshots and recommends pinned model versions and evaluations where consistency matters.
If an agent suddenly behaves differently, you want to know whether:
- The prompt changed
- The workflow changed
- The data changed
- The model changed
Without version tracking, those changes become very difficult to diagnose.
13 -Track Prompt and Configuration Versions
The current Mind & Metrics schema has extensive workflow version tracking, including:
workflow_version_idworkflow_version_counterworkflowupdatedatworkflowcreatedat
For a generalized AI execution schema, I would extend the same idea to explicitly include:
Prompt Version
That gives you:
Agent version
Prompt version
Workflow version
Model version
Tool version
Pick the ones that fit each system, with enough version information to identify what changed when AI performance shifts.
14 -Track Token Usage Per Execution
Token usage should be recorded at the individual-run level.
Our HubSpot AI Executions object currently tracks:
tokens_input
tokens_output
tokens_total
This gives us a provider-neutral base.
OpenAI, Gemini and Claude expose more detailed usage data, so you may choose to extend the object with additional fields such as:
- Cached Input Tokens
- Reasoning / Thinking Tokens
- Tool-Use Tokens
Those sit outside our core properties today, and they can provide useful detail as AI architectures become more complex.
15 -How to Track OpenAI Runs
OpenAI's Responses API returns structured usage information including:
input_tokensinput_tokens_details.cached_tokensoutput_tokensoutput_tokens_details.reasoning_tokenstotal_tokens
A straightforward mapping into a provider-neutral execution ledger looks like this:
| OpenAI | AI Execution |
|---|---|
response.model | Model Used |
usage.input_tokens | Tokens Input |
usage.output_tokens | Tokens Output |
usage.total_tokens | Tokens Total |
usage.input_tokens_details.cached_tokens | Cached Input Tokens |
usage.output_tokens_details.reasoning_tokens | Reasoning Tokens |
You should also capture request identifiers.
OpenAI returns an x-request-id response header and explicitly recommends logging request IDs in production. OpenAI also lets developers supply their own X-Client-Request-Id, making it possible to send your internal execution ID with the request.
That means your trace can look like:
Internal Execution IDai_exec_483f20f9
↓
X-Client-Request-Idai_exec_483f20f9
↓
OpenAI x-request-idreq_xyz123
Now your internal system and the provider request are linked.
OpenAI also provides organization-level Usage and Costs APIs. Those are valuable for financial reconciliation, and they answer a different question from your execution ledger.
Provider usage reporting tells you how much OpenAI you used.
Your execution ledger tells you what that usage accomplished.
16 -How to Track Gemini Runs
Google Gemini returns detailed usageMetadata with generation responses.
Current fields include:
promptTokenCountcachedContentTokenCountcandidatesTokenCounttoolUsePromptTokenCountthoughtsTokenCounttotalTokenCount
A normalized mapping could be:
| Gemini | AI Execution |
|---|---|
| Model identifier | Model Used |
promptTokenCount | Tokens Input |
candidatesTokenCount | Tokens Output |
totalTokenCount | Tokens Total |
cachedContentTokenCount | Cached Input Tokens |
thoughtsTokenCount | Thinking Tokens |
toolUsePromptTokenCount | Tool-Use Tokens |
Google also supports counting tokens before generation, which can be useful when evaluating context size or preventing unexpectedly large requests.
This becomes especially important with Gemini because tool use, multimodal inputs and large context windows can cause total execution usage to be much larger than the visible prompt.
17 -How to Track Claude Runs
Anthropic exposes model usage information including:
- Input tokens
- Output tokens
- Cache-read input tokens
- Cache-creation input tokens
and provider tool usage can also appear in usage metadata.
A normalized mapping can therefore look like:
| Anthropic | AI Execution |
|---|---|
| Model | Model Used |
input_tokens | Tokens Input |
output_tokens | Tokens Output |
| Input + output + relevant usage | Tokens Total |
cache_read_input_tokens | Cached Input Tokens |
cache_creation_input_tokens | Cache Creation Tokens |
| Server tool usage | Tool Activity |
Anthropic also returns a unique request-id for API responses, and its SDKs expose that identifier for traceability and support.
Again, connect that provider identifier to your own internal execution ID.
18 -Claude Code Changes the Oversight Model
Claude Code deserves special attention because it creates a different governance pattern from centrally hosted business automations.
This is often described casually as:
Claude runs locally.
That description is incomplete.
Claude Code itself runs in the user's local working environment, and the Claude model is generally still accessed through Anthropic or another supported provider.
The important audit difference is where the execution environment lives.
Claude Code can work inside an employee's local development environment and interact with things such as:
- Source code
- Local files
- Shell commands
- Repositories
- Development tools
- MCP servers
- APIs
- Connected systems
Claude Code is explicitly designed as a command-line development tool and supports MCP and other integrations.
That means a company may have less centralized operational visibility than it would with an AI agent running through a centrally managed workflow platform.
That is an architectural tradeoff that needs to be considered.
19 -Less Centralization Means You Need More Intentional Observability
Imagine ten developers using Claude Code independently on ten laptops.
Each developer may be productive.
But what can the organization answer?
- Who is using Claude?
- Which projects are using it?
- Which repositories can it access?
- Which models are being used?
- Which MCP servers are configured?
- Which tools can it call?
- What actions has it performed?
- How much does each project cost?
- Can security investigate an execution afterward?
- Can usage be attributed to a team?
- Can permissions be centrally changed?
- Can access be revoked?
This is fundamentally different from a centrally orchestrated agent where every execution naturally passes through one controlled environment.
The lesson:
Local execution changes where your controls and evidence need to live.
20 -Claude Code Can Still Be Centrally Audited
Local tooling can still be observable. How much the business sees depends on two decisions: which plan the seat runs on, and whether you route and export the traffic yourself.
The plan decides what Anthropic shows you
Claude Code is included in the Pro, Max, Team and Enterprise plans, and it also runs on an API key through the Claude Console, Amazon Bedrock or Google Vertex AI. Each of those gives the company a different view.
- Pro and Max (individual plans): these are consumer accounts. The company gets no dashboard, no usage export and no audit log. The only record of a session is the transcript file on the employee's laptop, kept for 30 days by default. Consumer accounts can also be used for model training unless the user turns that setting off. For a business, this is the blind spot: an employee on a personal Max plan can run agents against company systems and the company holds no record of it. Anthropic itself keeps consumer session data for 30 days, or five years when the user allows training, but that copy lives under the user's personal account. The employer can neither see it nor export it, so for audit purposes it does not exist.
- Team and Enterprise: commercial terms, so your prompts and code are excluded from training. Admins get a Claude Code analytics dashboard with daily active users, sessions, accepted lines of code and a per-user spend report. Enterprise adds audit logs and an Analytics API.
- API key through the Claude Console: usage and spend appear per user in the Console dashboard and through the Claude Code Analytics API. On Bedrock or Vertex AI, usage lands in your cloud provider's own billing and logging instead.
Two controls work on every plan
1. Telemetry export. Claude Code speaks OpenTelemetry. One environment variable turns on export of metrics (sessions, tokens, cost, lines changed) and events (each prompt, response, API call, tool call and permission decision) to a collector you run. An administrator can force those settings through the managed settings file, and Claude Code discards conflicting developer settings at startup. This is how a Max seat becomes observable: the company manages the machine, so the company owns the log.
2. An LLM gateway. Anthropic documents routing Claude Code through a gateway, either its own self-hosted Claude apps gateway or a third-party product, to centralize:
- Credentials
- Usage tracking
- Cost controls
- Audit logging
- Provider switching
Conceptually:
Developer laptop / Claude Code
↓
Central AI gateway
↓
Anthropic / Bedrock / Vertex AI
With a gateway credential in place, the developer's personal subscription is bypassed. Every request is billed per token to the company's Console, Bedrock or Vertex AI account, attributed to the developer who sent it, and logged at the gateway. Offboarding means revoking one credential.
Now the organization has a centralized observation point even though the execution tool itself lives on an employee's machine.
The architectural principle is:
Convenience and observability are separate decisions.
You can allow local AI tooling.
You still need to deliberately decide how the business will see what it is doing.
21 -Vendor Dashboards Are Only One Layer
OpenAI, Google, Anthropic, HubSpot and your orchestration platforms all provide useful logs and usage data.
Use them.
None of them sees the complete business process.
OpenAI may know:
Request req_abc consumed 3,500 tokens.
Gemini may know:
Generation X used 900 thinking tokens.
Anthropic may know:
Request Y used 5,000 cached tokens.
n8n may know:
Workflow execution 82915 completed.
HubSpot may know:
Deal 12345 changed stage.
Each system logs its own slice, in its own format, under its own ID, inside its own login. Nobody joins them. The token count sits in the OpenAI dashboard, the workflow status sits in n8n, the record change sits in HubSpot's property history, and the reason the run happened sits in no system at all.
Why that matters
- When something goes wrong, someone reconstructs the story by hand across four logins.
- When leadership asks what the AI spend bought, the answer comes back in tokens. The question was asked in deals, tickets and hours.
- When a vendor shortens its retention window, part of your history disappears with it.
- When a model is retired, you cannot tell which runs it affected.
Your business needs to know:
The Sales Follow-Up Agent ran SOP v4 against Deal 12345, used model X, cost $0.09, called three tools, updated two records, required no human intervention and produced the intended outcome.
That requires your own audit layer.
What an audit layer is
One record per execution, in a system you own, that holds three kinds of information:
- Business context: which agent ran, which SOP, what triggered it, and which record it acted on.
- Technical facts copied from the vendors: model, tokens, cost, the provider request ID and the workflow ID.
- Outcome: workflow status, plan outcome, human review, corrections and time saved.
The vendor logs stay where they are. Your record carries their IDs, so you can drill down to the raw detail when you need it. The audit layer is the summary you can report on, join to business results, and keep for as long as the business decides.
In our case the audit layer is a custom object in HubSpot, sitting next to the deals and contacts the agents act on. A single report can join AI activity to pipeline results with no export in between.
22 - Normalize Provider Data Into Your Own Schema
Different AI vendors use different names.
Your reporting layer needs one common internal vocabulary.
For example:
input_tokens
promptTokenCount
input_tokens
output_tokens
candidatesTokenCount
output_tokens
cached_tokens
cachedContentTokenCount
cache_read_input_tokens
reasoning_tokens
thoughtsTokenCount
toolUsePromptTokenCount + tools
x-request-id
request-id
model
model
Providers change.
Your reporting model stays the same.
23 -Capture What Triggered the Execution
Your schema should record why the AI ran.
Our execution_source field currently supports values including:
- AskElephant Webhook
- HubSpot Webhook
- Other Webhook
- Cron
- Slack Channel
- Slack DM
- Telegram
- Inter-Agent
- Direct Message
- Legacy
- Other
We also track execution platform separately, with values currently including:
- OpenClaw
- n8n
- Manual
The exact options will differ by business.
The principle is what matters:
Trigger and execution environment are two separate things.
A HubSpot workflow may trigger an n8n workflow that calls OpenAI.
Knowing only "OpenAI" tells you very little about why the business activity occurred.
24 -Track Workflow Status
Our AI Executions object currently uses these workflow statuses:
- Success
- Error
- Waiting
- Unknown
We separately track plan outcomes:
- Completed
- Failed
- Rejected
That separation is useful because the two fields answer different questions.
Workflow status answers: did the machinery run? It comes from the orchestrator. n8n, OpenClaw or a HubSpot workflow reports whether every step executed without an error.
Plan outcome answers: did the business get what it wanted? It comes from the plan, the approval and the result.
They diverge in both directions.
Technical success, business failure
The workflow runs end to end. The agent drafts a follow-up plan, posts it to Slack, and the deal owner rejects it because the deal closed yesterday. n8n logs a success. The business outcome is rejected.
Or every step succeeds and the agent updates the wrong deal, because two records shared a company name. Success in the orchestrator. Failure for the business.
Business success, technical failure
The model reads the transcript, correctly decides the deal should move to Proposal Sent, and the HubSpot API call times out. The plan was right. Nothing changed in the CRM. Reading the model's answer alone, the run looks complete.
If you only track workflow status, the first case counts as a win and the second as a loss. Both readings are wrong.
Why this matters beyond the engineering team
Counting successful business outcomes is what lets you put a number on the initiative that leadership recognizes. Efficiency figures such as "the agent runs in 40 seconds" or "we cut tokens per run by 30%" land poorly with executives who manage to revenue and headcount.
A count of completed outcomes, multiplied by the time a person would have spent on each, becomes hours, and hours become salary.
This agent completed 3,100 follow-ups this quarter, which is the workload of one full-time coordinator.
That is a sentence a CFO can act on. You can only say it when the ledger tells you which runs produced the intended outcome, and which merely ran without an error.
Technical success and business success can diverge.
Audit both.
25 -Track Human Feedback
Our execution object has three fields specifically designed to feed Audit into Improve:
execution_grade
execution_grade_notes
human_feedback_notes
The grade is intentionally simple:
Good
or:
Bad
Why?
Because a simple verdict is often enough.
Sometimes the most useful signal is:
Did this work?
A bad grade can then include:
- What went wrong
- What should have happened
- What the reviewer changed
Those corrections become extremely valuable during Improve.
26 -Human Corrections Are Training Data for the Business Process
If humans repeatedly change the same type of output, that is evidence.
Perhaps:
- The prompt is unclear
- An SOP is incomplete
- The knowledge source is wrong
- One edge case isn't covered
- The model is unsuitable
- A tool is missing
- The business rule itself is ambiguous
Human review tends to disappear into Slack conversations or silent manual edits.
Capture it.
That is why execution feedback belongs in the audit ledger.
27 -Track Time Saved
Audit covers more than cost.
AI is often deployed to create business efficiency.
Our schema currently includes:
time_savedestimated_time_savedcalculated_time_saved
This gives us a way to ask:
What did we spend?
and:
What did we gain?
Those figures are estimates, and even reasonable estimates can help identify which AI processes create meaningful operational gains and which create novelty.
28 -Audit Cost Per Successful Outcome
Total AI spend is a weak performance metric.
Even cost per execution can be misleading.
A better question is:
What does a successful business outcome cost?
Consider:
Agent A
Average AI cost: $0.04
Success rate: 78%
Human review required: 29%
Agent B
Average AI cost: $0.08
Success rate: 98%
Human review required: 4%
Agent A looks cheaper if you only evaluate API cost.
It may be much more expensive once you include:
- Retries
- Employee correction
- Failed actions
- Customer impact
- Support time
A better efficiency measure is:
Total operating cost ÷ successful outcomes
That is much closer to the true economics of AI.
29 -Audit Inputs
When an AI response is wrong, start by asking what the model received.
Was:
- The CRM record correct?
- The information current?
- The right document retrieved?
- Important context missing?
- Too much irrelevant context included?
- The wrong conversation history included?
- A tool result inaccurate?
- Conflicting instructions present?
- A required field empty?
A bad result caused by stale CRM data is a data problem.
A hallucination caused by retrieving the wrong knowledge document is a retrieval problem.
Audit gives you the evidence to diagnose the right layer.
30 -Audit Outputs
Different AI activities require different definitions of quality.
You might evaluate:
- Accuracy
- Completeness
- Relevance
- Classification correctness
- Business-rule compliance
- Citation correctness
- Format compliance
- Tone
- Hallucination rate
- Recommendation quality
- Escalation accuracy
A single generic "AI quality score" hides the differences between processes.
A good customer email and a good lead classification are different things.
31 -Audit Actions
Once AI takes actions, output evaluation alone becomes insufficient.
Suppose the agent correctly concludes:
Create a follow-up task.
Now Audit needs to answer:
- Was the task created?
- Was it created once?
- Was it attached to the correct record?
- Was the correct owner assigned?
- Was the due date correct?
- Were the task instructions correct?
A model can be right while the automation fails.
And an automation can succeed technically while performing the wrong business action.
Your execution record should let you distinguish those situations.
32 -Audit Failures
Failures are some of the most useful data your AI system produces.
Categorize them.
Model Failure
Examples:
- Incorrect interpretation
- Hallucination
- Refusal
- Poor reasoning
Prompt Failure
Examples:
- Ambiguous instructions
- Missing boundary
- Conflicting rules
Data Failure
Examples:
- Missing CRM property
- Stale information
- Incorrect record
Retrieval Failure
Examples:
- Wrong knowledge document
- Insufficient retrieval
- No relevant result
Tool Failure
Examples:
- API timeout
- Authentication problem
- Rate limit
- Tool error
Workflow Failure
Examples:
- Incorrect branch
- Duplicate execution
- Workflow stopped
Permission Failure
Examples:
- Agent attempted unauthorized action
- Required access missing
Human Process Failure
Examples:
- Approval not completed
- Reviewer ignored escalation
Once failures are categorized, recurring patterns can feed directly into the Improve stage.
33 -Review by Exception
The goal should increasingly become:
Capture everything. Review exceptions.
For example, alert when:
- Failure rate exceeds a threshold
- Human correction rate increases
- Input tokens suddenly spike
- Cost per run changes materially
- An agent executes multiple times against the same record
- A high-risk property is changed
- A prohibited tool is attempted
- Runtime changes dramatically
- Output is empty
- Confidence is below an acceptable level
- A required source was unavailable
This creates scalable oversight.
34 -Audit Daily, Weekly, Monthly and Quarterly
Different review cadences answer different questions.
Continuously
Automatically capture every meaningful execution.
Daily
Focus on:
- Failed executions
- Required human reviews
- High-risk exceptions
- Tool errors
- Unauthorized actions
Weekly
Look for patterns:
- Failure rate
- Correction rate
- Token anomalies
- Cost anomalies
- Repeated tool failures
- Outlier executions
- Sampled output quality
Monthly
Evaluate operational performance:
- Cost by agent
- Cost by process
- Success rates
- Human intervention
- Time saved
- Model usage
- Prompt performance
- Repeated failure categories
Quarterly
Audit the system itself:
- Does the use case still make sense?
- Are permissions appropriate?
- Are models still appropriate?
- Is the knowledge current?
- Are there unnecessary tools?
- Should autonomy increase?
- Should autonomy decrease?
- Should this workflow be retired?
- Is it ready to Normalize or Scale?
35 -Build an AI Audit Dashboard
Once run-level execution data exists, reporting becomes much more valuable.
Useful dashboard categories include:
Volume
- Total executions
- Executions by agent
- Executions by SOP
- Executions by business function
- Executions by client
Reliability
- Success rate
- Failure rate
- Retry rate
- Tool error rate
Human Oversight
- Review rate
- Approval rate
- Good/Bad grades
- Correction rate
- Escalation rate
Usage
- Input tokens
- Output tokens
- Total tokens
- Cached tokens
- Thinking/reasoning tokens
- Tool usage
Cost
- Cost per run
- Cost by agent
- Cost by model
- Cost by business function
- Cost per successful outcome
Efficiency
- Runtime
- Time saved
- Estimated value
- Human intervention required
That turns AI from something employees "use" into something the business can actually manage.
36 -Match Audit Depth to Consequence
Audit should be proportional to consequence.
Low Risk
Example:
AI summarizes an internal meeting.
You may only need:
- Execution record
- Model
- Cost
- Failure tracking
- Periodic quality sampling
Medium Risk
Example:
AI classifies a sales opportunity and updates CRM properties.
You probably need:
- Run-level execution tracking
- Property-change traceability
- Prompt/model version
- Cost
- Human correction tracking
- Error monitoring
Higher Risk
Example:
AI communicates externally, modifies sensitive data, creates financial commitments or executes hard-to-reverse actions.
You may need:
- Stronger approvals
- Detailed traces
- Permission controls
- Durable logs
- Regular evaluations
- Escalation procedures
- Security review
- More restrictive autonomy
Audit the consequence.
37 -Be Careful What You Log
A receipt for every execution can be far leaner than storing every prompt and every response forever.
Audit logs can themselves create privacy and security risk.
Consider:
- Customer data
- Employee information
- Personally identifiable information
- Credentials
- Financial information
- Health information
- Confidential commercial data
For some workflows, storing the complete transcript is appropriate.
For others you may store:
- Structured metadata
- A redacted transcript
- A summary
- A hash
- A secure external reference
Audit requires traceability.
Traceability rarely requires duplicating all the data.
38 -A Practical Auditable AI Architecture
A production AI process might look like:
Business Trigger
↓
Create Execution ID
↓
Create AI Execution Record
↓
Capture agent + SOP + workflow version
↓
Send model request
↓
Capture provider request ID + model + token usage
↓
Capture tool calls
↓
Capture plan
↓
Execute business actions
↓
Capture outcome
↓
Capture errors
↓
Calculate runtime + cost
↓
Request human review where needed
↓
Record grade + feedback
↓
Analyze patterns
↓
Improve
HubSpot is our choice of tool.
The important thing is that a normalized execution record exists somewhere.
39 -You Can Recreate Our HubSpot AI Executions Schema
We've published the structure of the AI Execution object we currently use inside Mind & Metrics so businesses using HubSpot can recreate the same general architecture.
The downloadable workbook includes:
- Our complete property schema
- Core Audit properties
- Enumeration options
- Pipeline and stages
- Suggested provider mappings
- OpenAI mappings
- Gemini mappings
- Claude mappings
- Recommended schema extensions
- Recreation checklist
You can adapt the fields to your own setup.
The objective is to create a record that answers the fundamental audit questions:
What ran?
Why did it run?
What did it use?
What did it do?
What did it cost?
And did it work?
40 -Audit Creates the Evidence for Improve
This is why Audit sits directly before Improve in B.R.A.I.N.S.™.
During Build, you make assumptions.
During Run, the AI starts doing real work.
During Audit, you collect evidence.
Only then can you meaningfully Improve.
You may discover:
- A shorter prompt performs equally well
- Another prompt structure produces better results
- A cheaper model performs the task reliably
- A more expensive model reduces human corrections enough to justify the cost
- Retrieval is sending thousands of unnecessary tokens
- One tool causes most failures
- Human reviewers repeatedly correct the same output
- A business rule needs clarification
- A deterministic workflow should replace an AI decision
- Autonomy can safely increase
- Autonomy should decrease
- A process should not use AI at all
Those are evidence-based decisions.
Without Audit, they are guesses.
41 -Audit Before You Normalize
An AI process may work beautifully because one person understands all of its quirks.
A standard business process has to work without that person.
Before you Normalize, Audit should establish:
- Reliable performance
- Known failure modes
- Acceptable cost
- Appropriate oversight
- Defined ownership
- Stable configuration
- Clear business rules
- Repeatable outcomes
Only then should the process become the accepted way work gets done.
42 -Audit Before You Scale
Problems that happen 1% of the time are easy to ignore when an AI workflow runs ten times.
At 100,000 executions, that is:
1,000 failures.
Scaling multiplies success.
It also multiplies failure.
Before you Scale, you need to understand:
- How often it fails
- Why it fails
- Whether you can detect failure
- Whether failure is reversible
- What failure costs
- Whether humans need to intervene
- Whether the system remains economically worthwhile at volume
That is what Audit makes visible.
43 -AI Audit Checklist
Before you consider an AI system meaningfully auditable, ask:
Inventory and Ownership
- Do we know which production AI systems are running?
- Does each system have an owner?
- Does every meaningful run have an execution ID?
Purpose
- Do we know the Job To Be Done?
- Can the execution be tied to a business process or SOP?
Configuration
- Do we know which agent ran?
- Do we know which model ran?
- Do we know which prompt or workflow version ran?
- Do we know which tools were available?
Trigger
- Do we know why the execution started?
- Do we know which system triggered it?
- Can we associate it with the relevant business record?
Usage and Cost
- Do we track input tokens?
- Output tokens?
- Total tokens?
- Cached or reasoning tokens where useful?
- Runtime?
- Execution cost?
- Cost per successful outcome?
Behavior
- Can we see what the agent planned?
- Can we see what actually happened?
- Do we know which tools it used?
- Can we trace changes back to the execution?
Human Oversight
- Do we know whether human review was required?
- Do we capture human approval or rejection?
- Do we record corrections?
- Do those corrections feed improvement?
Failures
- Are errors captured?
- Are failures categorized?
- Are recurring failure patterns visible?
- Are important failures automatically surfaced?
Local Agentic AI
- Do we know who is using local tools such as Claude Code?
- Can we identify connected MCP servers and tools?
- Do we have centralized usage visibility where necessary?
- Can security investigate execution activity?
- Can access and permissions be centrally controlled where appropriate?
Improvement
- Can we compare versions?
- Can we test proposed changes against the current system?
- Can we prove that a change improved quality, cost or efficiency?
If the answer is yes, you have observable AI.
44 -Audit Earns Autonomy
Good auditing gives businesses enough evidence to decide confidently:
where AI can operate autonomously,
where a human should remain involved,
where controls are necessary,
where the system is underperforming,
and:
where autonomy can safely increase.
The more mature the audit layer becomes, the more oversight can be driven by exceptions.
45 -If AI Can Act, Every Execution Should Leave a Receipt
AI increasingly sits between business systems.
It reads the meeting.
Interprets the conversation.
Queries the CRM.
Chooses a process.
Calls a tool.
Makes a recommendation.
Changes the record.
Creates a task.
Writes the email.
Triggers the next system.
That can create extraordinary efficiency.
It can also create an operational black box if those actions disappear into disconnected platforms, laptops, logs and vendor dashboards.
Audit prevents that.
It creates a record of:
what ran,
why it ran,
what it used,
what it planned,
what it did,
what it cost,
whether a human intervened,
and:
whether it worked.
That evidence is what makes the rest of B.R.A.I.N.S.™ possible.
Build. Run. Audit. Improve. Normalize. Scale.
Because before you improve AI, standardize it or scale it across the business, you need to be able to see what it is actually doing.
Ready to Make Your AI Observable?
Heading 1
with a request body that specifies how to map the columns of your import file to the associated CRM properties in HubSpot.... In the request JSON, define the import file details, including mapping the spreadsheet's columns to HubSpot data. Your request JSON should include the following fields:... entry for each column.