<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://richwellman.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://richwellman.com/" rel="alternate" type="text/html" /><updated>2026-06-01T20:59:55+00:00</updated><id>https://richwellman.com/feed.xml</id><title type="html">Rich Wellman</title><subtitle>AI Automation Specialist building enterprise AI pipelines in healthcare. Notes on AI architecture, agent systems, and what I actually shipped.</subtitle><author><name>Rich Wellman</name></author><entry><title type="html">The Automation Trap Isn’t Technical. It’s a Selection Problem.</title><link href="https://richwellman.com/2026/05/31/The-Automation-Trap.html" rel="alternate" type="text/html" title="The Automation Trap Isn’t Technical. It’s a Selection Problem." /><published>2026-05-31T00:00:00+00:00</published><updated>2026-05-31T00:00:00+00:00</updated><id>https://richwellman.com/2026/05/31/The-Automation-Trap</id><content type="html" xml:base="https://richwellman.com/2026/05/31/The-Automation-Trap.html"><![CDATA[<p>Most automation projects don’t fail because the technology doesn’t work. They fail because the team picked the wrong process.</p>

<p>I’ve built automation pipelines at a large healthcare system for the past few years, everything from Power Automate flows that fire on SharePoint triggers to multi-step AI agents that extract structured data from PDFs. The hardest thing I’ve learned isn’t how to build them. It’s how to decide what to build.</p>

<p>The selection problem is invisible until it isn’t. You spend eight weeks engineering a solution, ship it, and then watch it save four hours a month. The math was never there. You just didn’t run the math before you started.</p>

<hr />

<h2 id="the-selection-trap">The Selection Trap</h2>

<p>McKinsey’s November 2025 research puts 57% of US work hours as technically automatable with today’s AI agents and robotics. That number gets cited as evidence that the automation opportunity is massive. It is. But it also means that most of what you’re looking at <em>can</em> be automated, which makes the selection problem worse, not better.</p>

<p>Most organizations have automated less than 15% of eligible processes. The gap isn’t technical capability. It’s the absence of a filter for deciding which 15% to build first.</p>

<p>Two selection errors keep appearing in every automation program I’ve been part of:</p>

<p><strong>The prestige automation.</strong> A process that looks impressive to automate, multi-system, AI-powered, generates a good slide. It runs monthly. Even if it works perfectly, the payback period stretches past two years. The engineering investment was real. The value wasn’t.</p>

<p><strong>The visible-but-small win.</strong> A process that’s painful enough that everyone complains about it, but it’s only 5% of one person’s week. You automate it, the team cheers, and the real bottleneck, the process that consumes 40% of the week, sits untouched because it looked harder to automate.</p>

<p>Both errors share the same root cause: the decision was made on gut feel, not economics.</p>

<hr />

<h2 id="the-complexity-to-value-matrix">The Complexity-to-Value Matrix</h2>

<p>Before I scope any automation now, I place the candidate process in a 2×2. The axes are implementation effort and business value.</p>

<p><img src="/assets/images/priority_2x2_matrix.svg" alt="Priority matrix" /></p>

<p><strong>Quick Wins first.</strong> High-frequency, structured processes that live in a single system. Low effort to automate, high payback.</p>

<p><strong>Strategic Bets get staged rollouts.</strong> High value, but the complexity is real, plan for it, don’t wish it away.</p>

<p><strong>Fill-ins only if trivial.</strong> They’re not the priority.</p>

<p><strong>Traps don’t get built.</strong> Full stop. The prestige automation lives here.</p>

<hr />

<h2 id="scoring-a-process">Scoring a Process</h2>

<p><strong>Effort signals</strong>: these push a process toward low effort:</p>
<ul>
  <li>Structured, predictable inputs (not PDFs with variable layouts, not free-text emails)</li>
  <li>Single system, no cross-system joins required</li>
  <li>Existing API or low-code connector available</li>
  <li>No multi-step approval paths</li>
  <li>No regulatory audit requirement</li>
</ul>

<p><strong>Value signals</strong>: these push a process toward high value:</p>
<ul>
  <li>High frequency: daily or weekly, not monthly</li>
  <li>High per-unit time cost: this is someone’s two hours, not their fifteen minutes</li>
  <li>Errors are expensive: compliance risk, rework, or downstream impact</li>
  <li>It’s a bottleneck: upstream work queues here</li>
</ul>

<p>If a process scores low on both axes, it’s a Fill-in at best and a Trap at worst. Don’t let the technology’s novelty substitute for the economics.</p>

<hr />

<h2 id="the-payback-formula">The Payback Formula</h2>

<p>Once a process passes the quadrant filter, run the numbers:</p>

<p><img src="/assets/images/payback_period_formula_divide.svg" alt="Automation payback period formula" /></p>

<p><strong>Cost side:</strong> development hours × fully-loaded rate, tooling and licensing, QA and testing, change management, ongoing maintenance.</p>

<p><strong>Value side:</strong> hours saved per week × wage, error reduction value, cycle time improvement.</p>

<p>Two adjustments most estimates skip:</p>

<p><strong>Ramp-up discount.</strong> The first one to three months after go-live are not full savings. People are still learning the new process, there are edge cases to handle, and exceptions that weren’t in the spec.</p>

<p><strong>Maintenance decay.</strong> Automations erode. The process changes, the source system gets updated, the data format shifts. Budget 10–20% annual maintenance overhead against your savings figure.</p>

<p>A direct-labor calculation understates ROI by 30–50%. Error reduction and cycle time value are real, include them. But they’re harder to quantify, so lead with the labor math and treat the rest as upside.</p>

<hr />

<h2 id="the-enterprise-wrinkle-risk-as-a-modifier">The Enterprise Wrinkle: Risk as a Modifier</h2>

