Structured Outcome Follow-up Call
SkillAI & modelsLets your agent make phone calls that collect specific answers and score them against rules you set.
Use Structured Outcome Follow-up Call in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add Structured Outcome Follow-up Call and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the Structured Outcome Follow-up Call skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
About this skill
Place a goal-driven CALL-E call that collects specific structured answers, score those answers against a deterministic rubric you supply, and conditionally trigger a follow-up action, all runnable in mock mode with zero live calls or credentials.
What this skill tells your AI
The instructions your AI receives, as published by calle-ai/awesome-phone-call-agents in skills/structured-outcome-followup-call/SKILL.md and read by Ahel’s review.
What this skill does
Many phone-call workflows aren't really "have a conversation" — they're "call someone, get a small set of specific answers, decide what happens next based on those answers." This skill packages that pattern for CALL-E:
place call (goal-driven task + resultSchema)
-> CALL-E adapts the conversation to gather the answers
-> webhook returns structured answers
-> your rubric scores them deterministically
-> a follow-up action fires based on the score
It is not a specific workflow like a reminder call or an appointment booking call — it's the reusable scaffolding underneath any workflow that follows the shape above. Bring your own questions, your own rubric, and your own follow-up action; this skill handles the call lifecycle, the provider abstraction, and the safe-to-develop-without-a-live-call part.
Status
Reference implementation, mock-mode-first. scripts/mock_provider.py simulates CALL-E
completely (no network calls, no credentials) so you can read, run, and adapt this skill
before ever touching a live CALL-E account. scripts/orchestrate_example.py is a complete,
runnable, non-healthcare example (a delivery-exception follow-up call) that exercises the
whole pattern end to end using the mock provider.
A real-CALL-E adapter is intentionally not included in this first contribution — see "What's deliberately left out" below.
When to use this skill
Use this when you're building an agent that needs to:
- Ask a small number of specific questions over the phone (not an open-ended conversation)
- Turn the answers into a decision using rules you can write down and explain
- Take an automatic next step for some outcomes, without a human reviewing every call
Don't use this for open-ended conversational calls, calls where the "right" response can't be reduced to a rubric, or anything where the follow-up action needs a human judgment call before firing (see the safety checklist for where that line is).
How it works
1. Define your questions and result schema
from structured_call import CallQuestion
questions = [
CallQuestion(key="package_received", prompt="Did the package arrive at the address?"),
CallQuestion(key="condition_ok", prompt="Was the package in good condition?"),
CallQuestion(key="reschedule_needed", prompt="Does delivery need to be rescheduled?"),
]
scripts/mock_provider.py turns this list into both a natural-language task description for
CALL-E's goal-driven call model and a JSON resultSchema, the same way described in
references/result_schema_guide.md.
2. Write your rubric
A rubric is just a function: structured_answers -> (level, score, reasons). It's
intentionally not part of this skill's code — your rubric is domain-specific and you should
be able to read it top to bottom without touching the call machinery. See
assets/example_rubric.json for the delivery-exception example's rubric, expressed as data
so it's easy to adapt without writing a new scoring function from scratch.
3. Run it
python scripts/orchestrate_example.py
This runs the full pipeline against the mock provider and prints the outcome for each of three canned scenarios (no issue / minor issue / needs reschedule), so you can see the shape of the whole thing before wiring up anything real.
4. Swap in a real provider (not included yet)
Everything in scripts/mock_provider.py implements one small interface
(initiate_call, parse_webhook_event) — a real CALL-E adapter is a second implementation of
that interface, not a rewrite of anything else. This keeps today's contribution runnable and
inspectable without requiring reviewers to have CALL-E credentials to evaluate it.
What's deliberately left out (and why)
- No real CALL-E network calls. Keeping this contribution mock-only for now means anyone can clone, read, and run it in under a minute with zero setup — which is worth more to the community than a live adapter that only some contributors can verify. A real adapter is a natural, small follow-up contribution once this pattern itself has been reviewed.
- No specific domain logic (healthcare, delivery, HR, etc.) baked into the skill itself — only in the example. The skill is the scaffolding; the example is one illustration of it.
- No notification/paging integrations. The example's "follow-up action" is a printed log line, matching this repo's own guidance to keep examples safe-by-default.
Files
structured-outcome-followup-call/
├── SKILL.md
├── scripts/
│ ├── mock_provider.py # Standalone mock CALL-E client + orchestration loop (stdlib only)
│ └── orchestrate_example.py # Runnable, non-healthcare worked example
├── references/
│ ├── result_schema_guide.md # How to write a resultSchema CALL-E can reliably fill
│ └── safety_checklist.md # Consent, idempotency, phone formatting, credential & action boundaries
└── assets/
└── example_rubric.json # The delivery-exception example's scoring rubric, as data
See also
references/safety_checklist.md before adapting this to any real workflow — in particular the
note on where automatic follow-up actions should and shouldn't be allowed to fire without a
human in the loop.
Signals
- GitHub stars
- 104
- Forks
- 528
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
structured-outcome-followup-call- Source
- github.com/calle-ai/awesome-phone-call-agents
github.com/calle-ai/awesome-phone-call-agents
Related picks
Skill · wshobson
The pick for Pythonpython-pro
Skill · jeffallan
The pick for Pythonassemblyai-webhooks-events
Skill · jeremylongshore
The pick for Webhookswebhooks
Skill · nahid-sparktales
The pick for Webhooksskill-creator
Skill · anthropics
More in AI & modelstriage
Skill · mattpocock
More in AI & models