Pool health
Whether your Pool fills, and whether it pays. Time to claim, who was eligible and when no one was, how much of the declared time is used, what members earn, how long pay takes to reach their bank, and who left, for each role and region, with an alarm and the control that answers each one.
Pool health answers one question: does work reach a qualified person fast enough, and does their pay reach them? A Pool is a market, so its health is measured as a market's is, from the record of every Task and every payout.
| Measure | What it counts | Alarm, pool.alarm with |
|---|---|---|
| fill | Tasks posted and claimed, p50 and p90 time to claim, each rung the fill ladder climbed, and Tasks no one reached | claim_slow, past Pool.health.claim_p90; unreached, on the first |
| eligible | minutes with no eligible member, by role and region, and why: away, at their limit, conflicted or out of credential | no_eligible |
| load | claimed hours against the hours members declared, and standby committed | overloaded, past 90% for a week |
| earnings | pay per active member per week, p50, beside retainers | none: it reads |
| payouts | act to funds in the member's bank, p50 and p90, and payouts returned | payout_late, past Pool.health.payout_p90 |
| churn | members who left, and whether each named a successor on their subjects | none: it reads |
| cover | coverage in force on every act, and claims against it | cover_lapsing, 30 days out |
apis.tax's practitioners, the week before the filing date:
npx services.dev pools health practitioners --since 7d --livepractitioners · gigs.tax · live · 2027-04-05 → 2027-04-11 · 48 members, 41 active, 7 away
fill 612 reviews · 99.5% claimed · p50 24m, p90 2h50m to claim · 58 raised, 3 widened · 3 unreached
eligible no eligible signer for the US-NJ leg for 3h 10m on Tuesday: both New Jersey CPAs away · every other role and leg covered
load 87% of declared hours · 22 members on spring standby, 440 hours committed this week
earnings $1,180.00 a week per active member, p50 · $8,800.00 in retainers this week
payouts same-day, two days after each act · act to funds in the member's bank: p50 2d 9h, p90 3d 2h · 0 returned
churn 1 member left · named a successor on her 6 subjects of record
cover $500,000 an act · 0 claims · every act's tail open to its assessment dateThe same numbers over the API, for your own dashboards or your agent:
curl https://apis.tax/pools/practitioners/health?since=7d -H "authorization: Bearer $OWNER"{
"object": "pool_health",
"pool": "practitioners",
"window": { "from": "2027-04-05", "to": "2027-04-11" },
"fill": { "tasks": 612, "claimed": 0.995, "claim_p50": "24m", "claim_p90": "2h50m", "raised": 58, "widened": 3, "unreached": 3 },
"eligible": [{ "role": "signer", "leg": "US-NJ", "none_for": "3h10m", "why": "every eligible member away" }],
"load": { "utilization": 0.87, "standby": { "members": 22, "hours": 440 } },
"earnings": { "weekly_p50_usd": 1180, "retainers_usd": 8800 },
"payouts": { "schedule": "same-day", "to_bank_p50": "2d9h", "to_bank_p90": "3d2h", "returned": 0 },
"churn": { "left": 1, "successors_named": 1 },
"alarms": ["pool.alarm:no_eligible:signer:US-NJ"]
}The one alarm comes with the moves that answer it. None of them reaches into a member's pay or rank:
open https://apis.tax/console/pool alarm pool.alarm · no eligible signer for the US-NJ leg, 3h 10m on Tuesday · 9 New Jersey legs waited, 0 dates at risk
options offer New Jersey CPAs a standby seat · raise the leg's fee a rung sooner · invite from gigs.tax's demand board| Move | Does |
|---|---|
| offer a standby seat | committed hours for a dated season, paid on top of act pay: the tax season |
| raise a rung sooner | the ladder's raise reaches the Task earlier, from your line |
| invite from the door | posts the open role and region to the door's public demand board |
| widen the region | only where the Rules row allows it: where |
respond: { 'pool.alarm:no_eligible': { raise: 'sooner' } } makes the second move the moment the alarm fires, and Pool.health sets when each alarm fires.
Members see their own earnings, payouts and track record in the delivery portal, never the Pool's measures. A door with public: true publishes the part a professional deciding to join would want: open Tasks by role and region, the fee range and the median time to claim.
Pool health is on Launch, with your first Pool. A Pool you import reports its health to you for the Tasks it fills for you; its operator reads the rest.
| Call (CLI) | API | Event | On the console | Plan |
|---|---|---|---|---|
pools health <pool> --since 7d | GET /pools/:name/health | pool.alarm | /console/pool | Launch |
pools standby <pool> --role <role> --in <region> --season <from>..<to> | POST /owner/pools/:name/standby | standby.offered | /console/pool | Team |
pools raise <pool> --role <role> --in <region> --sooner | POST /owner/pools/:name/raise | task.raised | /console/pool | Launch |
pools invite <pool> --role <role> --in <region> | POST /owner/pools/:name/invites | pool.invited | /console/pool | Team |
pools widen <pool> --role <role> --to <region> | POST /owner/pools/:name/widen | pool.widened | /console/pool | Launch |