When the second AI just copies the first

2026 · AI inside business systems · OpenAI API, Claude, FileMaker

The plan was sensible. One AI call reads a photo of a document and pulls out the important values. A second, more careful call takes one field that kept causing trouble, a printed reference code, and reads it again closely. Two passes, better accuracy.

Then I looked at the results. The second call wasn’t reading the image. It was reading the first call’s answer and agreeing with it. As I put it at the time: “this secondary call just used that value and did not double check against the image scan.”

Anchoring

That’s called anchoring, and models do it the way people do. Give someone an answer before you ask the question, and their answer drifts toward yours. I had given the second call the first call’s result as context, and it took the easy road.

Rewording the prompt didn’t fix it. Restructuring did. The second call now ranks its sources explicitly:

  1. The image itself is the authority.
  2. Text pulled from the PDF breaks ties.
  3. The earlier AI answer is a hint at most, never evidence.

The count it never did

The same project turned up a second shortcut. Valid codes had a fixed length, and the prompt asked the model to flag any that didn’t. It reported lengths confidently, and some of them were wrong. It was producing what a correct answer would probably look like, without counting anything.

The fix was to take the job away from it. The model reads the code, and ordinary code counts the characters and sets the flag. Anything that can be computed gets computed. The model does the part only a model can do: reading messy images.

Prompts as maintained software

By mid-2026 the prompts in that system looked less like instructions and more like source code:

  • Versions. The main prompt went through seven of them, each one tied to a specific problem found in testing.
  • Shared rules. A block of house rules is injected into every prompt, so a fix made once applies everywhere.
  • A changelog. Every change records which quality flag prompted it.
  • A checker that gets checked. A separate prompt scans the output for problems, and that prompt gets reviewed too.

The output contracts tightened along the way. One prompt moved from nested JSON to a flat structure because FileMaker reads it more easily. Two calls were merged into one. Empty values became the word “none” instead of nulls, and the output was minified onto a single line. Another prompt, for estimating documents, ends with a line I now use almost everywhere: “Return ONLY the raw JSON string.”

I also learned when to say less. On one prompt I had planned to include a complete list of product names and every variant of them. I stopped myself: “I DONT THINK WE NEED TO INCLUDE THIS ENTIRE LIST OF NAME VARIANTS.” A few canonical names plus clear rules for messy variations worked better than a list nobody could maintain.

People at the important step

None of this runs unattended. In the support systems I’ve worked on, AI summaries help an agent decide; they don’t decide. Knowledge articles drafted by AI from resolved cases are reviewed by people before anyone treats them as true. In my own small apps, the code validates every result, and the model’s text is never trusted on its own.

The useful unit turned out to be an AI step inside a workflow that knows what to do when the step gets it wrong. An AI answer on its own was never enough.

What stuck

  • Never hand a checker the answer it’s checking. If you do, it becomes a rubber stamp.
  • Compute what can be computed. Counting, totals, lengths and dates belong in code.
  • Fix structure, not wording. When a model takes a shortcut, change what it’s given and in what order. Politer instructions won’t help.
  • Version your prompts like code, with a reason for every change.

If you’re building AI into a system today

  • Run every prompt on a pile of real examples before you trust it, and look at the failures one by one.
  • Write down which source wins when the image, the text and the earlier answer disagree.
  • Put the output contract last in the prompt: format, fields, empty values, and “nothing else”.
  • Decide where a person reviews, and build that step before you build the automation.

Related: The function that doesn’t exist · Same question, opposite answers · When to kill an ML project

Back to AI Journey Chronicles