SETTINGS

Provider, safety, templates.

Everything below is read from the environment at request time — this screen reports the real state, it does not configure it. Supplier names are deliberately absent; what matters here is whether each leg is configured and live.

Send safety

MESSAGES WILL BE SENT
Send mode
off · sandbox (allowlist only) · live (unrestricted)
sandbox
Sandbox allowlist
Only these numbers receive anything in sandbox mode.
+97339112829
Live mode armed
requires a second, explicit confirmation variable
no

The loaded portfolio contains roughly 2,849 structurally valid Bahraini mobile numbers. The source file is marked “Dummy”, but 3xxxxxxx and 6xxxxxxx are live MSISDN ranges — so a journey run in live mode is an unsolicited debt-collection SMS to real handsets, at cost, without consent. Sending is gated on two independent environment variables for that reason; a blocked send is still recorded against the case, so the journey, dashboard and audit trail work identically with nothing leaving the process.

Agent mode

RUNNING LITE

Live when a key is present, lite when it isn't — currently resolving to lite.

Model key
required only for live mode
missing
Model
deterministic (no model call)
Setting source
from the environment, or auto if unset
environment default

Lite mode is not a mock. It writes the same promises, disputes, escalations and signals to the same tables and passes the same guardrails — the portal cannot tell the difference. What it gives up is free-text handling: replies outside the scripted branches escalate to a human rather than being improvised. Use it when a demo must not depend on the network, or to run the platform at zero API cost.

SMS provider

Channel
texts leave the process and reach real handsets
live network
Credentials
account credentials for the send channel
present
Sender
a registered sender, which Bahrain A2P expects
Messaging Service

Voice calls

Channel
calls are placed to real handsets
live network
Conversation
speech-to-speech, Arabic and English, interruptible
conversational agent
Caller ID
the number customers see
+16402428392
Answering-machine detection
the agent decides; detection is recorded, not obeyed
advisory

The biggest disclosure risk on a collections call is leaving the amount on a voicemail a spouse or colleague plays back — the same third-party disclosure the SMS guardrails prevent, except on voice it happens by default. The protection that actually holds is ordering: nothing states the balance until a person has answered and confirmed who they are. Detection runs on every call and is always recorded. While the conversational agent is connected the verdict is advisory — it has been observed calling a live person a machine, and acting on that replaced a real conversation with a recording. The agent hears the same audio and ends the call itself on a voicemail.

Webhooks

Public base URL
The provider signs the exact URL it called; behind a proxy the internal URL differs, so signature checks fail without this.
https://smartcollect.doo.space
Inbound SMS
https://smartcollect.doo.space/api/webhooks/sms/inbound
SMS delivery receipts
https://smartcollect.doo.space/api/webhooks/sms/status
Voice — call answered
https://smartcollect.doo.space/api/webhooks/voice/answer
Voice — caller input
https://smartcollect.doo.space/api/webhooks/voice/gather
Voice — call status
https://smartcollect.doo.space/api/webhooks/voice/status

Both endpoints reject any request whose signature does not verify. Without that, anyone who learned the URL could forge a customer reply — logging a promise-to-pay or raising a dispute on someone else’s account.

Message templates

