Inspiration
QuoteWake comes from something I’ve seen repeatedly in my own work.
I work closely with presales, preparing technical proposals and estimates for customers. A lot of effort goes into getting an offer ready, but once it is sent, follow-up is not always as consistent as it should be. Some opportunities move forward, some are lost, but others simply go quiet.
That made me think: what if Salesforce could identify those quotes that need attention and CALL-E could actually follow up with the customer?
That’s where QuoteWake started.
What it does
QuoteWake turns eligible Salesforce Quotes into structured follow-up calls powered by CALL-E.
It:
- Finds quotes due for follow-up.
- Applies consent, expiration, retry, contact, and do-not-call checks.
- Builds the call context from Salesforce data.
- Uses CALL-E to contact the customer.
- Classifies the result and determines the next action.
- Updates the Quote and creates an auditable Salesforce Task.
Outcomes include interested, call back later, not interested, stop follow-up, no answer, busy, and unknown. Each follows an explicit completion, retry, stop, or human-review policy.
Salesforce Quote → QuoteWake → CALL-E → Salesforce update
QuoteWake helps teams recover opportunities, capture customer intent, keep CRM data current, and improve pipeline visibility—without introducing another dashboard.
How we built it
QuoteWake is a Python 3.11 application built with the official CALL-E SDK and Salesforce REST APIs. It works with standard Salesforce objects such as Quote, Opportunity, Account, Contact, and Task.
Reliability and safety are built in:
- Dry-run and prompt-preview modes
- Consent and eligibility checks
- Deterministic idempotency to prevent duplicate calls
- Atomic Quote and Task updates
- Human review for ambiguous results
- AI disclosure and no autonomous negotiation
- Redacted logs and bounded call batches
We used httpx, calle-ai, Babel, TOML, pytest, uv, and the Salesforce CLI.
Challenges and lessons
One of the biggest challenges was the complexity of configuring Salesforce for a secure, deployable integration. QuoteWake required connected-app authentication, object permissions, field-level security, custom Quote fields, related-record resolution, and reliable REST and Composite API write-back.
We also had to balance useful automation with human control. QuoteWake can collect customer intent, timing, and objections, but it cannot negotiate prices, promise availability, or make commercial commitments.
This taught us that a dependable voice-agent product needs more than a successful call: it requires careful CRM configuration, trustworthy context, conservative result handling, idempotency, and clear recovery rules.
What we're proud of
QuoteWake is more than an MVP or a technical demo—it is a production-ready workflow designed for real-world use. It combines live Salesforce data, context-aware CALL-E conversations, explicit safety policies, duplicate-call protection, atomic CRM updates, automated tests, and a complete audit trail.
Most importantly, it can be deployed today to turn unattended quotes into structured customer insights and clear next actions, while keeping Salesforce as the system of record and sales teams in control.
What's next
Next, we plan to add richer quote prioritization, territory-aware calling windows, stronger consent workflows, provider rate controls, and Salesforce reporting for follow-up performance and conversion.
Built With
- call-e
- python
- salesforce
Log in or sign up for Devpost to join the conversation.