Inspiration

Permit portals solve the normal case. The costly cases are exceptions: a municipal record is stale, another communication conflicts with it, or the next procedural step is unclear. A human then calls the office, repeats the permit identifier, writes down status and missing-item notes, and still has to decide whether the official record actually changed.

What it does

PermitDiff treats CALL-E as an exception resolver, not a polling mechanism. A deterministic gate first checks the frozen portal snapshot. Fresh + no conflict means no call. Only staleness or an explicit discrepancy makes one authorized call eligible. CALL-E asks only for bounded facts tied to the exact permit ID: office-reported status, known missing items, next procedural step, and reported inspection readiness.

The returned result is accepted only when it is bound to the exact call ID, destination, jurisdiction, permit ID, snapshot SHA-256, confidence floor, and grounded recipient-side transcript quote. Agreement becomes verified_match. A grounded difference becomes discrepancy_detected with requires_official_record_confirmation=true. A phone answer never becomes permit approval and never rewrites the official municipal record.

How we built it

Python with the published CALL-E SDK on the real execution path, deterministic eligibility logic, strict structured-result schema, exact evidence binding, SQLite intent reservation before dispatch, destination allowlisting, applicant-side authorization gates, and fail-closed handling for wrong permit IDs, voicemail/refusal, low confidence, incomplete schema, metadata mismatch, and ungrounded quotes. Ambiguous provider outcomes become outcome_unknown and block blind redial.

The public judge console demonstrates three states: Fresh record -> no call, Stale + match -> verified_match, and Stale + discrepancy -> discrepancy_detected.

Challenges

The hardest part was not making a phone call; it was preserving authority and idempotency around a consequential call. A timeout does not prove nobody's phone rang, and a staff answer does not become legal or administrative truth. That forced durable reservation before dispatch, strict evidence provenance, and explicit official-confirmation requirements.

Accomplishments

PermitDiff was accepted into CALL-E's official Awesome Phone Call Agents repository through PR #199. The public demo is live, the deterministic reviewer path is complete, and the contribution is structured so a real pilot can measure calls avoided, calls placed, discrepancies surfaced, operator minutes displaced, and duplicate-call rate without inventing impact claims.

What we learned

The most valuable voice-agent workflow can be the call you correctly refuse to make. Voice automation gets much safer when the system defines which facts a call may establish, binds evidence to an exact prior state, and keeps downstream authority explicit.

What's next

Run authorized applicant-side pilots, measure exception-handling time and no-call savings, add municipality-specific adapters, and keep every discrepancy routed back to the official record or authorized human process.

Built With

  • ai-agents
  • api
  • call-e
  • govtech
  • human-in-the-loop
  • python
  • sqlite
  • voice-ai
  • workflow-automation
Share this project:

Updates

Submission history