-
-
Step 1: pick a topic. The topic plans the call.
-
Step 2: leave a number. The page states which languages that number supports.
-
Real lawsuit intake call (Sept 8, 2026), both voices recorded on the client's phone.
-
No servers: Cloudflare Pages + Functions + KV and the CALL-E API.
-
Staff console: type-specific fields, other parties for the conflict check, CALL-E confidence, transcript, reminder call.
-
One limit, stated plainly: Spanish is not carried on US lines today. Tested three ways.
Inspiration
Small law firms lose clients in the intake form. Older clients, people on a phone at work, anyone reading in a second language — they don't finish it. Nota Intake makes the form three steps and lets the phone do the intake.
What it does
The client picks a topic (real estate, will, trust, lawsuit, or something else), leaves a name and number, and CALL-E calls them back within a minute. The topic plans the call: each type has its own questions and its own recipient_result_schema on top of the common intake (summary, other parties for the conflict check, urgency, deadline, best time, email confirmed letter by letter, consent). A lawsuit intake learns which side they're on, whether court papers arrived and the deadline printed on them; a will intake learns about family, an existing will and an executor; real estate gets the property, their role and a closing date; a trust gets its purpose and beneficiaries by relationship only. The assistant states on every call that this is intake, not legal advice, and that no attorney-client relationship exists until an attorney confirms in writing. It never quotes fees, never asks about health or asset values.
A token-gated staff console lets the firm call a client from the desk (walk-ins, voicemails), watch the call land, filter records by topic and status, search by name or other party, and place a consultation reminder call from a date picker — the reminder's outcome (confirmed, can't make it, reschedule request) syncs back onto the record.
How we built it
Everything runs on Cloudflare Pages, Functions and KV — no framework, no build step. Every intake and reminder is a real POST /v1/calls with a task and result schema planned per matter type, a webhook_url, and an Idempotency-Key; GET /v1/calls/{id} supplies the authoritative state, transcript turns, confidence and evidence. Scripts exist in English, Spanish and Bahasa Indonesia.
Tested with real calls
On a US number: English and Bahasa Indonesia interviews completed. The demo video's call scene is a real lawsuit intake recorded on the client's phone (CALL-E returns transcript turns, not audio). When the form said "received court papers" and the client said no lawsuit existed yet, the assistant corrected course and recorded him as the plaintiff-to-be — exactly what the per-type schema is for.
Challenges and what we learned
Spanish is not carried on US (+1) lines today. We tested it three ways — REST locale: "es", Spanish task text with locale: "en-US", and MCP plan_call --language Spanish — and all three declined before dialing, while Bahasa (locale: "id") completed a real call on the same number. The README documents this rather than hiding it; when CALL-E enables Spanish for US, the change is one row in a JSON file. Language is also locked per call: the bot offered to switch to English mid-call and could not.
What's next
Spanish (and French) interviews the day CALL-E carries them on US lines; SMS confirmations once the firm's A2P registration clears; calendar booking from the console.
Live: https://nota-intake.pages.dev · Repo: https://github.com/banksythequantLab/nota-intake · PR: https://github.com/CALLE-AI/awesome-phone-call-agents/pull/393 · CALL-E account: dj@soltis.info
Built With
- call-e
- cloudflare
- cloudflare-workers
- html5
- javascript

Log in or sign up for Devpost to join the conversation.