<p>In a regulated environment, a third dimension can reclassify a process. Compliance exposure, audit requirements, and data residency constraints can push a Quick Win into Strategic Bet territory, not because the automation is technically harder, but because the governance work around it is.</p>

<p>Before finalizing a quadrant placement: ask whether the process touches protected health information, financial records, or a regulatory workflow. If yes, the effort estimate goes up. The value might too, compliance risk reduction is often the highest-value automation outcome in healthcare, but the naive effort estimate needs to be adjusted.</p>

<hr />

<h2 id="when-this-doesnt-apply">When This Doesn’t Apply</h2>

<p>This filter works when there’s enough process regularity to automate. It doesn’t work for processes that are genuinely judgment-intensive, where exceptions are the rule rather than the edge case.</p>

<p>Don’t use the matrix to justify automating something that actually requires human reasoning, the maintenance cost of a badly-scoped AI agent will swamp any savings in the first year. The question isn’t “can we automate this?” It’s “does this process have enough structure that an automation will be cheaper to maintain than the human doing it?”</p>

<hr />

<p>McKinsey didn’t tell you what to build first. This does.</p>

<hr />

<p><em>Rich Wellman is an AI Automation Specialist at the healthcare system where he works, building AI pipelines on Azure. He writes about what actually works at richwellman.com.</em></p>]]></content><author><name>Rich Wellman</name></author><category term="Other" /><summary type="html"><![CDATA[Most automation projects don’t fail because the technology doesn’t work. They fail because the team picked the wrong process.]]></summary></entry><entry><title type="html">Copilot Studio is a Claude Skill Runtime (And That’s the Point)</title><link href="https://richwellman.com/2026/05/29/Copilot-Studio-is-a-Claude-Skill-Runtime.html" rel="alternate" type="text/html" title="Copilot Studio is a Claude Skill Runtime (And That’s the Point)" /><published>2026-05-29T00:00:00+00:00</published><updated>2026-05-29T00:00:00+00:00</updated><id>https://richwellman.com/2026/05/29/Copilot-Studio-is-a-Claude-Skill-Runtime</id><content type="html" xml:base="https://richwellman.com/2026/05/29/Copilot-Studio-is-a-Claude-Skill-Runtime.html"><![CDATA[<p>There’s a framing problem with Copilot Studio.</p>

<p>Ask most enterprise IT people what it is and they’ll say “Microsoft’s low-code
chatbot builder.” That’s accurate — the way saying a compiler is a text processor
is accurate. Technically true, completely misses the point.</p>

<p>I’ve spent the last several months building agents in Copilot Studio for a large
healthcare system. What I’ve come to understand is that Copilot Studio — in its
modern generative orchestration mode — is running the same fundamental loop as
Claude’s tool-use system, OpenAI function calling, LangChain’s agent executor, and
Microsoft’s own Semantic Kernel. The “low-code” label describes the authoring
surface. It says nothing about the architecture underneath.</p>

<p>That architecture is worth understanding. Because once you see it, a few things
become clear: what the highest-leverage work actually is, why most Copilot Studio
agents underperform, and why the skills you’re building here transfer directly to
every other agent framework.</p>

<hr />

<h2 id="the-loop-that-every-agent-framework-runs">The Loop That Every Agent Framework Runs</h2>

<p>Strip away the platform-specific terminology and every modern LLM agent — whether
you’re building in Claude, Copilot Studio, LangChain, or Semantic Kernel — runs
some version of this:</p>

<pre><code>1. Give the model a set of callable functions, with descriptions
2. Model reads the descriptions, picks one, generates the arguments
3. Framework executes the function
4. Result gets fed back to the model
5. Model decides: done, or call another function?
6. Repeat until done
</code></pre>

<p>That’s it. Every framework is a different wrapper around that loop. The wrappers
differ in governance, execution environment, authoring UX, and enterprise
integration. The loop is the same.</p>

<p>Copilot Studio’s version of this is called <strong>generative orchestration</strong>. In this mode:</p>

<ul>
  <li>Your <strong>agent instructions</strong> are the system prompt</li>
  <li>Your <strong>actions</strong> (backed by Power Automate flows or HTTP calls) are the callable
functions</li>
  <li>The <strong>action descriptions</strong> are what the LLM reads to decide which function to call</li>
  <li>The LLM orchestrator sequences the workflow at runtime, based on what you’ve written</li>
</ul>

<p>Microsoft’s own guidance says it plainly: <em>“Copilot Studio isn’t designed to be
heavily authored, topic by topic. Instead, it’s focused on authored business-critical
experiences that work side by side with AI-driven knowledge, orchestration, and
automation.”</em></p>

<p>Translation: stop drawing topic graphs. Write the system prompt and the tool
descriptions. Let the LLM route.</p>

<hr />

<h2 id="the-equivalence-table-nobody-shows-you">The Equivalence Table Nobody Shows You</h2>

<p>Here’s the direct mapping across frameworks:</p>

<table>
  <thead>
    <tr>
      <th>Concept</th>
      <th>Claude</th>
      <th>Copilot Studio</th>
      <th>LangChain</th>
      <th>Semantic Kernel</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>System prompt</td>
      <td>System prompt</td>
      <td>Agent instructions</td>
      <td>Agent prompt</td>
      <td>System prompt</td>
    </tr>
    <tr>
      <td>Callable function</td>
      <td>Tool</td>
      <td>Action</td>
      <td>Tool</td>
      <td>Kernel function</td>
    </tr>
    <tr>
      <td>Routing logic</td>
      <td>Tool description</td>
      <td>Action description</td>
      <td>Tool description</td>
      <td>Function annotation</td>
    </tr>
    <tr>
      <td>Execution layer</td>
      <td>API / code</td>
      <td>Power Automate flow</td>
      <td>Python function</td>
      <td>Plugin method</td>
    </tr>
    <tr>
      <td>Orchestration</td>
      <td>LLM tool-use loop</td>
      <td>Generative orchestration</td>
      <td>ReAct executor</td>
      <td>Planner</td>
    </tr>
  </tbody>
