SMS operators
Own the control plane; SMSC is the adapter.
DLT · prepaid wallet · Kannel
Kannel can bind SMPP. It cannot be the company. This platform puts PostgreSQL as the ledger, FastAPI as the decision layer, and a Redis worker as the send path — with three keys: platform, tenant/reseller, RBAC user.
For SMS operators, aggregators and reseller teams who need DLT, prepaid wallets and isolation — not one Twilio account for every agency.
Teams that run this job on disconnected tools typically hit:
One platform: Approved template + contact list → DLT/consent gate → lock wallet → insert messages → Redis sms:send batches → worker → Kannel/Twilio/Gupshup → DLR
flowchart TB Vue[Vue 3 landing tenant platform] API[FastAPI OpenAPI] PG[(PostgreSQL ledger)] Redis[(Redis sms:send)] W[Worker retries] K[Kannel SMPP] HTTP[Twilio Gupshup] Vue --> API API --> PG API --> Redis Redis --> W W --> K W --> HTTP
This product is a productized delivery of the documented engineering case study — evidence stays on this page so you do not have to guess what was shipped.




Full case study with video and FAQ →
Configure this scope & send RFQ →
Own the control plane; SMSC is the adapter.
Parent credited after client debit — margin rules scoped in discovery.
DLT PE, sender IDs and approved templates before broadcast.
FastAPI + Vue + Redis worker — not a Twilio wrapper with no tenancy.
| Traditional setup | This product direction |
|---|---|
| HTTP waits on SMPP | Wallet lock + Redis batches + async worker |
| DLT in a spreadsheet | PE / sender ID / template gate before billing |
| One Twilio account for all agencies | JWT tenant_id on mutating routes |
| Card data on your servers | Hosted Paytm/Razorpay checkout |
No invented delivery-rate SLA. The running UI shows platform vs tenant vs permission codes, prepaid lock, DLT campaign create, and OpenAPI. Failed SMS is not auto-refunded on DLR in this build — documented residual.
Estimates are scope-based planning figures — not binding quotes. Taxes, carrier deposits, DIDs and third-party AI usage are scoped in discovery.
It is a multi-tenant messaging control plane you operate, with Kannel/Twilio/Gupshup as adapters.
No. Voice is FreeSWITCH CCaaS or UnifiedPBX — different products.
PE profiles, sender IDs and approved templates; toggleable DLT_VALIDATION_ENABLED.
Yes — parent_tenant_id tree. Margin rules should be confirmed in discovery.
Optional Cloud API sync; send path in this build is synchronous inside campaign create.
Wallet row lock + segmenter; insufficient balance → HTTP 400, no enqueue.
Kannel SMPP or HTTP providers — selected as routes.
API/UI local or VPS; Compose for Postgres/Redis; Kannel optional profile. Kubernetes not claimed.