Local Atlas
Ask once. Share the answer. A map can tell you where a café is. A phone call can tell you whether there’s parking. Local Atlas turns that answer into a dated FAQ for the next visitor.
Author-hosted app. Sign in to ask a place.
Prefer to start here? Explore the example below.
A question worth sharing.
Local Atlas checks for a reusable answer first. When one is missing, CALL-E handles the phone conversation; the app checks and stores the result.
Illustrative example with a fictional café and answer.
“Is there parking on site?”
Yes. There’s a customer lot behind the café.
“Yes, we have a small customer lot out back.”
Example date: 22 Oct 2026
While the FAQ is valid, the same question reuses it without another call.
Ask one factual question
Choose a place with a listed phone number, then ask: “Is there parking on site?” For a real call, review the number and question before confirming.
Save a dated answer
The assistant identifies itself as AI, asks the question and lets the staff member finish. The app saves a clear answer with their words and a collection date.
Reuse the answer
Someone opening the same place can read the shared FAQ. Asking the same question while its result is still valid reuses that result without another call.
Make it your own.
Start with one question, a short evidence quote and an explicit “unknown” outcome. Then decide how long that answer should remain useful.
Download the starter pack (.md)Includes an adapted prompt, result schema, example data and local setup. Based on the author’s MIT-licensed implementation.
Answered FAQs default to 90 days; other outcomes to one day. Choose a shorter expiry for time-sensitive questions, since the app does not adjust it by question type.
A single-question prompt
Call {{business_name}} at {{phone_number}}.
Ask one question: “Is there parking on site?”
Let the staff member finish their greeting. Ask if it is a good moment for one quick question.
Before asking, say that you are an AI assistant calling for someone planning a visit.
If it is a bad time or they decline, thank them and end the call.
Ask only the stated question. If needed, ask at most one short clarification.
Never guess. Let them finish; then thank them and end the call.
Do not book, order, negotiate or collect personal or payment details.
If you reach voicemail or an automated menu, end without leaving a message.
Result schema
Keep the status separate from the answer. An unanswered question must stay unknown. The evidence quote must come from the staff member’s transcript.
{
"type": "object",
"additionalProperties": false,
"required": ["answer_status", "answer", "evidence_quote"],
"properties": {
"answer_status": {
"type": "string",
"enum": ["answered", "unclear", "refused", "unreachable", "unknown"]
},
"answer": {
"type": "string",
"description": "Use only what the business said. Write exactly unknown unless answer_status is answered."
},
"evidence_quote": {
"type": "string",
"description": "A direct staff quote supporting the answer, or an empty string when no usable quote exists."
},
"staff_confidence": {
"type": "string",
"enum": ["certain", "hedged", "unknown"]
}
}
}
Example results
These are synthetic extraction examples. Local Atlas adds collection time, expiry and a simulation flag when it stores an FAQ.
{
"answer_status": "answered",
"answer": "Yes. There is a customer lot behind the café.",
"evidence_quote": "Yes, we have a small customer lot out back.",
"staff_confidence": "certain"
}
{
"answer_status": "unclear",
"answer": "unknown",
"evidence_quote": "I’m not sure — I’d have to check.",
"staff_confidence": "unknown"
}
Adapted from the call prompt and result schema. The full app also validates the request, call completion and transcript before publishing an answer.
Try the full flow
on your machine.
The author’s review mode runs without a CALL-E key or an account. Dry run simulates the call and keeps the phone from ringing.
You’ll need Git, Node.js 20+ and npm. Place search still needs internet access.
Start a local simulation
git clone https://github.com/omarmiri/Local-atlas.git
cd Local-atlas
git checkout 0b1095d1ad02530f3aead96c01e523e24dfd1a55
npm install
REVIEW_MODE=1 CALLE_DRY_RUN=1 npm start
- Open localhost:10000. Search a US or Canadian town and open a place with a listed phone number.
- Open “Ask the Place” and choose a preset question. Review mode works when Supabase authentication is unconfigured.
- Wait for the simulated result, then ask the same question again to see the stored result reused. Outcomes can include an unclear answer or no answer.
These commands pin the source version used in this guide. The simulation skips the confirmation gate used for real calls. See the author’s setup guide for configuration.
For real calls, configure credentials and an access code, choose a callable number and confirm the request. Start with a preset question; custom questions need an external moderation model. Place and phone coverage depend on the data providers.
Make this pattern your own.
Try the example, change the question, or tell us where you got stuck.
Local Atlas is built and maintained by Omar Miri under the MIT license. CALL-E maintains this case guide, which is awaiting the author’s review. For app issues, use the author’s repository. The neighborhood illustration is conceptual.