Built for the CALL-E Hackathon · Devpost

CounterCall

CALL-E phones the government counter, survives the hold, and tells you what to bring.

nobody has said this yet
a clerk said it, on the record
Jakarta · Indonesia
The one decision

It refuses
to guess.

A checklist that is 70 % right is more dangerous than none, because it gets acted on.

Payment
Fee
Appointment
The errand

Sent home for
a photocopy.

The page says bring KTP, KK, paspor lama. Not that the family card must be original, or that you must book first.

Imigrasi Jakarta Selatan
→ one morning, lost
The solution

One call.
Seven typed fields.

countercall — call.mjs
$ call.mjs --office imigrasi-jaksel \
    --procedure "perpanjangan paspor" --live

  originals_or_copies   originals
  appointment_required  yes
  clerk_certainty       unsure

Seven typed fields a program can act on — not a transcript to interpret.

output pending the first real call
Architecture

Two refusals before the phone rings

preflight E.164 + source goals.get drift guard goals.run idempotency key waitForResult result or error the card validated REFUSE never infer a number REFUSE schema drifted no_answer · declined no partial checklist
Verification

The whole input
space, not samples.

11,520
contract cases verified
233
tests, no credentials
8 / 8
CALL-E error codes routed
1
real defect the sweep found
p50 / p95 pending the benchmark
The frozen frame

It could have
guessed.

The clerk did not know the fee. So we do not say.

An unknown fee costs one question. An invented one costs the trip.

Kantor Imigrasi Jakarta Selatan
perpanjangan paspor
schema illustration
not a call recording
  • KTP asli
  • Kartu Keluarga asli
  • paspor lama
DocumentsOriginals
Fee
PaymentCash
AppointmentBook first
"Untuk biayanya saya kurang tahu, nanti ditanyakan di loket saja."
The constraint

The callee never
opted in.

Consent

It says what it is, then asks. "No" ends it.

Once a day

One idempotency key per office, per day.

Never infer

A human read it off the office's own page.

The contribution

A procedure library,
not an app.

skills/countercall/
SKILL.md              agent contract
references/safety.md  consent, rate limits
scripts/contract.mjs  pinned result schema
data/offices.json     sourced numbers

Goals are owner-scoped, so we ship the spec and the client — publish your own copy.

office count pending
The ask

Add one office
in your city.

Add one sourced number. The counter you dread becomes a call you never make.

CALLE-AI/awesome-phone-call-agents

QR code
pending
01 / 10
v0.0.0-dev
Speaker notes