</table>

<p>The syntax is different. The concept is identical.</p>

<p>What Copilot Studio adds — and this is the actual differentiator — is the enterprise
wrapper:</p>

<ul>
  <li>Azure AD authentication, so the agent runs as a governed identity</li>
  <li>Teams and M365 Copilot as deployment surfaces, so users never leave their workspace</li>
  <li>DLP policies, compliance boundaries, and audit trail built into the platform</li>
  <li>Licensing and capacity management Microsoft already handles</li>
</ul>

<p>If you’re building AI agents inside a regulated enterprise — healthcare, finance,
government — that wrapper isn’t overhead. It’s the thing that lets the project ship
at all. Any custom-built agent framework means you’re also building the auth, the
deployment surface, the compliance story, and the licensing model. Copilot Studio
comes with all of that.</p>

<p>The trade-off is flexibility. You’re working within Microsoft’s constraints. But for
most enterprise business process automation, those constraints are fine — and the
governance layer is genuinely hard to replicate.</p>

<hr />

<h2 id="what-this-means-for-how-you-build">What This Means for How You Build</h2>

<p>If Copilot Studio is running the same loop as every other agent framework, then the
highest-leverage skills are the same too.</p>

<p><strong>The most important thing you do is write the action descriptions.</strong></p>

<p>Not the Power Automate flows. Not the topic graph. Not the system prompt (though
that matters). The descriptions you write for each action are what the LLM reads
when it decides which function to call next. Write them poorly and the agent
mis-routes. Write them well and the agent sequences correctly even in edge cases
you didn’t explicitly author.</p>

<p>A good action description:</p>
<ul>
  <li>States <em>when to use it</em> — the trigger condition in plain English</li>
  <li>Names <em>preconditions</em> — what must already be true before this function is called</li>
  <li>Hints at <em>downstream coupling</em> — how this action’s output feeds the next</li>
  <li>Explicitly <em>excludes</em> ambiguous cases — what NOT to use it for</li>
</ul>

<p>I built a treasury reconciliation agent with four actions. No topics. The agent
loads a CSV export, extracts data from PDF documents, reconciles the two, and moves
the file to the right folder — entirely driven by the LLM reading the agent
instructions and action descriptions. The only time I needed to add a deterministic
topic was for a specific edge case where the orchestrator consistently drifted. One
topic, as a guardrail.</p>

<p>That’s the modern model. System prompt as the control plane. Action descriptions as
the routing logic. Topics only where you need a hard rail.</p>

<hr />

<h2 id="the-portability-point">The Portability Point</h2>

<p>Here’s what I find most useful about this framing.</p>

<p>If you understand that Copilot Studio is running the same loop as Claude or
LangChain, then the skills you’re building aren’t Copilot Studio skills. They’re
<strong>agent design skills</strong>. Tool decomposition. Description authoring. Orchestration
drift handling. Knowing when to make the LLM decide versus when to force a
deterministic path.</p>

<p>Those skills transfer directly to any other framework. Moving from Copilot Studio
to the Claude API or LangChain is additive syntax — you’re learning new function
signatures, not a new paradigm.</p>

<p>This matters if you’re an enterprise architect who wants to stay current. You don’t
need to abandon the Microsoft stack to develop serious AI engineering depth. The
work you’re doing in Copilot Studio, if you understand what it’s actually doing, is
the same work you’d be doing anywhere else. The enterprise wrapper is the deployment
target. The architecture is the skill.</p>

<hr />

<h2 id="the-one-line-summary">The One-Line Summary</h2>

<p>Copilot Studio in generative orchestration mode is an LLM agent runtime with
Microsoft’s enterprise governance layer on top. The AI capability is the same as
every other major framework. What you’re buying is the wrapper.</p>

<p>Once you see it that way, you know what to spend your time on: write good
descriptions, write a clear system prompt, and let the LLM do the routing it was
built to do.</p>

<hr />

<p><em>Rich Wellman is a Solutions Architect at a major healthcare system, building AI
automation on Azure. He writes about what actually works at
<a href="https://richwellman.com">richwellman.com</a>.</em></p>]]></content><author><name>Rich Wellman</name></author><category term="Other" /><summary type="html"><![CDATA[There’s a framing problem with Copilot Studio.]]></summary></entry><entry><title type="html">From Five Prompts to One: How a Reasoning Model Eliminated an Entire Pipeline Layer</title><link href="https://richwellman.com/2026/05/29/From-Five-Prompts-to-One.html" rel="alternate" type="text/html" title="From Five Prompts to One: How a Reasoning Model Eliminated an Entire Pipeline Layer" /><published>2026-05-29T00:00:00+00:00</published><updated>2026-05-29T00:00:00+00:00</updated><id>https://richwellman.com/2026/05/29/From-Five-Prompts-to-One</id><content type="html" xml:base="https://richwellman.com/2026/05/29/From-Five-Prompts-to-One.html"><![CDATA[<p>I built six architectures to solve the same problem. The one that worked was the simplest.</p>

<p>The problem: Treasury staff at a major healthcare system receive banking documents
every day — patient cash sweeps, wire transfer requests, concentration reports,
standalone transfers. Each one a PDF. Each one needs to be reconciled against a
treasury management system export to confirm every dollar moved where it was
supposed to move.</p>

<p>Manual reconciliation is slow. A single Patient Cash Sweep can contain seventeen
line items totaling tens of millions of dollars. One transposed account number is
hours of debugging.</p>

<p>The solution, eventually, was a single prompt running on a reasoning model. What
I built before that teaches more than the solution itself.</p>

<hr />

<h2 id="what-i-tried-before-it-worked">What I Tried Before It Worked</h2>

