top of page
Search

The Deterministic Mindset: How to Build Better AI Systems Without Overengineering Them

  • Writer: Mark Kendall
    Mark Kendall
  • 1 day ago
  • 7 min read




The Deterministic Mindset: How to Build Better AI Systems Without Overengineering Them



The biggest mistake in modern AI architecture is not using too little AI.


It is using too much.


Once teams discover Claude, Claude Code, agents, subagents, MCP servers, skills, hooks, orchestration, tool calling, and multi-agent workflows, the temptation is immediate:


Use all of it.


Build the coordinator. Add the research agent. Add the validation agent. Add the security agent. Add the review agent. Add another agent to resolve disagreements among the agents.


Before long, a problem that could have been solved with a few clear rules has become an expensive, difficult-to-debug autonomous system.


That is where the deterministic mindset becomes essential.


The goal is not to remove intelligence from the system.


The goal is to place intelligence where it creates value—and use predictable software everywhere else.


The core principle is simple:


Use deterministic software for what must be predictable. Use AI for what genuinely requires interpretation, judgment, synthesis, or adaptation.


That one distinction can improve architecture, reduce cost, simplify operations, and make AI systems far more reliable in production.





What Deterministic Means



A deterministic component follows explicit rules.


Given the same input and the same state, it should produce the same result.


Examples include:


  • validating a JSON schema

  • checking whether required fields are present

  • enforcing identity verification

  • blocking a refund above an approval threshold

  • limiting retries

  • rejecting unauthorized access

  • running tests before deployment

  • routing based on a known status code

  • recording an audit event

  • preventing writes to protected files



These are not tasks that require creativity.


They require consistency.


Claude may help interpret what a user wants, but once a requirement becomes known and enforceable, traditional software should usually take over.


The cleanest way to remember this is:


Claude interprets. Software enforces.


That is not a limitation of AI.


It is good architecture.





The Kitchen-Sink Problem



A team receives a requirement:


Process an incoming report, validate it, store valid records, and send invalid records to a review queue.


The process is fixed. The rules are known. The inputs are structured.


One team builds this:

Report Agent

    ↓

Validation Agent

    ↓

Storage Agent

    ↓

Review Agent

    ↓

Coordinator Agent

Another team builds this:

Download

    ↓

Validate

    ↓

Store

    ↓

Route failures

The second design is usually better.


It is cheaper, faster, more observable, and easier to test.


The first design may look more sophisticated, but sophistication is not the goal.


Reliability is the goal.


A mature AI architect does not ask:


How many AI capabilities can we fit into this solution?


A mature AI architect asks:


What is the least complicated architecture that will reliably satisfy the requirement?


That is the deterministic mindset.





Start With Normal Software



Before introducing an agent, ask:


Can this be solved with ordinary code, configuration, validation, permissions, or a workflow?


If the answer is yes, start there.


Use Claude only where the problem contains uncertainty or unstructured information.


Consider a customer message:


I was charged twice and need this fixed.


Claude can add real value by:


  • interpreting the request

  • identifying duplicate billing as the likely issue

  • extracting account details from the conversation

  • asking for missing information

  • summarizing the customer’s problem

  • explaining the resolution clearly



But deterministic systems should handle:


  • whether the account exists

  • whether the charges are actually duplicates

  • whether the customer has been verified

  • whether a refund has already been issued

  • whether the amount requires approval

  • whether the refund transaction succeeded



The model can interpret the situation.


It should not be allowed to reason around financial controls.





Deterministic Outside, Agentic Inside



The strongest production systems often combine deterministic controls with targeted agentic reasoning.


A sound architecture may look like this:

Deterministic input validation

        ↓

Claude interprets intent

        ↓

Deterministic authorization

        ↓

Claude selects an appropriate action

        ↓

Deterministic tool execution

        ↓

Structured result validation

        ↓

Claude explains the outcome

        ↓

Deterministic audit and completion checks

This is stronger than:

Give Claude every available tool

        ↓

Tell it to be careful

        ↓

Hope it follows the rules

The second approach may work in a demonstration.


The first approach is designed for production.





