When a single prompt grows long and unreliable, the standard advice is to break it into a pipeline of smaller calls. That advice is sound, but it hides the hard part: *where* you cut. Poorly placed seams give you more latency, more cost, and a new class of bugs where stages disagree about what was passed between them, without any gain in quality.

Here is a way to decide, based on three questions you can ask about any candidate boundary.

Can the output of this stage be checked?

The strongest reason to cut is that the intermediate result can be verified by something other than the next model call. If stage one extracts a list of dates and amounts from a document, ordinary code can confirm that each date parses and each amount is a number, and you can compare the count against a simple regex baseline. A seam with a cheap check on it turns a vague "the answer seems off" into "stage one returned nothing for page three."

If you cannot imagine a check at a boundary, even a rough one, that is a warning sign. You are paying the cost of a split without gaining any visibility.

Does the kind of work change?

Prompts degrade when they ask the model to do unlike things at once, such as extracting facts, judging them, and then writing prose in a particular voice. Each has different failure modes and wants different instructions, examples, and sometimes a different model size. Cutting where the *skill* changes lets each stage have a short, focused prompt and its own eval set.

By contrast, do not cut inside a single coherent judgment. Splitting "decide whether this is a refund request and decide whether it is eligible" into two calls may lose context that makes the second decision easy.

Does the cost or latency profile change?

Some stages are cheap and high-volume (classifying every incoming message), others expensive and rare (drafting a long reply for the five percent that need it). A boundary after the cheap stage lets you exit early for most inputs and send only the hard ones onward.

Design the interface like an API

Once you have chosen seams, treat what crosses them as a contract:

  • Use structured output with a schema, not free prose, so the next stage does not have to re-interpret it.
  • Pass along what the downstream stage needs and nothing more, but include provenance, such as which source passage a claim came from, so errors can be traced back.
  • Version the schema. A change in stage one's output format is a breaking change for stage two.

The takeaway

Start with the single prompt and only cut when you can name the reason: a check you want, a skill that differs, or a cost you can avoid. Then write an eval for each stage in isolation *and* one for the whole pipeline. If the end-to-end score does not beat the single prompt on the same test set, the split was complexity without benefit, and merging the stages back is a perfectly good outcome.