Turn an inquiry into a qualified lead.
Use AI text to learn what a lead needs, update Salesforce, and give your team a useful handoff in Slack.
The Northstar Cleaning workflow
A person asks about office cleaning. A Salesforce lead starts a Retell AI text conversation. The agent collects office size, cleaning frequency, preferred start, and a quote request. When the qualification goal is reached, Tremi skips the later AI call and email, updates the lead description, and notifies the team.
Connect Retell, Salesforce, and Slack. Add SendGrid for the email attempt. Standard Twilio SMS is not used in this recipe. Complete the Retell setup and live SMS activation before live testing.
Salesforce handoff requires assisted setup. The current console does not expose the nested field mapping needed for Lead Description. Request help with the Salesforce mapping before activating the trigger.
Northstar and Sam are fictional. Use a test Salesforce account or dedicated test lead, a phone and inbox you control, and a private test Slack channel.
Step 1
Give the agent a specific job
Create the Retell chat agent from this prompt. Use the quickstart for its opening message, published version, webhook, and sender settings.
You are Northstar Cleaning’s AI assistant. Contact people who have requested information about office cleaning. Introduce yourself as an AI assistant and use {{first_name}} when greeting the recipient.
Northstar offers evening office cleaning. Ask one question at a time to learn the office size in square feet, how many evenings per week they need cleaning, and when they want to start. Ask whether they would like the team to prepare a quote. Capture scheduling constraints such as "after 6 pm" in the summary.
Do not invent prices, availability, service areas, or a confirmed booking. The team prepares the quote and confirms the service details. Answer only from the information above; offer to have the team answer anything else. Honor requests to stop and do not continue selling to someone who declines.
After the conversation, return the declared structured results. Set qualified to true only if office size, cleaning frequency, and preferred start are known and the recipient explicitly requested a quote. Otherwise set qualified to false. Never infer a quote request from a greeting or general interest. Summarize what was requested and identify missing information.Declare these custom analysis fields in Retell. Publish and sync the agent after changing them:
Step 2
Set the goal and later attempts
- Workflow
- Qualify cleaning leads
- First attempt
- AI SMS conversation through the published Retell chat agent, immediately within contact hours.
- Conversation goal
qualifiedequals Booleantrue.- Next attempt
- AI call through a published Retell voice agent, after a 1-hour delay. Use the same qualification instructions and results for the voice agent. In Retell, define call success by those qualification criteria. In Tremi, enable the Voice goal completed stop condition.
- Final attempt
- SendGrid email after a further 1-day delay. Subject: Your office cleaning inquiry. Message below.
- Contact hours
- Calls and texts start daily from 9 am to before 8 pm in the recipient's time zone. Use
America/New_Yorkfor this controlled example and each real recipient's actual time zone for live outreach.
Hi {{first_name}}, thanks for your interest in Northstar Cleaning. If you’d still like an office cleaning quote, reply with your office size, the evenings per week you need, and when you’d like to start. Our team will confirm the details.The AI text step waits for conversation closure and the required analysis before Tremi decides what follows. Delays are part of the sequence; a conversation can take time. When the configured goal is reached, remaining attempts are skipped. Retain opt-out and suppression handling.
Simulate, inspect the draft, and publish before saving a live start trigger.
Step 3
Start from a Salesforce lead
In Triggers and completion actions, add a Start trigger. Select Salesforce and New Record (Instant, of Selectable Type), then set Object Type to Lead.
This Pipedream component uses a webhook when available and a polling timer otherwise. Load a sample event and check which shape your account returns. The representative webhook event below is sanitized; the example ID and destinations are placeholders.
{
"New": {
"Id": "00Q000000000001EAA",
"FirstName": "Sam",
"LastName": "Example",
"Company": "Northstar qualification test"
Step 4
Update Salesforce, then notify Slack
Add two Completion actions in this order. For each, select only Goal achieved under Run after these results. For the Salesforce action, keep Stop the remaining completion actions if it fails.
- Salesforce action
- Update Record. Object Type:
Lead. Record ID: workflow fieldrecipient.externalId. - Lead description
- The assisted setup must map Fields → Description (
fields.Description) to workflow resultcollected.qualification_summary. This replaces the lead's Description; it does not require custom Salesforce fields. - Slack action
- Send Message. Choose the channel type and a private test channel the connected account can access. Set Text to the template below.
Qualified cleaning lead: {{collected.qualification_summary}}
Salesforce lead: {{recipient.externalId}}Do not paste a placeholder into Salesforce and leave it as fixed text. Preview the resolved action properties and confirm that Description contains the actual qualification summary. Other Salesforce fields are left unchanged.
The AI result and app operations have separate evidence. A goal can be reached while a Salesforce action fails. With the failure rule above, Slack waits rather than suggesting that the CRM update succeeded.
Step 5
Check the whole handoff
- Simulate in Tremi first. No providers or connected-app actions execute, and no credits are consumed. Generated evidence checks the workflow, not the quality of a live AI conversation.
- After live SMS activation and both completion actions are ready, save and activate the Salesforce trigger. Create an intentional test lead that matches the filter and uses your controlled phone and inbox.
- Answer as Sam: 12,000 square feet; three evenings each week, after 6 pm; starting next month; yes to a quote.
- Wait for the conversation to close and its analysis to arrive. Inspect the collected fields and goal decision, then the separate Salesforce and Slack action results.
{
"office_size_sq_ft": 12000,
"evenings_per_week": 3,
"preferred_start": "Next month",
"quote_requested": true,
5 credits when the first conversation qualifies
- Start trigger
- 1 credit when it starts the run.
- Workflow start
- 1 credit.
- AI conversation
- 1 credit when accepted. Replies add no Tremi conversation credits.
- Salesforce + Slack
- 1 credit per successful action: 2 total.
- Skipped call + email
- 0 credits.
For example, 50 qualification workflows at 5 credits each: one workflow start, one accepted AI conversation, and three successful app operations (a trigger, a CRM update, and a Slack notification).
If a later attempt is accepted, it adds one credit. Failed actions use no credits; actions skipped after a failure also use none. Retell, SendGrid, and other third parties bill separately. Review recurring paid-plan rates.
If the workflow does not behave as expected
No run, missing fields, or no conversation
- No Salesforce event
- Check the connected account, Lead object, live automation, and test filter. The instant source can fall back to polling if webhook setup is unavailable.
- Missing recipient or first name
- Inspect the selected sample. Webhook fields are under event.New; polling fields are directly under event. Use the actual shape. Supply an international phone number, email for the full sequence, and first_name.
- Live AI SMS is blocked
- Complete the sender setup and Tremi workspace activation. Saved settings alone do not enable live messages.
Goal or completion action is missing
- The goal did not match
- Confirm that qualified is a Boolean declared on the selected published agent version. Wait for conversation closure and required analysis; a missing analysis may need review rather than another message.
- Salesforce update failed
- Check Lead permissions, the mapped Salesforce ID, and the resolved Description value. Use the record's Id, not the event's UserId.
- No Slack notification
- Check the Salesforce result first, the Goal achieved selection, channel access, and the resolved Text. A qualified conversation alone does not prove the app actions succeeded.
Component definitions checked against the public Pipedream catalog on 15 September 2026: Salesforce (salesforce_rest_api-new-record-instant, salesforce_rest_api-update-record) and Slack Send Message (slack-send-message). Select the current component and verify its sample fields before going live.