> ## Documentation Index
> Fetch the complete documentation index at: https://obversa.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# What Is an Agent Pipeline With a Review and a Person?

> Steps in order, a review that runs the step that owns the fix again, and a person who decides at the end.

Write the smallest team shape that holds up in a page: steps in order, a
review that fails a step and runs the step that owns the fix again with the
findings, and a person who decides at the end. That is an agent pipeline
with a review and a person. Without the review it's a queue; without the person nobody owns what
ships. The neighbour term is [a software factory](/docs/glossary/software-factory),
the same shape at a larger scope.

## In Obversa

`pipeline()` runs the steps in order, and the review is a step in it:

```ts examples/feature-team.ts (excerpt) {7-8,10} theme={null}
export const featureDelivery = pipeline(
  'feature-delivery',
  [
    { name: 'analyse', job: analyse },
    { name: 'implement', job: implement },
    { name: 'test', job: testStage },
    { name: 'review', job: review, acceptsKickbackTo: ['implement'] },
    { name: 'approve', job: approve },
  ],
  { maxKickbacks: 2 },
);
```

`review` is a panel of three that passes on two and names `implement` as
its target, so a failing review runs the implementer again with the
findings. The `review` stage declares that target in `acceptsKickbackTo`. `approve` is a person's question. `maxKickbacks` caps how often
the review can do that; when the budget runs out, the run fails with the
last findings instead of looping. The excerpt comes from a scripted test
of the workflow shape. [Feature delivery](/docs/workflows/feature-team) uses
Claude, Codex and Gemini for the work.

## The three parts

| Part | In the file |
| - | - |
| Steps in order | `pipeline` with five named steps. |
| A review that runs a step again | `reviewPanel` with three reviewers, `pass: 2`, `target: 'implement'`. |
| A person at the end | `approval` with a question. The test supplies an answer; in a real team the answer arrives through the callbacks client, and the run pauses until it does. |

## Next steps

* [Feature delivery](/docs/workflows/feature-team): the same shape on real
  engines.
* [A person decides](/docs/patterns/approval): how the answer comes back to a
  paused run.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.