<p><strong>Approach 1 — Just ask Copilot.</strong></p>

<p><img src="/assets/images/manual_copilot_flow_v2.svg" alt="Manual flow" /></p>

<p>Paste the PDF text in, prompt for extraction.
This proved the concept: an LLM can read these documents and return structured data
without a custom parser. It also proved the obvious limitation: you can’t automate
a paste-and-wait workflow.</p>

<hr />

<p><strong>Approach 2 — Azure AI Document Intelligence custom models.</strong></p>

<p><img src="/assets/images/doc_intelligence_pipeline.svg" alt="Doc Intelligence Pipeline" /></p>

<p>I trained a custom model on each document type — wire transfer forms, sweep
summaries, concentration reports. Document Intelligence is excellent for
fixed-layout forms, and it worked for those. Treasury documents aren’t fixed
layouts. One sweep has twelve rows; the next has twenty-three. Wire requests have
optional fields that appear only for inter-bank transfers. A new document type
meant a new labeling session, a new training run, a new testing cycle. The
maintenance overhead compounded immediately.</p>

<hr />

<p><strong>Approach 3 — Azure AI Content Understanding: classifier plus type-specific analyzers.</strong></p>

<p><img src="/assets/images/classifier_failure_points.svg" alt="Content Understanding Pipeline" /></p>

<p>A smarter architecture: a classifier to identify the document type,
then route to the right analyzer. I built this with Azure AI Content Understanding
— a classifier with child analyzers for each document category. The architecture
was sound. The failure modes multiplied. Misclassification routes the document to
the wrong analyzer. The right analyzer hits a layout variant it hasn’t seen. The
extraction succeeds but a field mapping is incomplete. Each layer adds diagnostic
surface without proportional accuracy. Debugging a failed extraction now means
asking: did the classifier route correctly? Did the right analyzer fire? Did the
extraction return nulls it shouldn’t have? Complexity scaled faster than reliability.</p>

<hr />

<p><strong>Approach 4 — Copilot Studio orchestrating an Azure Function.</strong></p>

<p><img src="/assets/images/copilot_automate_pipeline.svg" alt="Copilot Automate Pipeline" /></p>

<p>I moved to Copilot Studio as the delivery layer, with an Azure Function handling
extraction. The problem: the function became a maintenance bottleneck. Custom
parsing logic per document type. Every new format meant new code. Different
language, same problem as the custom models.</p>

<hr />

<p><strong>Approach 5 — GPT-4.1 with classify-then-extract prompts.</strong></p>

<p><img src="/assets/images/classify_switch_pipeline.svg" alt="Classify Switch Pipeline" /></p>

<p>I embraced LLM-based extraction fully. A classification prompt identified the
document type. A Power Automate Switch routed to one of four extraction prompts,
each with its own JSON schema. This was the closest I got before the real solution
— and it exposed the actual problem clearly.</p>

<p>GPT-4.1 is an instruction-following model. The extraction prompts I needed weren’t
instruction-following tasks. They were reasoning tasks:</p>

<ul>
  <li>Infer that the single “From” account at the top of a sweep applies to every row
in the table below it</li>
  <li>Understand that FFC routing means the sub-account is the real beneficiary, not
the intermediate bank</li>
  <li>Distinguish between line items that describe cost breakdown versus line items that
are separate transfers</li>
  <li>Decide whether a “Total” row aggregates destinations or justifies a single wire amount</li>
</ul>

<p>GPT-4.1 handled clean documents acceptably. On complex ones it left fields blank,
treated cost breakdowns as separate transfers, or misread structural relationships.
The model was doing its best. I was asking it to do something it wasn’t built for.</p>

<p>The architecture also created a maintenance problem: five prompts, four JSON schemas,
a Switch with four branches. Adding a new document type meant a new prompt, a new
schema, a new Switch case.</p>

<hr />

<h2 id="what-actually-worked">What Actually Worked</h2>

<p>I collapsed everything to one prompt.</p>

<p><img src="/assets/images/gpt5_single_prompt_pipeline_v2.svg" alt="GPT5 prompt Pipeline" /></p>

<p>One prompt. One schema. All document types. No classifier. No Switch. No branches.</p>

<p>The schema defines every money movement as a <code>from → to → amount</code> row:</p>

<pre><code class="language-json">{
  "document_type": "string",
  "date": "string",
  "transactions": [
    {
      "from_entity": "string",
      "from_account": "string",
      "to_entity": "string",
      "to_account": "string",
      "amount": "number",
      "description": "string or null"
    }
  ],
  "grand_total": "number or null",
  "transaction_count": "number"
}
</code></pre>

<p>The prompt instructs the model to extract every distinct money movement, infer
shared values from context, use FFC accounts as the real beneficiary, and validate
that amounts sum to the grand total.</p>

<p>The reasoning model reads the document, builds an internal model of its structure,
infers entity relationships, and maps everything to the universal schema — without
being told what type of document it’s processing. Document type is still output as
a field, but it’s a byproduct of reasoning rather than a routing prerequisite.</p>

<p>The arithmetic validation catches extraction failures: if <code>grand_total</code> is present
and the amounts don’t sum to it, a <code>validation_error</code> field routes the document to
human review. Clean documents get processed automatically.</p>

<hr />

<h2 id="the-numbers">The Numbers</h2>

<table>
  <thead>
    <tr>
      <th>Dimension</th>
      <th>Classify-then-branch (GPT-4.1)</th>
      <th>Single prompt (GPT-5 reasoning)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Prompts to maintain</td>
      <td>5</td>
      <td>1</td>
    </tr>
    <tr>
      <td>Power Automate actions</td>
      <td>~15</td>
      <td>~5</td>
    </tr>
    <tr>
      <td>JSON schemas</td>
      <td>4</td>
      <td>1</td>
    </tr>
    <tr>
      <td>Adding a new document type</td>
      <td>New prompt + Switch case + schema</td>
      <td>Update one prompt</td>
    </tr>
    <tr>
      <td>Failure modes</td>
      <td>Misclassification, wrong branch, null fields</td>
      <td>Extraction error</td>
    </tr>
    <tr>
      <td>Calls per document</td>
      <td>2</td>
      <td>1</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="what-this-actually-means">What This Actually Means</h2>

