Breeze  /  Field note 01 Brisbane, AU  —  Aug 2026

How you inject AI decides whether your app works.

Most teams ask “should we add AI?” — the wrong question. The real ones are where it sits, which model does the job, what it’s allowed to touch, and what shape data goes in as and comes out as. Get those right and AI is an enhancement. Get them wrong and you’ve wired a random number generator into your product.

Same prompt · 5 runs · unstructured vs schema-constrained REC
00:00 / 03:12  ·  The explainer Placement → Model → Permissions → Schema
01The core thesis

Four questions decide
everything that follows.

Q1 · Placement

Where in the system does the AI sit?

At the edge — classifying, summarising, drafting — or in the middle, deciding, routing, writing to the database, talking to the customer. The deeper into the critical path, the tighter the constraints have to be.

Rule of thumbEdge = cheap failure, caught by a human. Critical path = silent failure, inherited by everything downstream.
Q2 · Model

Which model is actually doing that job?

Not everything needs a frontier model. Every job has its own failure cost, latency budget and price. A big model on a trivial classification is waste; a small model on nuanced reasoning is risk.

Rule of thumbThe cost of being wrong picks the tier. Not the marketing page, and not the one you already had a key for.
Q3 · Permissions

What is it allowed to do once it’s there?

Read or write. Suggest or execute. Human-in-the-loop or autonomous. This is the blast-radius question: what is the worst thing this AI can do when — not if — it is wrong?

Rule of thumbBlast radius = severity × how many times it can happen before a human notices.
Q4 · Structure

What shape does data go in as — and come out as?

The model never sees raw, unbounded user input; it sees a validated, scoped, typed payload. And it never returns free prose into your system; it returns a schema you check, with a defined path for when that check fails.

Rule of thumbIf the answer to “what shape comes back?” is “text”, you don’t have a feature yet — you have a demo.
One-line version

Structured inputs and outputs are the difference between an AI feature and an AI liability.

02What it costs you

Unstructured AI fails in
three predictable ways.

Unreliable results

Same input, different answer. Nothing is reproducible, so nothing is testable — and a feature you can’t test is a feature you can’t maintain.

Your engineering team Fixed by pillar 04 →

Unpredictable losses

The model writes bad data, triggers the wrong action, or loops on a runaway call. The invoice arrives before anyone notices the bug.

The business Fixed by pillar 03 →

Client-facing damage

Hallucinated facts, off-brand tone, an invented price, wrong advice — shown to a real customer with your logo above it.

Your reputation Fixed by pillar 01 →
03The four pillars

Four decisions. Make them
on purpose, in this order.

01Placement

Where the AI sits

An AI at the edge of a system suggests things to humans. An AI in the middle of a system makes decisions the rest of the system trusts.

Both are legitimate. They are not the same engineering problem. Move the model one step deeper into the critical path and every guarantee downstream of it becomes your responsibility to re-establish.

// edge — failure is visible and cheap draft = await model.suggest(input) ui.showDraft(draft) // human approves // critical path — failure is silent and expensive route = await model.decide(input) db.write(route) // nobody approves billing.charge(route) // ...at 3am
Fig. 01 — placement
AI
Input
Router
Database
Customer
Suggests only. A wrong answer is caught by the person reading it — cost of failure: one ignored suggestion.
02Model selection

Matching the model to the job

“Use the best model” is not a strategy. It’s a bill.

Each job in your system has a failure cost, a latency budget and a price ceiling. Picking a frontier model for a trivial classification burns money on every request forever. Picking a small model for nuanced reasoning saves cents and buys risk.

// route by job, not by habit const route = { classify: 'small', // 40ms, fractions of a cent extract: 'mid', // schema-constrained reason: 'frontier' // human reviews output }[job.type]
Fig. 02 — model pickerPick a job
Small modelgood fit
Cost per callVery low
Latency~40ms
Cost of getting it wrongLow
A label on a ticket. Wrong answer costs one mis-sorted email — the cheapest model on the shelf is the right one.
03Permissions

What it’s allowed to touch

Read or write. Suggest or execute. This is the only pillar your insurer would care about.

Before you grant an AI an action, write down the worst thing that action can do when the model is confidently wrong — then multiply it by the number of times it can happen before a human notices.

// each rung needs a reason to climb it 1 SUGGEST → renders in UI, human acts 2 DRAFT → writes to a staging record 3 WRITE → mutates real data, reversible 4 EXECUTE → money moves, emails send, irreversible, no human in loop
Fig. 03 — blast radiusLevel 1 · Suggest
AI
SuggestDraftWriteExecute
Worst case: a bad suggestion a human reads and ignores. Blast radius: one screen.
04Structure

Schemas on both ends

This is the one the other three build toward. Constrain what goes in. Validate what comes out. Decide, in advance, what happens when validation fails.

A schema turns a language model from something you hope behaves into something your type system can reason about. It also gives you the thing free prose never can: a failure you can catch, log, retry and alert on.

const result = Quote.safeParse(raw) if (!result.success) { metrics.inc('ai.schema_fail') return retryOnce() ?? fallbackToHuman() } // past this line the data is boring — and boring is the goal render(result.data)
Fig. 04 — the contractin / out

Input — scoped & typed

{
  "email_body": string(≤4000),
  "customer_id": uuid,
  "currency": "AUD" | "USD"
}
// raw user text never
// reaches the model alone

Output — validated

{
  "price": number,
  "lead_time_days": int(1..90),
  "confidence": 0..1
}
// fails validation →
// retry, then human
The model is not the product. The contract around it is.
04Break it yourself

Turn the guards off and
watch the app break.

Fig. 05 — the pipelineClick a dashed guard to disable it
Raw input
user text
Validate in
guard
Model
the easy part
Schema check
guard
Your app
customer sees this
Both guards on. Bad payloads are rejected before they can reach a customer.
05Downstream

What the customer actually sees

This is a real quote card — the kind of component sitting at the end of a hundred AI features shipped last quarter. With both guards on it renders the same way every time. Switch one off and the model’s off-day becomes the customer’s problem.

Quote #4471validated
Price$1,240.00
Lead time3 days
Confidence0.94
StatusReady to send

Unstructured · free prose

Press “Run the same request 5×”.
Watch what comes back.

Structured · schema-constrained

Same prompt. Same model.
One difference: a contract.

05Before you ship

Eight questions. If you can’t
answer one, don’t ship yet.

01 · PlacementIs this AI at the edge or in the critical path?If you can’t say in one sentence, it’s in the path.
02 · PlacementWhat breaks downstream if this call returns garbage?Name the component. Then go look at it.
03 · ModelWhy this model and not the tier below it?“It’s what we had the key for” is not a reason.
04 · ModelWhat does this cost at 100× today’s volume?Per-call cents become monthly invoices fast.
05 · PermissionsWhat’s the worst thing it can do if it’s wrong?Write it down. Show it to someone non-technical.
06 · PermissionsHow many times can it be wrong before a human notices?Blast radius is failure × frequency.
07 · StructureWhat exact shape goes in, and what exact shape comes out?If the answer is “text”, you don’t have a feature yet.
08 · StructureWhat happens when validation fails?Retry, fallback, human — pick one before launch.

0 / 8 answered

Breeze — Brisbane

We build the constraints, not just the prompt.

If you’re about to add AI to something people pay for, an hour on placement, permissions and schema now is cheaper than the incident later. Bring your feature — we’ll walk the eight questions with you.

Book a call Take the checklist
© 2026 Breeze — Structured AI Placement · Model · Permissions · Schema Ph 07 2139 9880 sales@breeze-web.com.au