Duecare Channels — NGO / Government chatbot integrations¶
Status: Roadmap. Design target. Today's bridge:
packages/duecare-llm-chat already exposes the harness through a
FastAPI surface — that's the integration surface Channels would wrap with
platform adapters. No code in this repo currently sends messages on
Messenger / WhatsApp / SMS.
A channel-deployment layer that lets trusted institutions (NGOs, labor ministries, consulates, regulators, worker centers, hotline operators, legal-aid orgs) provide Gemma 4-powered migrant-worker guidance through familiar messaging platforms — grounded in their own verified RAG documents, contacts, complaint mechanisms, and intake workflows.
Why Channels is its own component¶
The mobile app is worker-owned. Channels is institution-owned.
| Module | Owner | User | Deployment surface |
|---|---|---|---|
| Mobile (component #8) | Duecare / worker | individual migrant worker | phone (private, on-device) |
| Channels (component #7) | NGO / government tenant | migrant workers + caseworkers | Messenger, WhatsApp, web chat, SMS, embassy portal |
Both use the same safety engine (Runtime + Harness + Eval). The trust model differs: a worker downloading the Mobile app trusts Duecare directly. A worker chatting with an NGO bot trusts the NGO, which has wrapped Duecare. Channels ships with explicit "who-you're-talking-to" disclosure on session start.
Target channels (roadmap, in order of partner demand)¶
| Channel | Notes |
|---|---|
| Web chat widget | Embeddable on NGO + government websites; lowest friction |
| WhatsApp Business | Highest-reach for migrant-worker populations; needs Meta Business approval |
| Facebook Messenger | Used by recruiters too — caseworker triage usable here |
| Telegram | Strong in Eastern European / Russian-speaking corridors |
| Viber | Strong in Philippines + diaspora communities |
| SMS (Twilio / Africa's Talking) | Last-mile reach; works on any feature phone |
| Government website widget | Embassy / consulate / labor-ministry intake portals |
| NGO intake page | IFRC / IOM / IJM / Polaris / etc. existing portals |
What the chatbot does¶
| Function | Description |
|---|---|
| Worker Q&A | Answers worker questions in plain language |
| Intake triage | Collects structured complaint facts |
| RAG grounding | Uses NGO / government-specific documents |
| Contact routing | Shows verified agency / NGO contacts |
| Complaint guidance | Explains how to file safely |
| Draft generation | Creates complaint / referral drafts |
| Document review | Reviews screenshots, receipts, contracts |
| Escalation | Hands off to a human caseworker |
| Safety planning | Advises against unsafe confrontation |
| Multilingual support | Tagalog, Bahasa, Nepali, Bengali, Arabic, etc. |
Tenant knowledge pack (per-deployment)¶
Each NGO / government deployment has a tenant-specific knowledge pack:
NGO / government chatbot tenant
│
├─ official FAQ
├─ complaint forms
├─ intake scripts
├─ jurisdiction laws
├─ contact directory (subset of _contacts.json)
├─ escalation rules (caseworker handoff thresholds)
├─ supported languages
├─ agency-specific disclaimers
├─ human handoff contacts
└─ reporting thresholds (when to flag for caseworker review)
Combined with the global Duecare knowledge (ILO conventions, Palermo Protocol, common indicators) plus the continuously updated intelligence delivered by the Public Information Research Monitor through vetted Exchange packs.
Complaint-mechanism boundary¶
Allowed¶
- Explain complaint options
- Identify likely agency / NGO contacts
- Prepare a draft complaint
- Pre-fill a form (only when the form supports URL params)
- Hand off to human staff
- Let user choose whether to submit
- Save a case ID after explicit consent
Not allowed by default¶
- Auto-submit complaints
- Auto-email regulators
- Auto-call hotlines
- Expose raw messages to a central server without consent
- Tell workers to confront employer / recruiter
- Hallucinate contact info
- Pretend to provide legal advice
Canonical safety phrase, used in every channel's session-start banner:
Duecare drafts; the user or trusted caseworker decides. Raw chats stay with the tenant unless explicit consent allows a handoff.
Architecture sketch¶
Worker on Messenger / WhatsApp / web / SMS
│
▼
Channel Adapter (per-channel webhook + session manager)
│
▼
Tenant Router (loads tenant knowledge pack)
│
▼
Consent UX (session-start: who you're talking to + safety)
│
▼
Duecare Harness (GREP + RAG + tools — same as the chat package)
│
▼
Gemma 4 Runtime (per-tenant model: stock or tuned via Trainer)
│
▼
Response policy (grounded refusal, contact routing, draft gen)
│
▼
Channel Renderer (markdown → channel-specific formatting)
│
▼
Worker reply (or human handoff if escalation threshold met)
What Channels does NOT own¶
- Model training (that's Trainer / component #5)
- Global laws database (that's RAG via Harness / Exchange)
- Rubrics (that's Eval / component #4)
- Raw source crawling (that's the Research Monitor / component #6)
- Official contact verification (the Research Monitor proposes; humans verify)
Channels' job is session management + tenant config + channel adapters + safety UX. Everything that makes a response correct lives upstream.
Submission disclosure¶
The Kaggle submission does not ship Channels. Auto-deploying Duecare on Messenger / WhatsApp without partner approval would be unsafe — it would create the impression that the bot is an official NGO channel when it isn't. Channels exists in this doc tree as a design target that partners can review.
A live Channels deployment requires:
- A named NGO / government tenant who owns the bot.
- A tenant knowledge pack (FAQ + complaint forms + contacts + handoff).
- Platform business-account approval (Meta Business / Twilio / etc.).
- Eval pass + vetted pack pinning.
- Disclosed safety boundaries in the session-start banner.
None of those happen at hackathon time.