<p>The lesson isn’t specific to document extraction. It’s about where complexity
belongs in an AI pipeline.</p>

<p><strong>Classification-and-branch architectures push complexity into orchestration.</strong> The
prompt stays simple; the pipeline compensates. You pay for this with failure modes
at every routing decision, with maintenance overhead on every branch, with no
recovery path from a misclassification.</p>

<p><strong>A reasoning model moves that complexity into the model itself</strong> — where it’s
invisible, zero-maintenance, and doesn’t require you to enumerate every document
type in advance. The model infers structure as part of generating output. That’s
what it’s for.</p>

<p>The broader principle: if you’re building elaborate classification and branching
logic to compensate for a model that can’t reason through the problem, you might
have the wrong model. Pipeline complexity is often a symptom of model mismatch.</p>

<p>Universal schemas are worth looking for. Every money movement is <code>from → to →
amount</code>. Every support ticket is <code>symptom → severity → owner</code>. Find the invariant
in your domain. Build the schema around that, not around the document types.</p>

<p>And built-in validation catches what prompts miss. Extraction will fail
occasionally. A deterministic check — arithmetic, referential integrity, required
field presence — provides a reliable safety net without requiring extraction to be
perfect.</p>

<p>The reasoning model didn’t just solve the problem. It simplified the entire pipeline.</p>

<hr />

<p><em>Rich Wellman is a Solutions Architect at a major healthcare system, building AI
automation on Azure. He writes about what actually works at
<a href="https://richwellman.com">richwellman.com</a>.</em></p>]]></content><author><name>Rich Wellman</name></author><category term="Other" /><summary type="html"><![CDATA[I built six architectures to solve the same problem. The one that worked was the simplest.]]></summary></entry><entry><title type="html">Reengineering 35 Years Later: Don’t Automate, Obliterate</title><link href="https://richwellman.com/2025/11/20/Reengineering-35-Years-Later.html" rel="alternate" type="text/html" title="Reengineering 35 Years Later: Don’t Automate, Obliterate" /><published>2025-11-20T00:00:00+00:00</published><updated>2025-11-20T00:00:00+00:00</updated><id>https://richwellman.com/2025/11/20/Reengineering-35-Years-Later</id><content type="html" xml:base="https://richwellman.com/2025/11/20/Reengineering-35-Years-Later.html"><![CDATA[<p>Thirty Five years ago, Michael Hammer published an article in Harvard Business Review that every AI consultant should be required to read. The title alone should give today’s automation gurus pause: <a href="https://hbr.org/1990/07/reengineering-work-dont-automate-obliterate">“Reengineering Work: Don’t Automate, Obliterate.”</a> (HBR, July-August 1990)</p>

<p>The article is filled with case studies, but one stands out as particularly relevant to our current AI automation frenzy.</p>

<h2 id="the-ford-story-nobody-remembers">The Ford Story Nobody Remembers</h2>

<p>Ford’s accounts payable department was gearing up for a standard efficiency project. The goal: reduce staff by 20%. Not bad for a corporate initiative. Management was feeling pretty good about the plan.</p>

<p>Then someone looked at Mazda.</p>

<p>Ford’s accounts payable department had 500 people. They were planning to cut that to 400.</p>

<p>Mazda’s accounts payable department had 5 people.</p>

<p>Not 500. Not 400. Five.</p>

<p>That’s not a 20% improvement. That’s a 99% improvement. And it’s the difference between automating a process and obliterating it.</p>

<h2 id="the-lesson-we-keep-forgetting">The Lesson We Keep Forgetting</h2>

<p>Ford didn’t get to Mazda’s numbers by automating their existing process. They couldn’t. You can’t automate your way from 500 people to 5 people by making the same process faster.</p>

<p>As Bill Gates famously said: “Automation applied to an efficient operation will magnify the efficiency. Automation applied to an inefficient operation will magnify the inefficiency.”</p>

<p>Ford had to completely reimagine how accounts payable worked. They had to question every assumption. They had to throw out the old process and start from scratch.</p>

<p>The technology—databases, computers, networks—was the small player in this story. The big player was the willingness to obliterate the old way of doing things.</p>

<h2 id="why-this-matters-now">Why This Matters Now</h2>

<p>We’re living through the AI automation hype cycle. Companies are being told that AI will revolutionize their operations, eliminate inefficiencies, and cut costs dramatically.</p>

<p>And they will—if you do the hard work of reengineering first.</p>

<p>But most companies are making the same mistake Ford almost made. They’re taking their existing, inefficient processes and trying to automate them with AI.</p>

<p>The result? Automated inefficiency. Faster dysfunction. More expensive complexity.</p>

<h2 id="the-mazda-advantage">The Mazda Advantage</h2>

<p>Why was Mazda’s accounts payable department so small? They didn’t have the baggage of “the way we’ve always done it.”</p>

<p>Much of the Japanese economy had to rebuild from scratch after World War II. There were no legacy processes to protect. No entrenched departments to defend. No politics around “but we’ve always done it this way.”</p>

<p>They could start with a clean sheet and ask: “What’s the simplest possible way to accomplish this goal?”</p>

<p>That freedom led to radically simpler processes that required far fewer people.</p>

<h2 id="the-automation-fairy-tale">The Automation Fairy Tale</h2>

<p>Today’s automation vendors would have you believe their technology is pixie dust. Just sprinkle AI on your problems and watch them disappear.</p>