Guidance Is Not Enforcement



This distinction matters across the entire Claude ecosystem.


A prompt may say:


Always verify identity before issuing a refund.


A CLAUDE.md file may say:


Always run tests before completing a change.


A skill may say:


Follow this security review methodology.


These instructions are valuable.


But they are still guidance.


They influence model behavior. They do not guarantee it.


When something must happen every time, use a mechanism the model cannot bypass.


That may include:


  • hooks

  • CI gates

  • authorization services

  • schema validators

  • permissions

  • interceptors

  • approval workflows

  • transaction rules

  • policy engines



A prompt can request compliance.


A gate can require it.


That difference is one of the most important concepts in AI architecture.





Where Claude Code Capabilities Fit



The deterministic mindset does not reject Claude Code features.


It gives each feature a clear job.





Use CLAUDE.md for durable repository guidance:


  • coding conventions

  • architectural boundaries

  • standard commands

  • testing expectations

  • pull-request practices

  • repository-specific knowledge



It helps Claude work consistently.


But mandatory controls should still be backed by CI, permissions, hooks, or application logic.



Skills



Use skills for reusable methods and specialized knowledge.


Examples include:


  • security reviews

  • architecture assessments

  • repository readiness checks

  • production observability reviews

  • performance analysis

  • migration planning



A skill teaches Claude how to approach a class of problems.


It does not automatically create a hard control.



Slash Commands



Use slash commands for repeatable, explicit workflows.


Examples:

/review-security

/check-release

/generate-tests

/assess-repository

Commands improve repeatability and user experience.


They should not be confused with programmatic enforcement.



Subagents



Use subagents when work benefits from:


  • isolated context

  • specialized instructions

  • restricted tools

  • parallel execution

  • independent review



Do not create a subagent simply because the feature exists.


A subagent should solve a genuine boundary problem.



Hierarchical Agents



Use hierarchical agents only when the task truly contains multiple layers of responsibility.


For example:

Primary Orchestrator

    ├── Architecture Lead

    │     ├── Integration Specialist

    │     └── Data Specialist

    ├── Security Lead

    │     ├── Identity Specialist

    │     └── Policy Specialist

    └── Delivery Lead

          ├── Test Specialist

          └── Deployment Specialist

This can be appropriate for a broad enterprise assessment.


It would be excessive for a small, fixed process.



Hooks



Hooks are one of the clearest expressions of deterministic control.


A prompt can say:


Run the tests before finishing.


A hook can enforce:


The workflow cannot complete successfully unless the tests pass.


That is the difference between recommendation and control.



MCP Servers



MCP gives Claude access to tools, resources, and prompts.


But tool availability does not mean unrestricted tool use.


An MCP tool should still be protected by:


  • input validation

  • authorization

  • rate limits

  • structured errors

  • approval requirements

  • idempotency safeguards

  • audit logging



Claude can request an action.


The surrounding system decides whether the action is allowed.





A Practical Architecture Decision Ladder



A disciplined architect can use a simple sequence of questions.



1. Can ordinary code solve the problem?



If yes, use ordinary code.



2. Is the process fixed?



Use a deterministic workflow.

Receive → Validate → Transform → Store → Notify


3. Is judgment required at one specific point?



Insert Claude only at that point.

Receive → Claude classifies → Deterministic routing


4. Can one agent handle the task?



Use one agent.



5. Are there independent specialist tasks?



Use a coordinator with subagents.

Coordinator

    ├── Research Agent

    ├── Security Agent

    └── Cost Agent


6. Are the steps dependent?



Use a pipeline.

Extract → Classify → Validate → Summarize


7. Do specialists need to challenge one another?



Allow limited peer-to-peer collaboration.



8. Must a rule always be followed?



Enforce it programmatically.


This ladder prevents a team from jumping directly to the most complicated solution.





Deterministic Workflow Versus Agentic Workflow



The difference is not whether AI is present.


The difference is where control lives.


A deterministic workflow has known steps and explicit transitions.

Input

  ↓

Validation

  ↓

Transformation

  ↓

Approval

  ↓

