---
title: "When no one claims"
url: https://services.dev/docs/people/pool/fill
captured: [legal-fill.txt]
---
# When no one claims

URL: https://services.dev/docs/people/pool/fill

> A Task no one claims climbs a ladder, raising its fee and widening who may take it, and never past eligibility. Until someone claims it, the job waits on a claim, which is a state and not an error.

What happens to a Task no one claims?

It climbs a ladder. Each rung fires so long after the Task posted: a raise of the posted fee, then wider offers. Until someone claims it, the job waits `on: 'claim'`. That is a waiting state, not an error, and the owner console alarms while no member can reach it.

## The default ladder

A Pool that writes no `fill` gets this one:

| After | Rung | Does |
|---|---|---|
| 2h | `raise 10% 2h` | raise the fee by 10% of the posted fee |
| 4h | `widen 4h` | open the next tier down that is still eligible |
| 8h | `firms 8h` | offer it to firms |
| 12h | `staff 12h` | offer it to staff roles that hold the credential |
| at the cap | `fill_cap: '50%'` | stop raising at 50% over the posted fee, or lower when the job's margin leaves less |
| the step's clock | | cancel the job at $0 |

## The rules every ladder keeps

- **A fee is raised, never lowered.** Each raise is a share of the fee the Task posted at, and every act it buys is paid at the fee as it stands.
- **The brand funds raises,** out of its own share of the job. The default cap is the lower of 50% and what the job's margin leaves, so a brand-funded raise never loses money. `check` fails [`fill_underwater`](https://services.dev/docs/reference/check/fill_underwater.md) on a cap that could.
- **A buyer-paid role is capped by the buyer.** When a role's pay comes from the buyer, the buyer's `policy.max_rush` caps the raises, and `check` fails [`rush_uncapped`](https://services.dev/docs/reference/check/rush_uncapped.md) without it.
- **A rung never widens past eligibility.** A widen opens the next tier down that is still eligible. A rung that could offer a reserved act to someone without its credential fails [`fill_bypasses_reserved`](https://services.dev/docs/reference/check/fill_bypasses_reserved.md).
- **Passes can move it early.** Once at least `jump.min` members have read the sheet since the last rung, and more than half of them passed for one reason, that reason's rung fires now: `fee` the next raise, `scope` or `area` the next widen. A quorum passing on `timing` moves the due date a day instead, and `other` never moves it. [What a member sees](https://services.dev/docs/people/pool/disclosure.md#a-pass) captures one.
- **`fill: false` turns it off.** The job waits for a claim, and the owner console alarms.

## Two rungs, under a tight market

The legal example writes no ladder, so its Pool climbs the default one. Under a [simulated market](https://services.dev/docs/people/pool/simulate.md) seeded tight, the ladder climbs before anyone claims:

```bash
npx services.dev dev --members 12 --market tight --no-try
```

```txt title="magic values: client.email = signs@example.test"
  market              tight · 12 simulated signers in attorneys, each act labeled simulated · the fill ladder climbs before a review is claimed
```

At two hours the brand raises the fee 10%. At four the ladder widens to the next tier down, and a member there claims it at the raised fee and attests:

```txt
→ POST /matters {"service":"contract-review","contract":"lease.pdf","client":{"name":"Ada Lovelace","email":"signs@example.test"},"client_region":"US-CA","max_usd":99,"test_clock":"tc_7Hq3","key":"fill"}
```

```txt title="magic values: client.email = signs@example.test"
← job_7Hq2 · waiting · on claim · $99.00 held · advise · tsk_7Hq2

→ POST /test_clocks/tc_7Hq3/advance {"to":"2h"}
← 2026-10-25T16:02:11.000Z
→ POST /test_clocks/tc_7Hq3/advance {"to":"2h"}
← 2026-10-25T18:02:11.000Z

# the record: task.posted → task.raised → task.widened → task.claimed → attested
  14:02 · task.posted · tsk_7Hq2 · $50.00 · dispatch cascade
  16:02 · task.raised · tsk_7Hq2 · $55.00 · raise 10% 2h · funded by the brand
  18:02 · task.widened · tsk_7Hq2 · opened reviewer · widen 4h
  18:02 · task.claimed · tsk_7Hq2 · mbr_7Hq4 · simulated
  18:02 · step.committed · advise · person · bar admission · US-CA · mbr_7Hq4 · simulated
  ladder  raise 10% 2h: raised to $55.00 · widen 4h: opened reviewer · posted $50.00, now $55.00
```

The buyer pays the price they were quoted. The member is paid the raised fee, and the raise comes out of the brand's share:

```txt
→ POST /matters/job_7Hq2/accept
```

```txt title="magic values: client.email = signs@example.test"
← job_7Hq2 · accepted · flags.pdf · memo.pdf · $99.00 final
  ledger  +$99.00 · attorney's fee $55.00, sold by the attorney (rail member) · brand $44.00 · AI $1.26 · you $42.74
```

## Keys

| Key | Written | Left out | Does |
|---|---|---|---|
| `fill` | `FillRung[] \| false` | raise 10% at 2h, widen at 4h, firms at 8h, staff at 12h | The fill ladder, for a Task no one claims: each rung after so long since it posted. A raise is of the posted fee, never lowered; a widen opens the next tier down; firms and staff open to them; then the job cancels at $0 when the step's clock runs out. A rung never widens past eligibility. `false` waits, with an alarm. |
| `fill_cap` | `Pct` | the lower of 50% and what the job's margin leaves, so a brand-funded raise never loses money | Raises stop here, over the posted fee. |

## What it writes

| Event | Audience | Says |
|---|---|---|
| `task.posted` | member, owner | A role step posted a Task at its fee, fixed now and never lowered, to its dispatch: or to the one member a client's direct named. Its reach says who it can be offered to. |
| `task.unreached` | owner | A Task posted that no member reaches: eligible, but every one is outside what they declared, or no one is eligible. The owner console alarms; the ladder climbs on. |
| `task.raised` | member, owner | The fill ladder raised a Task no one claimed: a share of the posted fee, up to its cap, and who funds it. A fee is never lowered. |
| `task.widened` | member, owner | The fill ladder opened a Task no one claimed to the next tier down that is still eligible, or to staff who hold its credential. |
| `task.due_moved` | member, owner | A quorum of the members who read a Task's sheet passed on its timing: its due date moved a day. |

## Refusals

| `check` gate | Why |
|---|---|
| [`fill_bypasses_reserved`](https://services.dev/docs/reference/check/fill_bypasses_reserved.md) | A fill rung could offer a reserved act to someone who doesn't hold its credential. |
| [`rush_uncapped`](https://services.dev/docs/reference/check/rush_uncapped.md) | A role is paid from the buyer, its Pool's fill ladder raises the fee, and nothing caps what the buyer pays for it. |
| [`fill_underwater`](https://services.dev/docs/reference/check/fill_underwater.md) | The Pool's fill_cap lets the ladder raise a brand-funded fee past what the job leaves: a job filled at the cap loses money. |

---

- Up: [Pool(): your marketplace](https://services.dev/docs/people/pool.md)
- Previous: [The packet](https://services.dev/docs/people/pool/packet.md)
- Next: [Track records](https://services.dev/docs/people/pool/track.md)
