How We Built AI Calling Infrastructure That Collects Shelter Data Across the US

About the Client
Our client is a US-based social services technology company whose platform helps agencies place vulnerable people into emergency shelter. That platform is only as good as its data: a placement depends on knowing how many beds each shelter has available right now. But American shelters publish no API and no data feed—the information lives with whoever answers the shelter's phone. Before this project, the client paid a call-center agency to dial shelters city by city, every day, and key the answers into the system. Daily data collection was a large, recurring operational burden that grew with every new city they covered.
Results
Hundreds
of shelters called every day by AI voice agents
Nationwide
coverage, scaled up from a single-state pilot in Texas
Daily
bed-availability updates without a human dialing a single phone

How we made AI phone calls trustworthy

Calls that respect local time
AWS Lambda dispatches calls on cron schedules organized by timezone, so a shelter in Texas and a shelter in Oregon each get their call during local working hours—when someone is actually at the desk to answer.
Built for how shelters actually answer
Real calls hit voicemail, busy lines, and front-desk staff with questions. The agents handle interruptions and clarifying questions naturally, and unanswered or incomplete calls are retried and rescheduled automatically instead of silently dropping off.
Data from transcripts, not model memory
We use Retell AI's post-call extraction to pull answers from the actual call transcript against a strict schema—bed counts, restrictions, intake notes. The model reports what was said on the call, not what it guesses a shelter might say.
Validation before the platform trusts a number
Extracted values pass validation rules—a bed count can't exceed a shelter's known capacity, and inconsistent answers get flagged instead of stored. Human spot checks on sampled transcripts keep the quality bar honest as coverage grows.
From one state to the whole country
- Discovery - We studied how the call-center agency actually collected the data—what questions worked, where calls went wrong, and which fields the platform needed—and turned that into a conversation design and extraction schema.
- Pilot - We launched in Texas: AI voice agents calling a limited set of shelters daily, with every transcript reviewed. The pilot surfaced the real-world edge cases—voicemail, IVR menus, staff turnover—that shaped the retry and validation logic.
- Harden - We built the trust layer: schema-based post-call extraction, validation rules that reject impossible values, automatic retries for unanswered calls, and human spot checks on sampled transcripts.
- Scale - With the pilot proven, expanding was a matter of adding timezone-aware schedules rather than hiring callers. The system now calls hundreds of shelters across the country every day.
Technology we chose for this project
AI & Voice
- Retell AI
- Node.js
AWS Infrastructure
- AWS Lambda
- Amazon EventBridge Scheduler
- Amazon DynamoDB

What We Did
We built an automated data collection system around AI voice agents. Cron schedules organized by timezone trigger AWS Lambda functions, which dispatch outbound calls through Retell AI during each shelter's local working hours. On the call, the AI agent introduces itself, asks about tonight's bed availability and intake conditions, and handles the conversational reality of shelter front desks—questions, interruptions, and holds.
When a call ends, Retell AI's post-call extraction pulls the answers from the transcript against a strict schema and passes structured data into the client's platform, where validation rules check every value before it is stored. Unanswered calls, voicemails, and incomplete conversations are retried or rescheduled automatically, and sampled transcripts get human spot checks—so the platform's live availability data stays worthy of the placements that depend on it.
Result & Impact

Daily shelter data collection stopped being a staffing problem. The work that previously required a call-center agency dialing city by city now runs on scheduled infrastructure: hundreds of shelters called every day, each in its own timezone, with structured data flowing into the platform minutes after each call ends.
The Texas pilot proved the model, and scaling to the rest of the country meant adding schedules—not headcount. Coverage that once grew linearly with call-center cost now grows with configuration. And because every data point is extracted from a real call transcript, validated against known shelter capacity, and spot-checked by humans, the client's platform can treat the numbers as placement-grade data rather than best guesses.
Frequently Asked Questions
Why make phone calls at all—couldn't this data be pulled from an API?
No such API exists. US shelters publish no real-time data feed; bed availability lives with whoever answers the shelter's phone. That's why the client originally paid a call-center agency to collect it manually. The AI calling infrastructure automates the only data channel that actually exists: a phone conversation.
How do you stop the AI from making up data?
With layers, not promises. Answers are extracted from the actual call transcript against a strict schema—the model reports what was said, not what it expects. Validation rules reject impossible values, like a bed count above the shelter's known capacity. Incomplete or ambiguous calls are flagged and retried rather than stored. And humans spot-check sampled transcripts so extraction quality is continuously measured, not assumed.
How does scheduling work across US time zones?
Calls are dispatched by cron schedules organized per timezone, triggering AWS Lambda functions that place calls through Retell AI only during each shelter's local working hours. A shelter in El Paso and a shelter in Portland both get called when someone is likely to be at the desk—not at a time convenient to a central call center.
What happens when a shelter doesn't answer?
The system expects it. Unanswered calls, voicemails, and busy lines are automatically retried and rescheduled within the shelter's working hours. Calls that end without complete data are flagged for follow-up instead of writing partial records, so a gap in the data is visible rather than silent.
How did this scale from Texas to the whole country?
The pilot in Texas was deliberately small: a limited shelter list, every transcript reviewed, and the conversation design refined against real edge cases. Once extraction accuracy and retry logic were proven, national expansion required adding timezone-aware schedules and shelter lists—the serverless architecture and per-call pricing scale with volume, not headcount.

