Inspiration
We donated nearly 20,000 pounds of food to hungry families, but the hardest part wasn't moving literal tons of cans and boxes—it was getting grocery store managers to pick up the phone.
Through our student-run nonprofit, Food for the Capital, we’ve raised over $20,000 and logged 1,763 volunteer hours to fight food insecurity. But the administrative logistics are paralyzing. Setting up a single grocery store donation booth takes an average of two weeks of back-and-forth phone tag. Every manual outreach call eats up 15 minutes of a volunteer's time.
We realized that to scale our impact, we needed to completely eliminate this communication bottleneck.
What it does
AutoReach is an end-to-end AI voice agent that autonomously coordinates food drives. It turns two weeks of manual phone tag into a single, two-minute automated workflow.
From our dashboard, a user clicks "Start Call." The agent dials the partner, navigates the conversation using our organization's specific guidelines, and streams the transcript live to the screen. The moment the call ends, AutoReach extracts the context, generates a tailored follow-up email, and sends it directly to the partner. Zero human intervention required.
How we built it
We engineered a fully Dockerized, production-ready stack designed for stateful orchestration, not just simple prompt-and-response.
- Voice & Orchestration: We used Vapi for ultra-low latency telephony and integrated Railtracks to manage the stateful agent orchestration, tool execution, and session logging.
- Knowledge Grounding (RAG): To prevent hallucinations, every response is routed through a LangChain agent querying a ChromaDB vector store. This injects our actual organizational playbooks and logistics data directly into the conversation.
- Real-Time Data Pipeline: The FastAPI backend captures real-time webhooks from Vapi, pushing events into an AsyncIO queue to stream live transcripts to the Next.js frontend via Server-Sent Events (SSE).
- Automated Follow-ups: Post-call, the final transcript is sent to GPT-4o, which triggers an automated SMTP follow-up email.
Challenges we ran into
Building a responsive, real-time interface for active phone calls was a major hurdle. We had to abandon standard API polling and implement an AsyncIO queue paired with Server-Sent Events (SSE) to ensure the frontend received immediate, polling-free transcript updates.
Keeping the AI strictly on-script was another challenge. We had to carefully tune our RAG pipeline to ensure the agent reliably used the retrieve_context() tool to pull the exact right playbook from ChromaDB at the right time.
Accomplishments that we're proud of
We are incredibly proud to have built a system that isn't just a simple LLM wrapper, but a fully orchestrated, stateful voice platform. Deploying the entire infrastructure as a robust, 4-container Docker stack makes it genuinely production-ready.
Most importantly, we achieved true zero-touch automation. Watching the system autonomously dial a number, hold a grounded conversation, and immediately send a customized follow-up email without any human input feels like magic.
What we learned
Building a functional voice agent requires much more than just a clever prompt; it demands rigid workflow orchestration. Working with Railtracks taught us how to structure and trace agent execution state, while building the real-time pipeline deepened our understanding of handling asynchronous events and webhooks.
What's next for AutoReach
Our immediate next step is deploying AutoReach directly into Food for the Capital's operations to handle all upcoming food drive outreach. Once validated in the field, we plan to package AutoReach as a scalable blueprint for other grassroots nonprofits, allowing them to eliminate administrative friction and focus their volunteers on what actually matters—helping the community.
Built With
- chromadb
- docker
- fastapi
- gmail-smtp
- mapbox
- next.js
- ngrok
- openai
- postgresql
- python
- railtracks
- tailwind-css
- typescript
- vapi
Log in or sign up for Devpost to join the conversation.