<p>It won’t work.</p>

<p>If your process is broken, automating it just means you’ll produce wrong answers faster. If your workflow is overcomplicated, adding AI just creates overcomplicated AI workflows.</p>

<p>The vendors selling you automation don’t want you to obliterate your process. They want you to automate your existing one. Why? Because that’s a technology sale. Obliteration requires consulting, change management, and hard thinking. That’s messy and expensive.</p>

<p>Buying software is easier than rethinking your business.</p>

<h2 id="what-obliteration-actually-looks-like">What Obliteration Actually Looks Like</h2>

<p>Before you automate with AI, ask:</p>

<p><strong>1. If we started from zero today, how would we do this?</strong>
Don’t ask “how can we make our current process faster?” Ask “do we need this process at all?”</p>

<p><strong>2. What’s the simplest version that could work?</strong>
Ford’s existing process had multiple checks, approvals, and verification steps. Mazda eliminated most of them by redesigning the upstream process so they weren’t needed.</p>

<p><strong>3. What are we doing because ‘that’s how it’s always been done’?</strong>
Legacy processes often exist because of constraints that no longer apply. The approval chain that made sense when everything was on paper might be ridiculous when everything is digital.</p>

<p><strong>4. Can we eliminate this instead of accelerating it?</strong>
The fastest process is the one you don’t have to do at all.</p>

<h2 id="the-database-didnt-save-ford">The Database Didn’t Save Ford</h2>

<p>Here’s what’s crucial: Ford and Mazda both had access to the same database technology. The technology wasn’t Mazda’s advantage.</p>

<p>The advantage was that Mazda designed their process around what was possible with the technology, while Ford was trying to use the technology to speed up their old process.</p>

<p>Sound familiar?</p>

<p>Today, everyone has access to the same AI models. OpenAI, Anthropic, Google—they’ll sell to anyone. The technology isn’t your competitive advantage.</p>

<p>Your advantage is being willing to obliterate your process and redesign it around what AI makes possible.</p>

<h2 id="you-cant-just-keep-doing-what-youre-doing">You Can’t Just Keep Doing What You’re Doing</h2>

<p>Thirty years later, Hammer’s message is more relevant than ever.</p>

<p>You can’t just keep doing what you’re doing, automate it with AI, and hope to survive. Your competitors who are willing to reimagine their processes from the ground up will destroy you.</p>

<p>Not because they have better AI. Because they have better processes that happen to use AI.</p>

<h2 id="where-to-start">Where to Start</h2>

<p>If you’re serious about AI transformation:</p>

<ol>
  <li>
    <p><strong>Stop the automation projects.</strong> Pause any “let’s add AI to this process” initiatives.</p>
  </li>
  <li>
    <p><strong>Start with obliteration.</strong> Pick one inefficient process and ask: “If we could start over, how would we do this?”</p>
  </li>
  <li>
    <p><strong>Design for AI, don’t retrofit it.</strong> Build new processes that take advantage of what AI can do, rather than bolting AI onto old processes.</p>
  </li>
  <li>
    <p><strong>Measure end-to-end outcomes.</strong> Ford measured people in their department. Mazda measured cost per transaction and error rate. One metric encourages efficiency. The other encourages obliteration.</p>
  </li>
  <li>
    <p><strong>Be willing to throw everything out.</strong> The hardest part isn’t the technology. It’s having the courage to say “our current approach is fundamentally wrong.”</p>
  </li>
</ol>

<h2 id="the-real-challenge">The Real Challenge</h2>

<p>Thirty years ago, companies failed at reengineering not because they lacked technology. They failed because:</p>

<ul>
  <li>They were unwilling to challenge sacred cows</li>
  <li>They protected departments and headcount</li>
  <li>They automated first, thought second</li>
  <li>They measured activity instead of outcomes</li>
</ul>

<p>Today, companies are making the exact same mistakes with AI.</p>

<p>The question isn’t “how can we use AI to automate this process?”</p>

<p>The question is “what would this process look like if we designed it today with AI as a fundamental capability?”</p>

<p>One question gives you incremental improvement. The other gives you the Ford-to-Mazda leap.</p>

<hr />

<p><strong>Struggling to figure out where to start?</strong> I help companies identify which processes to obliterate and how to redesign them for AI-first operations. The goal isn’t just automation—it’s transformation that delivers measurable business results. <a href="mailto:richwellman7@gmail.com">Let’s talk</a> about reimagining your processes before you automate them.</p>

<hr />

<h2 id="references">References</h2>

<p>Hammer, M. (1990). “Reengineering Work: Don’t Automate, Obliterate.” <em>Harvard Business Review</em>, July-August 1990. https://hbr.org/1990/07/reengineering-work-dont-automate-obliterate</p>

<hr />

<p><em>About the author: Richard Wellman helps companies implement AI automation that delivers measurable business value. With experience in business process reengineering and enterprise transformation,he specializes in identifying processes that should be obliterated, not automated.</em></p>]]></content><author><name>Rich Wellman</name></author><category term="Other" /><summary type="html"><![CDATA[Thirty Five years ago, Michael Hammer published an article in Harvard Business Review that every AI consultant should be required to read. The title alone should give today’s automation gurus pause: “Reengineering Work: Don’t Automate, Obliterate.” (HBR, July-August 1990)]]></summary></entry><entry><title type="html">Prompt Engineering: The art of asking better questions</title><link href="https://richwellman.com/2025/09/22/Prompt-Engineering-like-Einstein.html" rel="alternate" type="text/html" title="Prompt Engineering: The art of asking better questions" /><published>2025-09-22T00:00:00+00:00</published><updated>2025-09-22T00:00:00+00:00</updated><id>https://richwellman.com/2025/09/22/Prompt-Engineering-like-Einstein</id><content type="html" xml:base="https://richwellman.com/2025/09/22/Prompt-Engineering-like-Einstein.html"><![CDATA[<blockquote>
  <p>“If I had an hour to fix a problem I would spend 55 minutes on forming the question.”</p>

  <p>— Often attributed to Albert Einstein (and variations to other luminaries)</p>
