Ledger Collections Call

SkillAI & models

Lets your agent place an outbound debt-collection phone call using details from an overdue invoice record.

Use Ledger Collections Call in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add Ledger Collections Call and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the Ledger Collections Call skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Ledger Collections CallStart free
About this skill

HITL outbound collections phone call from overdue JSON (E.164, integer minor units, region); CALL-E create plus poll; structured promise out; dry-run default; never posts to unsupported regions including YE.

What this skill tells your AI

The instructions your AI receives, as published by calle-ai/awesome-phone-call-agents in skills/ledger-collections-call/SKILL.md and read by Ahel’s review.

Use this skill when a merchant (or an agent acting for one) has explicit authority to place one disclosed phone call about an overdue balance, and needs a structured promise back.

The directory name does not mean a money write. A CALL-E promised result is display-only. Payment stays a later human confirm (or another tool). Read references/overlap.md before treating this as a collections product: it is not kept.

This skill does not book a payment, post a ledger row, or run a campaign. A human reviews the result before any cash movement.

When To Use

  • One overdue contact the operator already authorized, with E.164, integer amountMinor, currency, locale, and region in JSON
  • Preview the CALL-E task and recipient result schema without credentials
  • Refuse Yemen and other unsupported regions before POST /v1/calls
  • Hand a structured promise to a human, a display-only card, or kept capture — not to a cashier

When Not To Use

  • Consumer FDCPA / statutory debt-collection engines
  • Collecting cards, CVV, bank passwords, or OTPs (PCI)
  • Automatic retry when the outcome is unknown, timeout, voicemail, or no_answer
  • Writing a ledger, invoice, or kept financial record from the structured result
  • CSV campaigns, call budgets, bank-feed reconcile (that is kept)
  • First-contact sales, scraped lists, or numbers the user did not authorize
  • Hidden schedulers, webhooks, or create_and_wait on the HTTP request
  • Inferring region from a leading +1

Required Inputs

JSON object:

FieldTypeNotes
contactIdUUID stringStable local id; used in the idempotency material
displayNamestringSpoken name
phoneE164stringE.164, authorized
amountMinorintegerOutstanding balance, smallest currency unit. No floats
currencystringISO code, e.g. USD
localeen or arTask language. Documented in English; do not embed other scripts in this folder
regionISO 3166-1 alpha-2Stated by the operator. Not inferred from the number
doNotCallbooleanIf true, refuse

Optional: storeName (default Store), promisedDate (YYYY-MM-DD or empty; authorization material only).

Preflight

  1. Confirm the user authorized this one collections call.
  2. Confirm E.164 and that doNotCall is false.
  3. Confirm amountMinor is a JSON integer (no remainder).
  4. Confirm region is supported and is not YE. See references/regions.md.
  5. Run scripts/preview.py before any CALL-E plan.

Dry-Run Preview

No CALL-E credentials. No network. scripts/preview.py never POSTs.

If the skill lives under docs/skills/ (originating product repo):

python3 docs/skills/ledger-collections-call/scripts/preview.py \
  --request docs/skills/ledger-collections-call/assets/sample-overdue.json

If the skill lives under skills/ (this awesome-list layout):

python3 skills/ledger-collections-call/scripts/preview.py \
  --request skills/ledger-collections-call/assets/sample-overdue.json

Preview prints a masked phone, the CALL-E task, the result schema, and an idempotency key. It exits 0 with status: not_called. --live is rejected: live execute is not implemented in this skill.

CALL-E Goal Template

Device-owned English (locale en). Shame language and fake legal threats are forbidden. Disclose that the caller is the store's assistant. Ask for a promise date and amount. Do not collect card numbers.

Call {displayName} on behalf of {storeName}. Identify yourself as the store's assistant, not a government collector. Their outstanding balance is {amountLine}. Ask whether they can promise a payment date and amount. Be brief, polite, and stop if they refuse. Return structured fields only: promised / refused / voicemail / no_answer / wrong_number / callback_requested, integer minor-unit amount if they state one, ISO date if they state one.

amountLine is formatted from integer amountMinor plus currency (for example USD 15.00 for 1500 USD). Do not re-convert through floating point.

For locale ar, use the same constraints in Arabic at execute time. This folder stays English-only.

Structured Result

See references/result-schema.md. Required outcome enum: promised, refused, voicemail, no_answer, wrong_number, callback_requested. Optional integer promised_amount_minor, promised_currency, promised_date (YYYY-MM-DD).

A promised result is not a payment. voicemail, no_answer, and unknown all need a human. Do not redial unknown.

Live Planning

preview.py does not dial. Live requires a host that already has CALL-E authentication, a human confirm, and a second explicit gate (for example --live plus --confirm PLACE-REAL-CALLS on that host). This skill documents the gates; it does not implement POST /v1/calls.

If you use the CALL-E CLI after review:

calle call plan --to-phone <E164_PHONE> --goal "<reviewed goal text>" --timezone America/New_York --language English --region US

Do not run calle call start unless the user separately confirms. Do not post unsupported regions including YE.

Cancellation And Idempotency

Idempotency key (hex SHA-256), not uuid4:

sha256("{contactId}|{amountMinor}|{currency}|{promisedDate}|{utcDate}")

utcDate is YYYY-MM-DD in UTC for the authorization day. promisedDate may be empty.

If the user cancels before dial, do not execute. If a result is ambiguous, route to a human rather than calling again with a new key.

Safety Notes

Read references/safety.md, references/examples.md, references/regions.md, references/result-schema.md, and references/overlap.md before live planning.

Signals

GitHub stars
104
Forks
528
Last commit
Sep 2026

Ahel review

  • K6low
    bundled executables the agent is told to run

Automated review, not a security audit. Ruleset v1+k2.

Advanced
Item type
skill
Key
ledger-collections-call
Source
github.com/calle-ai/awesome-phone-call-agents