Pool health

The running jobjob_7Hq2 · accepted · document.fr-CA.pdf · $49.00 final

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.

MeasureWhat it countsAlarm, pool.alarm with
fillTasks posted and claimed, p50 and p90 time to claim, each rung the fill ladder climbed, and Tasks no one reachedclaim_slow, past Pool.health.claim_p90; unreached, on the first
eligibleminutes with no eligible member, by role and region, and why: away, at their limit, conflicted or out of credentialno_eligible
loadclaimed hours against the hours members declared, and standby committedoverloaded, past 90% for a week
earningspay per active member per week, p50, beside retainersnone: it reads
payoutsact to funds in the member's bank, p50 and p90, and payouts returnedpayout_late, past Pool.health.payout_p90
churnmembers who left, and whether each named a successor on their subjectsnone: it reads
covercoverage in force on every act, and claims against itcover_lapsing, 30 days out

apis.tax's practitioners, the week before the filing date:

Run
npx services.dev pools health practitioners --since 7d --live
magic values: none
practitioners · 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 date

The same numbers over the API, for your own dashboards or your agent:

Run
curl https://apis.tax/pools/practitioners/health?since=7d -H "authorization: Bearer $OWNER"
200 · magic values: none
{
  "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:

Run
open https://apis.tax/console/pool
magic values: none
  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
MoveDoes
offer a standby seatcommitted hours for a dated season, paid on top of act pay: the tax season
raise a rung soonerthe ladder's raise reaches the Task earlier, from your line
invite from the doorposts the open role and region to the door's public demand board
widen the regiononly 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)APIEventOn the consolePlan
pools health <pool> --since 7dGET /pools/:name/healthpool.alarm/console/poolLaunch
pools standby <pool> --role <role> --in <region> --season <from>..<to>POST /owner/pools/:name/standbystandby.offered/console/poolTeam
pools raise <pool> --role <role> --in <region> --soonerPOST /owner/pools/:name/raisetask.raised/console/poolLaunch
pools invite <pool> --role <role> --in <region>POST /owner/pools/:name/invitespool.invited/console/poolTeam
pools widen <pool> --role <role> --to <region>POST /owner/pools/:name/widenpool.widened/console/poolLaunch