Execution

An agentic workflow allows the model to decide what action should happen next based on context.

Request

  ↓

Claude evaluates

  ↓

Claude selects a tool

  ↓

Tool result returns

  ↓

Claude decides whether to continue

Both are useful.


The problem begins when an agentic loop is used for a process that did not require judgment in the first place.


Use deterministic workflows when:


  • steps are known

  • rules are stable

  • outputs are structured

  • decisions are repeatable

  • compliance matters

  • errors must be easy to diagnose



Use agentic workflows when:


  • the path cannot be known in advance

  • user intent is ambiguous

  • information must be synthesized

  • tool selection depends on context

  • the system must adapt to novel situations

  • judgment is central to the task



The best architecture may combine both.





The Closer You Get to Production, the More Deterministic You Should Become



Early in a workflow, Claude may have significant freedom.


It may interpret a request, explore options, compare approaches, or generate a plan.


But as the system approaches production, the boundaries should tighten.


A useful pattern is:

Intent

  ↓

Interpretation

  ↓

Plan

  ↓

Structured tasks

  ↓

Validated implementation

  ↓

Deterministic gates

  ↓

Production

The closer the workflow gets to:


  • money

  • customer data

  • security

  • compliance

  • deployment

  • irreversible actions

  • production state



the less freedom the model should have.


This does not reduce the value of Claude.


It protects the value Claude creates.





The Deterministic Mindset in Intent-Driven Engineering



Intent-Driven Engineering begins with human intent.


That intent may be incomplete, ambiguous, or spread across Jira, Confluence, Figma, source code, business rules, and conversation history.


Claude is exceptionally useful at bringing that intent together.


But the process should become more structured as it moves downstream.

Human intent

    ↓

AI interpretation

    ↓

Clarified requirements

    ↓

Implementation plan

    ↓

Structured tasks

    ↓

Code and tests

    ↓

Automated validation

    ↓

Deployment controls

This leads to an important IDE principle:


Intent should be interpreted intelligently, but execution should become progressively more deterministic as it approaches production.


That is how intent becomes executable without becoming uncontrolled.





Do Not Confuse Complexity With Capability



A multi-agent system is not automatically more capable than a simple workflow.


A hierarchical architecture is not automatically more mature than one agent.


A long prompt is not automatically safer than a gate.


A larger context window is not automatically better than focused context.


More retries are not automatically more reliable than bounded retries with escalation.


More autonomy is not automatically better than controlled execution.


Architecture is not a contest to use the most advanced features.


It is the discipline of choosing the right amount of complexity.





The Production Test



When comparing two technically valid solutions, ask:


  • Which one is easier to test?

  • Which one is easier to observe?

  • Which one is cheaper to operate?

  • Which one fails more safely?

  • Which one is easier to explain?

  • Which one has fewer unnecessary handoffs?

  • Which one preserves clear ownership?

  • Which one enforces critical rules outside the prompt?

  • Which one will still make sense six months from now?



That is the production mindset.


And increasingly, it is also the certification mindset.


The strongest answer is often not the answer with the most agents.


It is the answer with the clearest boundaries.





The Rule to Carry Forward



When designing with Claude, Claude Code, agents, subagents, MCP, skills, hooks, and orchestration, remember this:


Choose the least agentic architecture that reliably solves the problem, and enforce critical requirements outside the prompt.


That does not make the system less intelligent.


It makes the system more trustworthy.


And trust—not novelty—is what turns an AI demonstration into an enterprise capability.

:::


This one would pair well with a clean architecture visual showing AI judgment in the center and deterministic controls surrounding it.

 
 
 

Recent Posts

See All
Intent Does Not Stop at the Pull Request

Intent Does Not Stop at the Pull Request Most conversations about intent-driven development focus on the moment software is created. A team describes what it wants. An AI coding tool interprets that i

 
 
 

Comments

Rated 0 out of 5 stars.
No ratings yet

Add a rating
Post: Blog2_Post

Subscribe Form

Thanks for submitting!

©2020 by LearnTeachMaster DevOps. Proudly created with Wix.com

bottom of page