</blockquote>

<p>Whether Einstein actually said this or not, the principle is profound. And nowhere is it more relevant than in prompt engineering.</p>

<h2 id="the-problem-with-most-prompts">The Problem with Most Prompts</h2>

<p>Most people treat AI like a search engine. They type in a quick question, hit enter, and hope for useful results.</p>

<p>“Write me a sales email.”</p>

<p>“Analyze this data.”</p>

<p>“Create a marketing plan.”</p>

<p>The AI dutifully generates something. It’s grammatically correct. It looks professional. And it’s completely useless because the question was lazy.</p>

<p>Garbage in, garbage out—but with better grammar.</p>

<h2 id="prompt-engineering-is-problem-definition">Prompt Engineering is Problem Definition</h2>

<p>The real work of prompt engineering isn’t learning special syntax or magic words. It’s the discipline of clearly defining what you actually want.</p>

<p>This is hard. It requires you to:</p>

<ul>
  <li>Know your desired outcome</li>
  <li>Understand your constraints</li>
  <li>Define your criteria for success</li>
  <li>Provide relevant context</li>
  <li>Anticipate edge cases</li>
</ul>

<p>In other words, it forces you to think clearly about the problem before demanding a solution.</p>

<p>That’s why spending 55 minutes on the question isn’t wasted time. It’s the work.</p>

<h2 id="bad-prompt-vs-good-prompt">Bad Prompt vs. Good Prompt</h2>

<p><strong>Bad Prompt:</strong></p>
<pre><code class="language-markdown">Write a sales email.
</code></pre>

<p><strong>Good Prompt:</strong></p>
<pre><code class="language-markdown">Write a sales follow-up email for a B2B SaaS prospect who attended our webinar
on AI automation but didn't respond to our first outreach.

Constraints:
- Keep it under 150 words
- Don't mention pricing (that's for the call)
- Reference specific value from the webinar content
- Include a soft ask for 15-minute discovery call

Tone: Professional but conversational, not salesy

Context: This prospect is a VP of Operations at a 200-person manufacturing
company. They're exploring AI but don't have internal expertise. Our
differentiation is practical implementation vs. theoretical consulting.
</code></pre>

<p>Which one will give you a better result?</p>

<p>The second prompt took 5 minutes to write. It will save you 30 minutes of editing generic AI output into something actually useful.</p>

<h2 id="the-five-questions-framework">The Five Questions Framework</h2>

<p>Before you write a prompt, answer these five questions:</p>

<h3 id="1-what-is-the-specific-output-i-need">1. What is the specific output I need?</h3>
<p>Not “a blog post” but “an 800-word blog post formatted for LinkedIn with 3 actionable takeaways and a CTA to book a consultation.”</p>

<h3 id="2-who-is-the-audience">2. Who is the audience?</h3>
<p>Not “people” but “CFOs at mid-market companies who are skeptical of AI hype and need to see ROI in months, not years.”</p>

<h3 id="3-what-context-does-the-ai-need-that-i-have-in-my-head">3. What context does the AI need that I have in my head?</h3>
<p>The AI doesn’t know your industry, your company, your product, or your customer’s pain points. You have to provide that.</p>

<h3 id="4-what-constraints-or-requirements-apply">4. What constraints or requirements apply?</h3>
<p>Length limits, tone requirements, format specifications, things to avoid, compliance requirements.</p>

<h3 id="5-how-will-i-know-if-the-output-is-good">5. How will I know if the output is good?</h3>
<p>What criteria will you use to evaluate it? Define those upfront.</p>

<h2 id="examples-in-practice">Examples in Practice</h2>

<h3 id="example-1-data-analysis">Example 1: Data Analysis</h3>

<p><strong>Lazy prompt:</strong></p>
<pre><code>Analyze this sales data.
</code></pre>

<p><strong>Better prompt:</strong></p>
<pre><code>Analyze Q4 sales data to identify:
1. Which product lines underperformed vs. target
2. Whether the decline was due to volume or pricing
3. Geographic patterns in the decline
4. Correlation with sales rep tenure

Format findings as an executive summary with:
- 3 key insights (bullets, not paragraphs)
- Supporting data table
- 2 recommended actions

I need this for Thursday's board meeting, so focus on findings that
suggest concrete actions we can take in Q1.
</code></pre>

<h3 id="example-2-code-generation">Example 2: Code Generation</h3>

<p><strong>Lazy prompt:</strong></p>
<pre><code>Write a Python script to process CSV files.
</code></pre>

<p><strong>Better prompt:</strong></p>
<pre><code>Write a Python script that:
- Reads CSV files from /data/input/ directory
- Filters for rows where status = "complete"
- Calculates total revenue by product category
- Outputs summary to /data/output/summary.csv

Requirements:
- Handle missing values gracefully
- Log errors to /logs/processing.log
- Use pandas library
- Include error handling for file not found
- Add comments explaining each major step

Input CSV format: date, product_id, category, revenue, status
Output CSV format: category, total_revenue, row_count
</code></pre>

<h3 id="example-3-strategic-thinking">Example 3: Strategic Thinking</h3>

<p><strong>Lazy prompt:</strong></p>
<pre><code>Help me think through this business problem.
</code></pre>

<p><strong>Better prompt:</strong></p>
<pre><code>I need to decide whether to build our AI evaluation capability
in-house or partner with an existing vendor.

Context:
- We have 2 engineers with ML experience
- Current projects need eval framework within 2 months
- Budget: $50K for tools/services this quarter
- Long-term: expect 5-10 AI projects per year

