Priority Call Waterfall
SkillAI & modelsFill one open opportunity by calling a priority-ordered candidate list with CALL-E, one candidate at a time, until someone accepts, waitlist backfill, shift coverage, on-call escalation, and service dispatch workflows.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the Priority Call Waterfall skill
What this skill tells your AI
The instructions your AI receives, as published by calle-ai/awesome-phone-call-agents in skills/priority-call-waterfall/SKILL.md and read by ahel’s review.
Use this skill when the user has one concrete opportunity (an open appointment slot, an uncovered shift, an unassigned job, an unacknowledged incident) and a priority-ordered list of candidates, and wants each candidate called in order until one accepts.
priority-call-waterfall is a calling-pattern skill. It does not add a CALL-E backend
API, a queue service, or a daemon. It turns one authorized "fill this opening" request
into a strictly sequential series of one-off CALL-E calls with a hard stop at the first
acceptance.
When To Use
Use this skill for:
- backfilling a freed appointment slot from a waitlist (a cancellation or no-show)
- finding coverage for an open shift from a ranked list of staff
- dispatching one job to the first available provider on a call-down list
- escalating an incident through an on-call chain until someone acknowledges
- any "call these people in order until one says yes" request with a single opening
When Not To Use
Do not use this skill to:
- call multiple candidates in parallel or race candidates against each other
- continue calling after a candidate has accepted
- offer the same opening to more than one person at a time
- broadcast announcements, promotions, or anything that is not a real single opening
- build a recurring schedule (pair with a scheduler skill instead; each waterfall run is a one-shot workflow)
- guess phone numbers, priorities, consent, or the opening's details
- call third-party numbers unless the user states the candidates expect these calls (an existing waitlist, staff roster, or on-call rotation is that expectation)
Core Workflow
- Confirm the user explicitly wants the opening filled by phone now.
- Collect the waterfall fields:
- the opening: what it is, when it is, and any details a candidate needs to decide
- the candidate list: name, E.164 phone number, and priority (lower calls first)
- an optional per-run call cap (default: call every listed candidate at most once)
- an optional deadline after which the waterfall must stop even without an acceptance
- Ask for any missing required field. Do not infer phone numbers or priorities.
- Validate the input with
scripts/validate-waterfall-input.mjswhen a structured payload is available. Reject duplicate phone numbers and duplicate priorities. - Show the user a masked preview: the opening, the calling order, and the cap. Get explicit confirmation before the first call.
- Call candidates strictly one at a time, in priority order:
- build a goal that names the business or requester, the candidate, the opening,
and asks for a clear yes or no (see
references/goal-and-result.md) - request a structured result with a required
acceptedfield (yesorno) - place exactly one CALL-E call and wait for its terminal status
- treat an ambiguous provider outcome (voicemail, no answer, unclear answer, timeout, or failed call) as a halt condition; it must not automatically start another call or conflicting side effect.
- only a clear 'no' counts as a decline that allows moving to the next candidate.
- build a goal that names the business or requester, the candidate, the opening,
and asks for a clear yes or no (see
- Stop conditions, checked after every call:
- a candidate accepted → record who, stop immediately, never call the rest
- the list, cap, or deadline is exhausted → stop and report the opening unfilled
- Report the outcome using the Output Format below.
Use this shape per candidate:
build goal -> one call -> read structured result -> accept? stop : next candidate
Required Fields
For each run, require:
opening— a short human-readable description of the single thing being offeredcandidates[]— each withname,phone(E.164), andpriority(unique integer; lower calls first)
Optional:
maxCalls— cap the number of candidates called this rundeadline— an instant after which no further calls may startlanguage/region— passed through to CALL-E when the user provides them
Phone numbers must be E.164. Mask phone numbers in user-facing summaries and reports.
Safety Rules
Read references/safety.md for the full safety contract.
Always follow these rules:
- Every call is a real-world side effect; the user confirms the run before call one.
- One opening, one acceptance: after a yes, the waterfall is over. Calling candidate N+1 after candidate N accepted is the one unforgivable failure of this pattern.
- Strictly sequential: never dial two candidates concurrently.
- At most one call per candidate per run. No retries within a run.
- An ambiguous provider outcome must halt the live run for reconciliation; it must not automatically start another call or conflicting side effect. Only a clear yes in the structured result books the opening.
- Do not expose credentials, and mask every phone number in output.
- Treat medical, legal, financial, and emergency openings as logistics only: offer the time and the service name, give no advice on the call.
Output Format
After the run, report:
- the opening, restated
- per candidate attempted, in order: masked phone, terminal call status, and the
structured
acceptedvalue (or the failure reason treated as a decline) - the outcome:
filled by <name>orunfilledwith why the run stopped (list exhausted, cap reached, or deadline passed) - candidates never called because the waterfall stopped early
- how the user can re-run with the remaining candidates if the opening is still open
Never report the opening as filled unless exactly one candidate's structured result contains a clear acceptance.
Reference Implementation
A full runnable implementation of this pattern (with a waitlist data model, a
dashboard, and tests that exercise the waterfall against a fake CALL-E server) lives
in this repository at apps/typescript/ai-front-desk/ — see
src/flows/backfill/backfillFlow.ts for the waterfall loop itself.
Signals
- GitHub stars
- 104
- Forks
- 527
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
priority-call-waterfall- Source
- github.com/calle-ai/awesome-phone-call-agents