13 defined
Day zero — invoice issuedp1_day0
ARABIC
هلا {{name}}، معاك بتلكو. فاتورتك الجديدة {{amount}} دينار ومستحقة يوم {{dueDate}}. تقدر تسدد من الرابط: {{link}}
ENGLISH
Hi {{name}}, this is Batelco. Your new bill is BD {{amount}}, due {{dueDate}}. You can pay here: {{link}}
Day 3 — gentle reminderp1_reminder
ARABIC
{{name}}، تذكير بسيط: المبلغ {{amount}} دينار على حسابك. تقدر تسدد من {{link}} أو تتواصل مع بتلكو على واحد تسعه سته.
ENGLISH
{{name}}, a quick reminder: BD {{amount}} is outstanding on your account. Pay at {{link}} or contact Batelco on 196.
Day 7 — second reminderp1_second_reminder
ARABIC
{{name}}، المبلغ {{amount}} دينار لا يزال غير مسدد. إذا سددت مشكور تجاهل الرسالة، وإذا في شي على الفاتورة رد علينا هني.
ENGLISH
{{name}}, BD {{amount}} is still outstanding. If you've already paid, please ignore this. If something on the bill looks wrong, reply here.
Day 12 — interruption noticep1_pre_interruption
ARABIC
{{name}}، حسابك يبين ان توقف الخدمة محدد يوم {{interruptionDate}}. تقدر تسدد {{amount}} دينار من {{link}} أو تتواصل مع بتلكو على واحد تسعه سته قبل هالتاريخ.
ENGLISH
{{name}}, your account shows service interruption scheduled for {{interruptionDate}}. You can pay BD {{amount}} at {{link}} or contact Batelco on 196 before that date.
Day 16 — final call before ceasep1_voice_final
ARABIC
{{name}}، معاك بتلكو بخصوص مبلغ {{amount}} دينار على حسابك. حبينا نتواصل وياك قبل لا يتأثر الخط.
ENGLISH
{{name}}, this is Batelco about the BD {{amount}} outstanding on your account. We wanted to reach you before the service is affected.
Entry — overdue balancep2_entry
ARABIC
هلا {{name}}، معاك بتلكو بخصوص مبلغ {{amount}} دينار على حسابك. مناسب نكمل الحين؟
ENGLISH
Hi {{name}}, this is Batelco regarding BD {{amount}} outstanding on your account. Is now a good time?
Day 4 — follow-upp2_followup
ARABIC
{{name}}، ما وصلنا رد منك بخصوص مبلغ {{amount}} دينار. تقدر تسدد من {{link}}، وإذا تبي ترتيب دفع رد علينا وبنساعدك.
ENGLISH
{{name}}, we haven't heard back about the BD {{amount}} balance. You can pay at {{link}}, or reply here if you'd like to arrange a payment plan.
Day 9 — final automated touchp2_final
ARABIC
{{name}}، آخر تذكير آلي بخصوص {{amount}} دينار. إذا ما وصلنا رد بيتواصل معك أحد من الفريق.
ENGLISH
{{name}}, final automated reminder regarding BD {{amount}}. If we don't hear back, someone from the team will contact you.
Entry — contact validationp3_validate
ARABIC
هلا، معاك بتلكو. نحاول نوصل {{name}} بخصوص حساب قديم. إذا هذا مو رقمك رد بكلمة «خطأ».
ENGLISH
Hello, this is Batelco. We're trying to reach {{name}} about a legacy account. If this isn't the right number, reply WRONG.
Day 5 — recovery offerp3_recovery
ARABIC
{{name}}، على حسابك مبلغ {{amount}} دينار من خدمة سابقة. رد علينا هني ونقدر نرتب طريقة سداد تناسبك.
ENGLISH
{{name}}, BD {{amount}} remains on your account from a previous service. Reply here and we can arrange a payment method that works for you.
Day 14 — documentation reviewp3_pre_legal
ARABIC
{{name}}، حسابك تحت المراجعة لملف التوثيق. إذا تبي تناقش السداد تواصل مع بتلكو على واحد تسعه سته.
ENGLISH
{{name}}, your account is under documentation review. To discuss settlement, contact Batelco on 196.
Promise-to-pay confirmedptp_confirmation
ARABIC
تمام {{name}}، سجلنا انك بتسدد {{amount}} دينار يوم {{promisedDate}}. يعطيك العافية.
ENGLISH
Thanks {{name}}, we've logged that you'll pay BD {{amount}} on {{promisedDate}}.
Promise-to-pay lapsedptp_broken
ARABIC
{{name}}، كان مسجل عندنا سداد {{amount}} دينار يوم {{promisedDate}} وما وصلنا. تقدر تسدد من {{link}} أو رد علينا.
ENGLISH
{{name}}, we had BD {{amount}} logged for {{promisedDate}} and haven't received it. You can pay at {{link}} or reply here.

Arabic is Bahraini spoken register, matching the approved concept. No template states a consequence beyond the scheduled interruption date, and none states it more than once — legal, credit-bureau and agency language is absent by construction.