An AI agent that places real outbound calls.
rejento doesn't run its own dialer. We delegate the actual phone call + speech-to-text + agent loop to Bolna(which dials over Plivo), feed it a tightly-scoped system prompt + the candidate's phone, then receive a webhook when the call ends. The transcript, recording, and structured outcome land on the candidate's timeline.
One-time setup (super-admin)
1. Create a Bolna agent
In the Bolna dashboard, create an agent and attach an outbound phone number (Bolna provisions these via Plivo). In the agent's prompt, reference the {system_prompt} and {first_message} variables — rejento injects a per-call prompt + opening line so the agent is customised for each candidate. Copy the Agent UUID.
2. Point the agent webhook at rejento
Set the agent's webhook URL to https://api.rejento.com/api/ai-calls/webhook/bolna?secret=<token> where <token> matches the bolna_webhook_secretbelow. Bolna posts a single terminal event per call (it has no mid-call “answered” ping), which carries the transcript + recording.
3. Add the platform credentials
/admin/global → Platform credentials. Add:
- bolna_api_key — your Bolna API key
- bolna_agent_id — the Agent UUID from step 1
- bolna_from_number — optional E.164 caller ID
- bolna_webhook_secret — the shared token from step 2
4. Set the working-hours window
/admin/configure → Automation tab → AI calling — working hours. Defaults are Mon-Fri 09:00–17:00 in Asia/Kolkata. Untick Saturday + Sunday (they're already off by default), adjust the hours and timezone for your team. The auto-call dispatcher checks these beforeplacing any outbound call — outside the window the call is deferred and retried automatically by the 15-min retry cron the next time we're inside the window. Manual AI-call clicks from a candidate page bypass the check.
5. Test the connection
Open any candidate with a phone number on file → AI call button → pickfollow_up→ confirm. The call should land within seconds. Transcript + recording appear on the candidate's timeline once the call ends. If the button is greyed out, check Settings → AI voice calling for a config error message.
6. Enable auto-screening (optional)
/admin/configure → Automation tab → flip Auto AI call top candidates ON. Every new candidate that scores ≥ your match threshold AND has a phone number now gets a one-shot AI screening call during working hours. Dedup is per-candidate-ever — no candidate is dialled twice.
The four call purposes
schedule_interview
The agent dials the candidate, confirms it's the right person, offers 3–6 interview slots you provide, locks the chosen slot, and ends. ~3 minutes max. Emails the candidate a follow-up if they don't pick up.
follow_up
Three-question status check: still actively looking, notice period, expected-salary delta. ~2 minutes.
live_interview
A 10-minute structured screening interview covering 6 fixed topics (role recap, top skills, why-looking, salary, notice, questions). The transcript becomes a scorecard candidate.
reference_check
Dials a third-party reference (NOT the candidate). Three fixed questions — strengths, willingness-to-rehire score, hidden context. The system prompt explicitly avoids protected-characteristic questions and closes with confidentiality. ~5 minutes max.
Where to trigger calls
- Candidate page → AI call button: opens a modal to pick purpose + proposed slots.
- Candidate page → Reference check button:dedicated flow that collects the reference's name + phone + relationship + context.
- Talk to rejento: the chat agent can place schedule-interview / follow-up / live- interview calls inside a conversation.
- Automations: not yet exposed as an action kind — coming.
Plan + provider configuration
The platform's voice provider is Bolna, configured under /admin/global → Platform credentials (or, as a fallback, via Fly secrets BOLNA_API_KEY + BOLNA_AGENT_ID):
- bolna_api_key — your Bolna API key
- bolna_agent_id — the Bolna agent UUID
- bolna_from_number — optional E.164 caller ID
- bolna_webhook_secret — shared token for the terminal webhook
Settings → AI voice callingcard shows you live whether the platform is configured + how many of your monthly cap you've consumed.
What you get after the call ends
- Status: answered, no_answer, completed, or failed.
- Transcript: full verbatim, searchable.
- Recording: provider-hosted audio file.
- Structured outcome:LLM-extracted JSON — slot chosen, salary update, sentiment of the candidate's replies.
- Email follow-up:if the call goes unanswered, we email the candidate a “we tried to reach you” note inviting them to reply with a good time.