Multi-agent litigation pipeline

The barriers are the architecture.

76 specialized agents compiled to LangGraph state graphs, composed into a 7-wave DAG. Steps inside a wave run concurrently; waves are hard barriers. The diagram below is the thing I would whiteboard in an interview — architecture only, no client data.

A left-to-right pipeline of 7 waves containing 53 steps in total, drawn from 76 specialized agents. Wave 0: CASE SPINE, 1 step. A hard barrier follows before the next wave begins. Wave 1: FOUNDATIONAL RECORD, 10 concurrent steps. A hard barrier follows before the next wave begins. Wave 2: ORDER OF PROOF, 1 step. A hard barrier follows before the next wave begins. Wave 2.5: CASE THEORY, 2 concurrent steps. A hard barrier follows before the next wave begins. Wave 3: THEMES, 3 concurrent steps. A hard barrier follows before the next wave begins. Wave 4: DEEP ANALYSIS, 25 concurrent steps. A hard barrier follows before the next wave begins. Wave 5: BRIEFS & ACTION PLANS, 9 concurrent steps. A hard barrier follows before the next wave begins. Wave 6: MASTER BLUEPRINT, 2 concurrent steps. The shape is an hourglass: single-step waves gate the 25-step widest wave.

76 agents · 7 waves · barriers between every stage

76
specialized agents
7
sequential waves
25
concurrent steps at the widest wave
47/76
agents that retrieve at all

How it holds together

On the barriers

Steps inside a wave run concurrently; waves are hard barriers. Wave N starts only once every step in N−1 has finished — by success, skip, or failure — so no agent ever reads half-built upstream state.

On the hourglass

Single-step bottlenecks at Wave 0 and Wave 2 gate a 25-way fan-out at Wave 4. That makes those two steps the highest-leverage failures in the system: everything downstream inherits their output.

On what agentic means

46 of 76 agents run a bounded loop — the model authors its own queries and can decide not to search at all, then a validate node judges whether coverage is sufficient and can re-enter retrieval, capped so it terminates.

Four tiers, not one template

“Multi-agent” usually means one prompt shape repeated. These agents fall into four genuinely different shapes, and the difference is whether they retrieve at all — 29 of 76 never touch the vector store, because their evidence is upstream analysis rather than raw documents.

  • Tier APlain async function, no graphNone2 agents
  • Tier BLinear: initialize → compress → draftNever touches the vector store27 agents
  • Tier CSingle-pass retrievalModel-authored queries, no loop1 agents
  • Tier DBounded agentic loopvalidate → supplement → validate46 agents

What absorbing failures costs you

Per-step errors are swallowed so one bad agent doesn’t halt the whole chain. For a pipeline this long that is the right call — but it creates a second obligation that is easy to skip.

If you absorb failures, you owe the user an aggregate. Otherwise a run where several steps failed reports the same terminal state as a clean one, and “completed” quietly stops meaning “complete.” The hourglass sharpens it: because nothing halts, a failure at a single-step wave produces 25 downstream steps running against missing input rather than an early stop.

Naming that is more useful than claiming the system is clean. It is the kind of thing I would rather discuss in an interview than have discovered in one.

This pipeline is one of two NDA projects. Read the full project breakdown →