Inspiration

Sales teams waste thousands of hours manually calling unqualified leads, only to hear "not interested" or "call me back next year." While text-based AI chatbots are everywhere, the phone remains the ultimate channel for high-stakes business communication. We were inspired to build an AI agent that doesn't just generate text, but actually picks up the phone, navigates real-world conversations, and does the heavy lifting of lead qualification so humans can focus on closing deals.

What it does

SalesVoice is an AI-powered outbound sales agent that automates the entire lead qualification process. It uses CALL-E to:

  • πŸ“ž Dial prospects and hold natural, adaptive conversations about product interest
  • 🧠 Automatically categorize the outcome of the conversation
  • πŸ“Š Extract structured business intelligence (like lead_status, specific objections, and recommended next_actions)
  • πŸ’Ύ Save all qualified data directly to a CRM-style dashboard

How we built it

  • Backend: Python with the official CALL-E Python SDK (calle-ai)
  • Frontend: Streamlit for rapid, professional UI development
  • Database: SQLite for lightweight, portable data storage
  • AI Logic: CALL-E's result_schema feature, which defines a strict JSON schema that forces the voice AI to extract specific fields from unstructured audio
  • Safety: A custom Simulation Mode (dry-run path) allowing developers to test UI and database logic without consuming CALL-E credits or placing real calls

Challenges we ran into

  1. Testing without a physical phone: Since we didn't have a dedicated test number, we built a "Pipeline Test" mode to call public automated hotlines (like the US Naval Observatory time line) to verify the API pipeline, transcript extraction, and structured data parsing end-to-end.
  2. SDK Response Parsing: The CALL-E SDK sometimes returned responses as lists or Pydantic models instead of standard dictionaries. We wrote a robust parsing layer to handle all object types safely and extract hidden transcript data.
  3. Structuring Unstructured Voice: Forcing an AI voice agent to stick to a strict JSON schema during a fluid, unpredictable human conversation required careful prompt engineering and schema design.

Accomplishments that we're proud of

  • πŸ† Building a fully functional, end-to-end pipeline that turns messy, unstructured voice audio into clean, actionable JSON business data.
  • πŸ›‘οΈ Adhering strictly to CALL-E's safety and contribution guidelines by implementing a mandatory "dry-run" simulation mode and explicit user confirmation checkpoints before any real call is placed.

What we learned

We learned that Voice AI is fundamentally different from text AIβ€”latency, interruptions, and automated IVR menus require a completely different approach to prompt engineering. Most importantly, we learned the true power of CALL-E's result_schema. It transforms voice AI from a "cool demo" into a reliable, enterprise-grade data extraction tool.

What's next for SalesVoice

  • πŸ“‚ Batch Processing: Uploading CSV lists of leads for automated overnight calling campaigns.
  • πŸ”— CRM Integrations: Pushing qualified "Hot" leads directly into Salesforce or HubSpot via webhooks.
  • πŸ“Ό Voicemail Detection: Automatically leaving personalized AI voicemails and scheduling callbacks for unanswered calls.
  • 🌍 Multi-Language Support: Expanding the agent to qualify leads in Spanish, French, and Arabic.

Built With

  • ai-agent
  • call-e
  • python
  • sales-automation
  • sdk
  • sqlite
  • streamlit
  • voice-ai
Share this project:

Updates

Submission history