Help me think through:
1. Build vs. buy tradeoffs specific to our situation
2. What capabilities we'd need in-house either way
3. Risks I might be overlooking
4. What decision criteria I should use

Challenge my assumptions. I'm biased toward building because
I like having control, but that might not be the right call here.
</code></pre>

<h2 id="the-roi-of-better-prompts">The ROI of Better Prompts</h2>

<p><strong>Time spent on prompt:</strong> 5 minutes
<strong>Time saved editing mediocre output:</strong> 30 minutes
<strong>Quality improvement:</strong> Significant</p>

<p>But the real value isn’t time savings. It’s forcing yourself to think clearly about what you actually need.</p>

<p>Often, when you sit down to write a detailed prompt, you realize:</p>
<ul>
  <li>You don’t actually know what good looks like</li>
  <li>You haven’t defined your constraints</li>
  <li>You’re asking the wrong question entirely</li>
  <li>You need to gather more information first</li>
</ul>

<p>That’s valuable. That’s 55 minutes well spent.</p>

<h2 id="what-good-prompt-engineering-looks-like">What Good Prompt Engineering Looks Like</h2>

<p>Good prompt engineers don’t memorize special techniques. They:</p>

<ol>
  <li><strong>Define the problem clearly</strong> before asking for solutions</li>
  <li><strong>Provide context</strong> the AI can’t infer</li>
  <li><strong>Specify constraints</strong> and success criteria</li>
  <li><strong>Iterate</strong> on prompts based on output quality</li>
  <li><strong>Build libraries</strong> of proven prompt patterns</li>
  <li><strong>Test edge cases</strong> to find where prompts break</li>
</ol>

<p>It’s less “prompt hacking” and more “clear thinking.”</p>

<h2 id="common-prompt-engineering-mistakes">Common Prompt Engineering Mistakes</h2>

<h3 id="mistake-1-assuming-the-ai-knows-your-context">Mistake 1: Assuming the AI knows your context</h3>
<p>The AI doesn’t know your business, your industry, your customers, or your goals. You have to tell it.</p>

<h3 id="mistake-2-being-vague-about-what-good-means">Mistake 2: Being vague about what “good” means</h3>
<p>If you can’t describe what good output looks like, the AI can’t produce it.</p>

<h3 id="mistake-3-not-specifying-format">Mistake 3: Not specifying format</h3>
<p>“Write a report” could mean anything from 2 paragraphs to 50 pages. Be specific.</p>

<h3 id="mistake-4-asking-for-multiple-unrelated-things">Mistake 4: Asking for multiple unrelated things</h3>
<p>One prompt, one clear output. If you need multiple things, use multiple prompts.</p>

<h3 id="mistake-5-not-iterating">Mistake 5: Not iterating</h3>
<p>First prompts rarely nail it. Refine based on what you get back.</p>

<h2 id="advanced-chain-of-thought-and-structured-prompts">Advanced: Chain of Thought and Structured Prompts</h2>

<p>Once you master basic prompt clarity, you can use advanced techniques:</p>

<p><strong>Chain of Thought:</strong></p>
<pre><code>Before answering, think through:
1. What are the key constraints?
2. What assumptions am I making?
3. What could go wrong?
Then provide your recommendation.
</code></pre>

<p><strong>Few-Shot Learning:</strong></p>
<pre><code>Here are 3 examples of good outputs:
[Example 1]
[Example 2]
[Example 3]

Now create one for this new scenario: [details]
</code></pre>

<p><strong>Role-Based Prompting:</strong></p>
<pre><code>You are a CFO evaluating AI project ROI. Analyze this proposal with
a focus on financial risk, capital requirements, and payback period.
</code></pre>

<p>But these are techniques, not fundamentals. The fundamental is: spend time on the question.</p>

<h2 id="the-meta-lesson">The Meta-Lesson</h2>

<p>Prompt engineering teaches a valuable skill that applies beyond AI: the ability to clearly articulate what you want.</p>

<p>How many meetings meander because nobody defined the desired outcome?</p>

<p>How many projects fail because requirements were vague?</p>

<p>How many emails get ignored because the ask wasn’t clear?</p>

<p>Prompt engineering is just clear thinking in written form.</p>

<p>And in an age where AI will do increasingly sophisticated tasks, your ability to clearly define the problem becomes your competitive advantage.</p>

<p>Anyone can type “write me a thing.”</p>

<p>The value is in knowing exactly what thing you need and why.</p>

<p>That’s the 55 minutes. That’s the work.</p>

<hr />

<h2 id="practical-exercise">Practical Exercise</h2>

<p>Take something you’d normally ask AI to do. Before you write the prompt, spend 5 minutes answering:</p>

<ol>
  <li>What specific output do I need?</li>
  <li>Who is this for?</li>
  <li>What context is missing?</li>
  <li>What makes output “good”?</li>
  <li>What constraints apply?</li>
</ol>

<p>Then write the prompt.</p>

<p>Compare the quality of output to what you’d get from “just ask it something quick.”</p>

<p>The difference is the ROI of thinking before prompting.</p>

<hr />

<p><strong>Need help implementing AI that actually delivers value?</strong> I help companies build AI systems with proper evaluation frameworks and business metric alignment—which starts with asking the right questions. <a href="mailto:richwellman7@gmail.com">Let’s talk</a> about making your AI projects work.</p>

<hr />

<p><em>Rich Wellman is a Solutions Architect at a major healthcare system, building AI automation on Azure. He writes about what actually works at <a href="https://richwellman.com">richwellman.com</a>.</em></p>]]></content><author><name>Rich Wellman</name></author><category term="Other" /><summary type="html"><![CDATA[“If I had an hour to fix a problem I would spend 55 minutes on forming the question.” — Often attributed to Albert Einstein (and variations to other luminaries)]]></summary></entry></feed>