Section 1 · 11 templates
Law firms
Tone: professional, counsel-to-counsel. Two code paths compose firm messages: the live safe outbox (raw internal ids — the ones you saw) and the durable drain (already uses ELA-XXX-XXX). Rewrites below unify both on the public ref.
New-case intake — email
Emailraw case idno link in body
server.ts:20000–20004 · composed :20865 (dispatch), :20555 (cycled firm)
Sent to the firm the moment a case is dispatched to it — and again each time the round-robin cycles a new firm in.
Current
SubjectELA emergency intake case_MTNmMThmZWMtYzY4NC00ZjY0LTk0MDgtN2E2NDI2NzlhM2Mw
ELA emergency case case_MTNmMThmZWMtYzY4NC00ZjY0LTk0MDgtN2E2NDI2NzlhM2Mw. Open the secure intake link in the admin/firm portal and accept or decline immediately.
- The ~50–90-char internal id fills the subject; unreadable on any phone.
- “admin/firm portal” is internal naming a firm has never heard.
- Says “open the secure intake link” but the email carries no link — the link arrives by SMS. Never explained.
- No emirate, no time received, no consequence for silence.
Proposed
SubjectNew ELA case ELA-4C2-9F1 — response requested
Dear Al Manara Legal Consultants,
ELA has opened urgent case ELA-4C2-9F1 in Dubai, received at 14:32 Dubai time. An ELA member reports an arrest and needs counsel now.
Your secure case brief — with the intake link to accept or decline — has been sent to your duty number by SMS. Please respond as soon as you open it. If no response is recorded, the case moves to the next firm and ELA operations is copied.
ELA response coordination
Quote ELA-4C2-9F1 in any correspondence.
Public ref is free here: createPublicCaseReference(caseId) is derivable at this compose site (it already computes it two lines later for the durable row). Emirate and received-at come from storedCase.
✎ your edits:
New-case intake — SMS
SMSraw case idemail body reused
server.ts:20000–20003 · composed :20874, :20564
Sent to the firm’s duty number at the same moment as the intake email (live-outbox path).
Current
ELA emergency case case_MTNmMThmZWMtYzY4NC00ZjY0LTk0MDgtN2E2NDI2NzlhM2Mw. Open the secure intake link in the admin/firm portal and accept or decline immediately.
- Identical body to the email — the internal id alone nearly fills one SMS segment.
- Points at a link the SMS doesn’t contain (the drain’s magic-link SMS carries it).
Proposed
ELA: urgent case ELA-4C2-9F1 in Dubai. Your secure intake link follows by SMS. Accept or decline on opening.
One segment. Names the emirate, promises the link honestly.
✎ your edits:
Case brief with signed links — email (drain)
Emailrobotic
packages/comms/src/index.ts:1070–1085 · drained via server.ts:13409
Sent to the firm by the durable notification drain: the real deliverable brief, with freshly minted time-limited links.
Current
SubjectELA urgent case brief ELA-4C2-9F1
Al Manara Legal Consultants,
ELA has opened urgent case ELA-4C2-9F1.
Open the signed time-limited links below for the case packet.
1. https://ela.example/brief/a1b2c3…
- Already uses the public ref — good. But no salutation, no ask (accept/decline never mentioned), links labelled “Secure document 1” in the HTML variant.
Proposed
SubjectELA case brief ELA-4C2-9F1
Dear Al Manara Legal Consultants,
Your case brief for urgent ELA case ELA-4C2-9F1 is ready.
Open the signed link below to review the brief and accept or decline the case. The link is time-limited to protect the member’s privacy.
1. Case brief and intake — https://ela.example/brief/a1b2c3…
ELA response coordination
Names the action and why the link expires. HTML anchor text becomes “Case brief and intake”.
✎ your edits:
Intake magic link — SMS / WhatsApp (drain)
SMSWhatsAppnear fine
packages/comms/src/index.ts:988–990 · drained via server.ts:13481, 13445
Sent to the firm’s duty number by the drain — this is the message that actually carries the intake link.
Current
ELA urgent case ELA-4C2-9F1: Al Manara Legal Consultants, open secure intake https://ela.example/i/k7Jq…
- Sound structure and public ref. The firm’s own name spends ~30 chars telling them who they are.
Proposed
ELA urgent case ELA-4C2-9F1: open your secure intake to accept or decline — https://ela.example/i/k7Jq…
Minor polish only: drop the self-addressed label, name the action.
✎ your edits:
Intake SLA breached, grace window — email
Emailraw case idraw ISO timestamp
server.ts:20451–20459
Sent to the firm when it missed the intake SLA and a short grace window opens before the case moves on.
Current
Subject[simulated] ELA SLA breach grace case_MTNmMThmZWMtYzY4NC00ZjY0LTk0MDgtN2E2NDI2NzlhM2Mw
[simulated] ELA emergency case case_MTNmMThmZWMt… firm intake SLA breached. Post-escalation grace is 10 minutes and ends at 2026-08-15T15:07:00.000Z. Accept or decline before then; ops is copied and will advance the case if no response is recorded.
- Raw internal id in subject and body.
- Machine timestamp (
…T15:07:00.000Z) — UTC, not Dubai time, in a message about a deadline.
- “Post-escalation grace” is our state-machine vocabulary, not counsel language.
Proposed
SubjectELA case ELA-4C2-9F1 — response window closing
Dear Al Manara Legal Consultants,
The intake window for urgent case ELA-4C2-9F1 has passed without a response.
You have 10 minutes of grace, until 19:07 Dubai time. Accept or decline within it; after that the case moves to the next firm. ELA operations is copied.
ELA response coordination
Deadline rendered in Gulf time at compose (the ISO instant is already in hand — formatting only).
✎ your edits:
Intake SLA breached, grace window — SMS
SMSraw case idraw ISO timestamp
server.ts:20462–20470
Same trigger as the grace email; the duty-number nudge.
Current
[simulated] ELA case case_MTNmMThmZWMt…: intake SLA breached. Grace 10 min until 2026-08-15T15:07:00.000Z; ops copied. Accept/decline now.
- Raw id + ISO instant burn most of the segment; “ops copied” is jargon.
Proposed
ELA case ELA-4C2-9F1: response window closing. 10 min grace until 19:07 Dubai time. Accept or decline now.
✎ your edits:
Acceptance verification code — SMS
SMSraw case id
server.ts:21703
Sent to the firm’s duty number when a lawyer taps “accept” on the secure brief — the OTP that makes acceptance attributable.
Current
[simulated] ELA case case_MTNmMThmZWMt…: your acceptance verification code is 481923. It expires in 5 minutes. Enter it on the secure brief to take the case.
- The code is buried mid-message behind a 50-char id — bad for a lawyer reading a lockscreen under time pressure, and it defeats OS code autofill.
Proposed
Your ELA acceptance code is 481923. It expires in 5 minutes. Enter it on the secure brief to confirm you are taking case ELA-4C2-9F1.
Leads with “code is 481923” — the phrasing iOS/Android autofill detects — and closes with the quotable ref.
✎ your edits:
Case closed — email · THE FOUNDER’S EVIDENCE
Emailraw case id
server.ts:20696–20704
Sent to the acting firm when the case reaches a terminal state — e.g. the member ends the case.
Current
Subject[simulated] ELA case closed case_MTNmMThmZWMtYzY4NC00ZjY0LTk0MDgtN2E2NDI2NzlhM2Mw
[simulated] ELA case case_MTNmMThmZWMtYzY4NC00ZjY0LTk0MDgtN2E2NDI2NzlhM2Mw is now closed: the member ended the case. No further action is required; this engagement is complete.
- This is the email that prompted this board: the internal id monster in subject and body.
- No thanks, no follow-up path for the firm’s invoice/records questions.
Proposed
SubjectELA case ELA-4C2-9F1 — closed
Dear Al Manara Legal Consultants,
Case ELA-4C2-9F1 is closed: the member ended the case. The engagement is complete and no further action is needed.
Thank you for responding. Quote ELA-4C2-9F1 in any follow-up with ELA operations.
ELA response coordination
✎ your edits:
Case closed — SMS
SMSraw case id
server.ts:20707–20715
Duty-number counterpart of the closure email.
Current
[simulated] ELA case case_MTNmMThmZWMt… closed: the member ended the case. No further action required.
Proposed
ELA case ELA-4C2-9F1 closed — the member ended the case. No further action needed.
✎ your edits:
Case closed notice — email (drain, shared template)
Emailone template, two audiences
packages/comms/src/index.ts:1008–1021 · routed server.ts:13344–13357
The durable drain’s closure notice — the same rendered copy goes to the firm and to the trusted contact (only the link differs).
Current
SubjectELA case closed ELA-4C2-9F1
Al Manara Legal Consultants,
The emergency case ELA-4C2-9F1 is closed. No further emergency action is required.
View closure status: https://ela.example/c/t0k3n…
- Structural: one template can’t speak to a lawyer and to Omar’s sister at once — so it speaks to neither.
- “No further emergency action is required” is state-machine English.
Proposed
SubjectELA case ELA-4C2-9F1 — closed
FIRM VARIANT — as the live closure email above (Dear firm, case closed, engagement complete, thank you).
CONTACT VARIANT — see “Trusted contacts → Case closed” below (warm, name-led, closure page link).
Split the template into firm_case_closed / contact_case_closed: the drain already knows target_type at render time (server.ts:13399–13406), so the split is a template-id switch, not new plumbing.
✎ your edits:
Case closed notice — SMS / WhatsApp (drain, shared template)
SMSWhatsAppshared audiences
packages/comms/src/index.ts:981–983
Drain closure notice over SMS/WhatsApp — firms get it linkless, contacts get a closure-status link.
Current
ELA case ELA-4C2-9F1 is closed. No further emergency action is required. View closure status https://ela.example/c/t0k3n…
- Same shared-audience problem in miniature.
Proposed
Firm (linkless)
ELA case ELA-4C2-9F1 closed. No further action needed.
Contact (with link)
ELA: the case is closed — nothing more is needed from you. How it went: https://ela.example/c/t0k3n…
✎ your edits:
Section 2 · 4 templates
Consulate duty desks
Tone: formal, factual, quotable. A duty officer must be able to log the case from the subject line alone — today’s dispatch subject carries no case identity at all.
Consular notification at dispatch — email
Emailno ref in subjectraw case idjargon
server.ts:20006–20011 · composed :20927–20946 (packet attached)
Sent to the duty desk of the member’s consulate the moment a case dispatches; the signed case packet rides as an attachment.
Current
SubjectELA consular emergency notification
Nearest consulate fallback for IN, routed to Consulate-General of India, Dubai. ELA consular notification for emergency case case_MTNmMThmZWMtYzY4NC00ZjY0LTk0MDgtN2E2NDI2NzlhM2Mw. Review the signed case packet and contact ops if the duty desk cannot assist.
- Subject has no case identity — every consular email looks identical, nothing to quote or file.
- Our internal routing note leads the body when a fallback fired — the reader’s first sentence is our plumbing.
- “Contact ops” — a duty desk doesn’t know what “ops” is or how to reach it.
- Who is ELA? First-contact recipients get no one-line identity.
Proposed
SubjectUrgent — ELA case ELA-4C2-9F1, consular assistance
To the duty desk, Consulate-General of India, Dubai,
ELA (Emergency Legal Assistance, UAE) has opened urgent case ELA-4C2-9F1: a member reports an arrest in the UAE and consular assistance may be required.
The signed case packet is attached. Please quote ELA-4C2-9F1 in any enquiry. If your desk cannot assist, reply to this address and ELA will re-route the case.
Routing note: no UAE post is listed for IN; this notification went to the nearest desk.
ELA response coordination — reachable any hour.
Ref in the subject; identity sentence first; routing note demoted to a labelled footnote that only renders on fallback.
✎ your edits:
Consular case packet, linkless — email (drain)
Emailnear fine
packages/comms/src/index.ts:1049–1060
The drain’s consular send when no packet artefact exists yet — honest “packet follows” notice.
Current
SubjectELA urgent consular case ELA-4C2-9F1
Consulate-General of India, Dubai,
ELA has opened urgent case ELA-4C2-9F1 requiring consular assistance. The signed case packet follows from ELA operations; please quote the case reference in any enquiry.
- Sound: public ref, quotable, honest about the packet. Only the ELA identity line is missing.
Proposed
SubjectUrgent — ELA case ELA-4C2-9F1, consular assistance
To the duty desk, Consulate-General of India, Dubai,
ELA (Emergency Legal Assistance, UAE) has opened urgent case ELA-4C2-9F1 and consular assistance may be required. The signed case packet follows shortly from ELA. Please quote ELA-4C2-9F1 in any enquiry.
ELA response coordination — reachable any hour.
Light touch: identity line + aligned subject with the dispatch email.
✎ your edits:
Consular case packet, with signed links — email (drain)
Email
packages/comms/src/index.ts:1070–1085
Drain consular send when signed packet links exist — currently reuses the generic firm-brief body.
Current
SubjectELA urgent consular case ELA-4C2-9F1
Consulate-General of India, Dubai,
ELA has opened urgent case ELA-4C2-9F1.
Open the signed time-limited links below for the case packet.
1. https://ela.example/pkt/z9y8…
- Generic firm wording for a consulate; “Secure document 1” anchor text; no reason the links expire.
Proposed
SubjectUrgent — ELA case ELA-4C2-9F1, consular assistance
To the duty desk, Consulate-General of India, Dubai,
ELA (Emergency Legal Assistance, UAE) has opened urgent case ELA-4C2-9F1 and consular assistance may be required.
The signed case packet is available at the time-limited link below; it expires to protect the member’s privacy. Please quote ELA-4C2-9F1 in any enquiry.
1. Case packet — https://ela.example/pkt/z9y8…
ELA response coordination — reachable any hour.
✎ your edits:
Consular stand-down at closure — email
Emailraw case id
server.ts:20743–20751
Sent to every consulate that was notified for the case, when the case closes.
Current
Subject[simulated] ELA consular case closed case_MTNmMThmZWMtYzY4NC00ZjY0LTk0MDgtN2E2NDI2NzlhM2Mw
[simulated] ELA consular notification for emergency case case_MTNmMThmZWMt…: the case is now closed (the member ended the case). No further consular action is required.
- Raw id; can’t be matched to the (equally unquotable) dispatch email it stands down.
Proposed
SubjectELA case ELA-4C2-9F1 — closed, no consular action
To the duty desk, Consulate-General of India, Dubai,
ELA case ELA-4C2-9F1 is now closed (the member ended the case). No further consular action is required. Thank you for standing by.
ELA response coordination
Subject-line ref lets the desk match stand-down to notification in their own inbox.
✎ your edits:
Section 3 · 6 templates
Trusted contacts
Tone: the response-arc voice of the family status page (“Omar’s response is underway”, “Nothing is needed from you”, “A person at ELA, any hour”). Warm, honest, no legalese, no case-machinery. The member’s first name is the anchor — today no message carries it, and the drain can’t (yet) even fetch it.
Emergency alert at dispatch — SMS / WhatsApp / email
SMSWhatsAppEmailraw case idcold
server.ts:20013–20017 · composed :21031–21039
Sent to every trusted contact the member entered, the moment their case dispatches. The scariest message ELA will ever send a family member.
Current
Subject (email)ELA emergency alert case_MTNmMThmZWMtYzY4NC00ZjY0LTk0MDgtN2E2NDI2NzlhM2Mw
ELA emergency alert for case case_MTNmMThmZWMt…. Follow the secure status link from ELA for updates. Do not reply with sensitive details.
- Layla has possibly never heard of ELA; nothing says who this is about or why she got it.
- “Case”, internal id, “Do not reply with sensitive details” — machinery vocabulary at the worst possible moment.
- No member name (fetchable at this compose site — one
kycProfiles lookup).
Proposed
SMS / WhatsApp
ELA: Omar pressed his emergency button and named you as his trusted contact. His response has started. A private status link follows by text.
Email — subject: “Omar’s ELA response is underway”
Layla,
Omar pressed his ELA emergency button. His response began at once — a lawyer is being engaged and the right people are being told.
A private status link is on its way to you by text. Nothing is needed from you right now.
A person at ELA, any hour: +971 4 000 0000
ELA · Emergency Legal Assistance
Gaps to plumb: member first name (derivable at this site from userId) and the support phone (config). Case ref intentionally dropped from the family copy — the status page carries it.
✎ your edits:
Live status link — SMS / WhatsApp (drain)
SMSWhatsAppzero context
packages/comms/src/index.ts:991 · drained via server.ts:13481
The drain-delivered message that actually carries Layla’s private status-page link (fresh link at each milestone).
Current
ELA case ELA-4C2-9F1: view live status https://ela.example/c/t0k3n…
- Reads like a server log. No who, no why, no reassurance — a family member’s first tap deserves one sentence of context.
- Member first name is not available in the drain’s template input (
caseReference + recipientLabel only).
Proposed
ELA: Omar named you as his trusted contact. Follow his response live — private to you: https://ela.example/c/t0k3n…
Needs plumbing: pass the member’s first name into the drain template input (or resolve it at drain time like the recipient is). Fallback without the name: “ELA: you were named as a trusted contact. Follow the response live — private to you: link”.
✎ your edits:
Live status link — email (drain)
Emailcold
packages/comms/src/index.ts:1023–1035
Email counterpart for contacts who gave an address.
Current
SubjectELA emergency alert ELA-4C2-9F1
Layla,
ELA has opened emergency case ELA-4C2-9F1. Do not reply with sensitive details.
View live status: https://ela.example/c/t0k3n…
- “Do not reply with sensitive details” as the entire second sentence — the reader is told off before being told anything.
Proposed
SubjectOmar’s ELA status — your private link
Layla,
You were named as a trusted contact on an ELA emergency response. It is underway, and you can follow it live on your private page:
View live status: https://ela.example/c/t0k3n…
Fresh links arrive at each milestone. Nothing is needed from you. This inbox isn’t monitored — a person at ELA can talk any hour: +971 4 000 0000.
ELA · Emergency Legal Assistance
Borrowed straight from the status page’s own language (trusted-contact/status/page.tsx). Same name/phone plumbing gaps as the SMS.
✎ your edits:
Case closed (resolved) — SMS / WhatsApp / email
SMSWhatsAppEmailraw case id
server.ts:20768–20787
Sent to every alarmed contact when the case closes with a resolved outcome.
Current
Subject (email)ELA case closed case_MTNmMThmZWMtYzY4NC00ZjY0LTk0MDgtN2E2NDI2NzlhM2Mw
ELA update for case case_MTNmMThmZWMt…: the emergency case is now closed. No further action is needed.
- The status page says “Omar is safe. The case is closed.” — the text that alarmed the family says “case closed” like a ticket system.
Proposed
SMS / WhatsApp
ELA: Omar’s case is closed. Nothing more is needed from you.
Email — subject: “Omar’s ELA case is closed”
Layla,
Omar’s ELA case is closed. Nothing more is needed — from him, or from you.
ELA · Emergency Legal Assistance
Deliberately reason-neutral (close reasons include ops stand-downs); the closure page tells the fuller story. “Is safe” only where the member confirmed — that nuance lives on the page, not in a blast.
✎ your edits:
Case ended without confirmed outcome — SMS / WhatsApp / email
SMSWhatsAppEmailraw case idjargon
server.ts:20768–20771 (closed_failed branch)
The harder variant: the case ended but the member’s outcome is unconfirmed. Must stay honest without alarming.
Current
ELA update for case case_MTNmMThmZWMt…: this case has ended. If you have any concerns, you can reach ELA ops through the app or the case status page.
- “ELA ops” — jargon; and Layla doesn’t have “the app”, she has a text link.
Proposed
ELA: Omar’s case has ended. If anything worries you, a person at ELA can talk any hour: +971 4 000 0000.
Keeps the honest asymmetry with the resolved copy (no “nothing more is needed”), and gives a human route instead of “ops”.
✎ your edits:
Closure notice — drain (shared with firm)
EmailSMSWhatsAppshared template
packages/comms/src/index.ts:1008–1021, 981–983
The durable drain’s closure send to contacts (with closure-status link). Covered structurally under Law firms → “Case closed notice (drain, shared template)”.
Current
Same rendered copy as the firm’s drain closure — see the shared-template card above.
Proposed
SubjectOmar’s ELA case is closed
Layla,
The case is closed. Nothing more is needed from you. How the response went, on your private page:
View closure page: https://ela.example/c/t0k3n…
ELA · Emergency Legal Assistance
Lands with the template split proposed above (contact_case_closed).
✎ your edits:
Section 4 · 14 sends
Members
Mostly push notifications, and mostly already good — the case-lifecycle pushes were written under the current copy laws and are proposed unchanged. The KYC/document emails still speak internal process language.
Sign-in & phone-change verification codes — SMS
SMSunchanged
packages/auth/src/otp.ts:85 · server.ts:32909
The login OTP and the phone-change OTP (identical copy).
Current
Your ELA verification code is 481923. It expires in 5 minutes.
Proposed
Leave as is. Short, autofill-friendly (“code is …”), no ids, no fluff. Changing it would be churn.
✎ your edits:
Verification decision ready — push
Pushunchanged
server.ts:4464–4465
Sent when a KYC review (manual or document-exception) reaches a decision — deliberately outcome-free on the lockscreen.
Current
TitleVerification update
Your verification review is complete. Open ELA to see the result.
Proposed
Leave as is. Outcome-free by design — a rejection must not render on a lockscreen. Correct as written.
✎ your edits:
Document resubmission ask — email
Emailinternal jargon
server.ts:18115–18131
Sent when the automated pre-screen flags a KYC document and the member needs to upload a clearer one.
Current
SubjectELA document resubmission needed
We need one clearer passport upload before ops can close your document review. Reason: glare obscures the photo page. You can continue to checkout; upload a replacement document from ELA and it will be checked again automatically.
- “before ops can close your document review” — internal process narrated to a customer.
- “Resubmission” in the subject reads like a government portal.
Proposed
SubjectELA — one clearer photo of your passport
We need one clearer photo of your passport to finish your document check. Reason: glare obscures the photo page.
Nothing else is held up — you can continue to checkout. Upload a replacement in the ELA app and it will be checked again automatically.
✎ your edits:
Document expiring — push
Pushinternal jargon
server.ts:7423–7438
Sent ahead of a tracked document’s expiry (passport / Emirates ID / residence visa; 30-day and 1-day marks).
Current
TitleDocument renewal needed
Your Emirates ID expires in 30 days. Re-upload the renewed document in ELA so the server pre-screen can check it automatically.
- “the server pre-screen” — nobody outside this repo knows what that is.
Proposed
TitleDocument renewal needed
Your Emirates ID expires in 30 days. When you renew it, add the new copy in ELA and we’ll check it automatically.
✎ your edits:
Membership renewal reminder — push
Pushcontract-speak
server.ts:7787–7795
Sent ahead of the fixed-term membership’s end date.
Current
TitleELA renewal reminder
Your fixed-term ELA membership expires in 7 days. Renew before then to keep protection active.
- “Fixed-term” is contract vocabulary — the member just has a membership.
Proposed
TitleELA renewal
Your ELA membership ends in 7 days. Renew to keep your protection active.
✎ your edits:
Case lifecycle pushes (5) — push
Pushunchanged
server.ts:4549–4580
The five member pushes across an active case: deadman auto-dispatch, firm accepted, reassigning, ops escalated, verification requested.
Current
deadman_dispatched
Help is on the way — Your countdown ended and we alerted your response team. Open ELA when you can.
firm_accepted
A lawyer has your case — Your duty lawyer will call you shortly. Answer unknown numbers.
reassigning
We’re finding another lawyer — Your case is being re-assigned — you don’t need to do anything.
ops_escalated
Our team is on your case — Our response team is coordinating your case directly. You don’t need to do anything.
verification_requested
Your lawyer reports this is resolved — Open ELA to confirm you’re okay. If you still need help, we’re here.
Proposed
Leave all five as is. Written under the current copy laws: no PII on the lockscreen, “response team” not “legal team”, never alarming, one behavioural instruction where it matters (“Answer unknown numbers”). These are the standard the rest of the board is being raised to.
✎ your edits:
Duress-flagged case — sanitized push
Pushunchanged
server.ts:4589–4592
Replaces every case push when the case carries a duress flag (plumbing dormant in v1) — nothing on the device may hint a case exists.
Current
TitleReminder
Open ELA when you can.
Proposed
Leave as is. Deliberately content-free; mirrors the client’s sanitizer byte for byte. Do not touch.
✎ your edits:
Help-desk reply — push
Pushminor
server.ts:5164–5165
Sent when ops replies to a member’s Help thread; the reply text itself renders only in-app.
Current
TitleELA
Our operations team replied to your message.
- “Operations team” is mild jargon; otherwise fine.
Proposed
TitleELA
Our team replied to your message. Open ELA to read it.
✎ your edits:
Case-chat reply — push
Pushunchanged
server.ts:5238–5239
Sent when the member’s case coordinator replies in case chat (suppressed entirely on duress cases).
Current
TitleELA
New message from your coordinator
Proposed
Leave as is. Content-free by design, correct tone.
✎ your edits:
Section 5 · 7 templates
Ops desk
Internal recipients (today: your own phone/email as test stand-ins), but these still land in real inboxes and pagers. Convention proposed: public ref leads everywhere a human reads; the internal id survives as a final “Internal:” line for console tooling.
SLA-breach cc — email
Emailraw case id
server.ts:20475–20483
Copies ops when a firm’s intake SLA breaches and the grace notice goes out.
Current
Subject[simulated] ELA ops cc SLA breach case_MTNmMThmZWMtYzY4NC00ZjY0LTk0MDgtN2E2NDI2NzlhM2Mw
[simulated] CC: firm SLA breach notice sent for case case_MTNmMThmZWMt… to Al Manara Legal Consultants. Post-escalation grace is 10 minutes and ends at 2026-08-15T15:07:00.000Z.
- Raw id in subject; “CC:” prefix inside the body; UTC instant.
Proposed
SubjectELA ops — SLA breach ELA-4C2-9F1
Firm intake SLA breached on ELA-4C2-9F1. Grace notice sent to Al Manara Legal Consultants; 10 min grace ends 19:07 GST. No action needed unless the grace lapses.
Internal: case_MTNmMThmZWMt…
✎ your edits:
All firms exhausted — email
Emailraw case id
server.ts:20515–20523
Sent when the round-robin runs out of firms and ops must run the case manually.
Current
Subject[simulated] ELA ops fallback all firms exhausted case_MTNmMThmZWMt…
[simulated] All configured law firms are exhausted for case case_MTNmMThmZWMt…. Ops handles manually from the case console and runbook. Last firm: firm_almanara_dxb.
- Raw ids; the one email that should scream priority has a subject nobody can scan.
Proposed
SubjectELA ops — ACTION: no firm accepted ELA-4C2-9F1
Every firm declined or timed out on ELA-4C2-9F1. Take the case manually from the console (dispatch-fallback runbook). Last firm tried: Al Manara Legal Consultants.
Internal: case_MTNmMThmZWMt…
✎ your edits:
Firm contact-confirmation action — email
Emailraw case id
server.ts:20606–20630
Sent when an accepted firm misses the 2-working-hour client-contact confirmation, or explicitly withdraws.
Current
Subject[simulated] ELA firm contact confirmation action case_MTNmMThmZWMt…
[simulated] ELA case case_MTNmMThmZWMt…: accepted firm missed the 2 working-hour client-contact confirmation timer due at 2026-08-15T16:32:00.000Z; ops should chase while the case re-enters round-robin. Firm: firm_almanara_dxb.
- A 40-word run-on reason clause; firm shown by internal id, not name.
Proposed
SubjectELA ops — chase firm on ELA-4C2-9F1
Al Manara Legal Consultants accepted ELA-4C2-9F1 but missed the 2-working-hour client-contact confirmation (was due 18:32 GST). Chase the firm; the case is back in round-robin meanwhile.
Internal: case_MTNmMThmZWMt… · firm_almanara_dxb
✎ your edits:
Firm acceptance recorded — email
Emailraw case id
server.ts:21753–21770
The attributed-acceptance record: firm + acting lawyer + confirmation timestamp. Doubles as a legal attribution artefact — content must stay complete.
Current
Subject[simulated] ELA firm accepted case_MTNmMThmZWMt… — Al Manara Legal Consultants
[simulated] Firm acceptance recorded for case case_MTNmMThmZWMt…. Acting firm: Al Manara Legal Consultants (firm_almanara_dxb). Acting lawyer: Sara Haddad. Legally attributed at confirmation 2026-08-15T14:41:03.000Z. ELA operations now tracks first contact.
- Raw id in the subject pushes the firm name (the scannable fact) off a phone screen.
Proposed
SubjectELA ops — firm accepted ELA-4C2-9F1 (Al Manara)
Acceptance recorded on ELA-4C2-9F1.
Acting firm: Al Manara Legal Consultants (firm_almanara_dxb).
Acting lawyer: Sara Haddad.
Attributed at confirmation: 2026-08-15T14:41:03Z (kept verbatim — attribution record).
First-contact tracking is running.
Internal: case_MTNmMThmZWMt…
Attribution timestamp stays ISO on purpose — this one is a record, not prose.
✎ your edits:
Consulate routing alert — email
Emailraw case id
server.ts:20020–20025, 20969–20991
Sent to ops when a member’s country has no UAE consulate in the directory (routed to nearest, or nothing viable found).
Current
SubjectELA ops notification case_MTNmMThmZWMt…
No UAE consulate for IN; routed to nearest Consulate-General of India, Dubai. ELA ops notification for case case_MTNmMThmZWMt…. Open the ops console for current state and runbook.
- Generic subject hides the one thing that matters (routing anomaly); raw id.
Proposed
SubjectELA ops — consulate routing check ELA-4C2-9F1
No UAE consulate for IN; routed to nearest: Consulate-General of India, Dubai. Verify the routing on ELA-4C2-9F1 from the console.
Internal: case_MTNmMThmZWMt…
✎ your edits:
Ops paging — email + SMS + voice script
EmailSMSVoiceraw case id
packages/comms/src/index.ts:1197–1225
The pager: fires on hard escalations (reason-coded), with a [DURESS] prefix when flagged. Terse on purpose.
Current
Subject[DURESS] ELA ops escalation case_MTNmMThmZWMt…: firm sla exhausted
Email/voice: [DURESS] ELA ops escalation for case case_MTNmMThmZWMt…. Reason: firm sla exhausted. Open the ops console and take ownership of this case.
SMS: [DURESS] ELA ops escalation case_MTNmMThmZWMt…: firm sla exhausted. Open ops console.
- An on-call phone reading a 50-char id aloud in a voice call; the ref would page cleanly.
Proposed
Subject[DURESS] ELA page ELA-4C2-9F1: firm SLA exhausted
Email/voice: [DURESS] ELA ops page for ELA-4C2-9F1. Reason: firm SLA exhausted. Open the console and take ownership.
Internal: case_MTNmMThmZWMt… (email only)
SMS: [DURESS] ELA page ELA-4C2-9F1: firm SLA exhausted. Open console.
Keeps the pager terseness and the [DURESS] convention; a voice call can actually say “ELA-4C2-9F1”.
✎ your edits:
Internal ops notice — email (drain)
Emailnear fine
packages/comms/src/index.ts:1036–1048 · queued from server.ts:20491, 20531, 20995, 11587
The durable, linkless ops record the drain sends for SLA breaches, exhaustion, routing alerts and voice-note salvage notices. Linkless by design (stores send intent only).
Current
SubjectELA internal ops notice ELA-4C2-9F1
ELA Ops Desk,
An internal ops escalation was recorded for case ELA-4C2-9F1. Review the case in the ELA admin console for details and next actions.
- Public ref, honest about being a pointer — structurally right. Only gap: which escalation? All reasons render identically.
Proposed
Keep the shape; optionally thread the reason code onto the durable row so the drained notice can say which escalation it records. Copy itself needs no rewrite.
✎ your edits:
Section 6 · 1 template
Insurer (FNOL)
The First Notice of Loss email to the underwriter’s FNOL address. A reconciliation document — claim/policy ids are the point here, so this is a light touch, not a rewrite.
First Notice of Loss — email
Emaillight touch
server.ts:7280–7311 · sent :33866–33877
Sent to the insurer’s FNOL address when ops submits a filed claim.
Current
SubjectFNOL clm_8f31c2 — policy SUK-ELA-002211
First Notice of Loss — ELA legal-expense insurance
Claim reference: clm_8f31c2
Policy number: SUK-ELA-002211
Member name: Omar Al Rashid
Member reference: 7c1d2e3f-49ab-4cde-9012-3456789abcde
Case reference: case_MTNmMThmZWMtYzY4NC00ZjY0LTk0MDgtN2E2NDI2NzlhM2Mw
Incident reported at: 2026-08-15T14:32:00.000Z
Incident summary: Member arrested in Dubai; duty lawyer engaged via ELA dispatch.
Legal fees claimed: AED 12,500.00
Bail bond claimed: AED 20,000.00
Prior-exclusion verdict: no exclusion (checked 2026-08-15T14:35:00.000Z)
- “Case reference” hands the insurer the internal id — the public ref is the identity ELA staff can actually discuss on a call.
- Raw member uuid labelled “Member reference” — meaningless to the insurer; keep it, but label it as ELA’s reconciliation id.
Proposed
SubjectFNOL clm_8f31c2 — policy SUK-ELA-002211
First Notice of Loss — ELA legal-expense insurance
Claim reference: clm_8f31c2
Policy number: SUK-ELA-002211
Member name: Omar Al Rashid
ELA member id (reconciliation): 7c1d2e3f-49ab-4cde-9012-3456789abcde
ELA case: ELA-4C2-9F1
Incident reported at: 2026-08-15T14:32:00.000Z
Incident summary: Member arrested in Dubai; duty lawyer engaged via ELA dispatch.
Legal fees claimed: AED 12,500.00
Bail bond claimed: AED 20,000.00
Prior-exclusion verdict: no exclusion (checked 2026-08-15T14:35:00.000Z)
Structure, ids and timestamps kept verbatim (reconciliation document); only the case identity swaps to the quotable ref.
✎ your edits:
Not on this board (deliberately)
Notification-audit ledger rows (delivery_blocked_config / delivery_failed_terminal / ops_escalated, server.ts:13662–13732) are append-only audit records, not sends — nobody receives them. In-app marketing/paywall copy (server.ts:25511 ff.) is screen copy, not outbound comms. Watch/phone push payload plumbing without human copy is likewise excluded.
Cross-cutting changes the rewrites assume: ① every live-outbox compose site swaps caseId → createPublicCaseReference(caseId) in recipient-facing text (already computed for the durable rows at the same sites); ② deadline instants render as Gulf time at compose; ③ member first name + support phone get plumbed to the trusted-contact compose sites and drain template input; ④ case_closed_notice splits into firm/contact variants. Nothing ships until you sign off here.