Clarion

A SaaS for advocacy groups to text their supporters at scale. Import your list, pick who to reach, and send bulk SMS that stays on the right side of the rules and actually gets read. I designed and built the whole thing, and it's going live with its first organization.

PROJECT
Self-initiated SaaS product
ROLE
Designer & developer, end to end
STACK
Laravel · React · PostgreSQL
A live campaign screen: 22 targeted, 18 delivered, 2 failed, 2 skipped, with per-recipient delivery status
FIG. 01 · Live delivery, per recipient: delivered, failed and skipped stream back from the carrier as the campaign sends.
01 · THE PROBLEM

Reach a whole base by text, without the enterprise weight.

Advocacy groups live and die by turnout, and a text still gets read when an email doesn't. But the bulk-texting tools out there are built for enterprise budgets and enterprise complexity, and the riskiest part, staying compliant with opt-outs, STOP and HELP replies, and 10DLC rules, is the easiest to get wrong. A smaller group just wants to import a list, write one good message, and send it safely, without babysitting a browser tab or fearing the bill.

Enterprise pricing and setup for something a group sends in bursts, not daily.
Opt-outs, STOP/HELP and 10DLC compliance are easy to get wrong, and costly when you do.
Sending thousands of texts from a page you can't close until it finishes.
02 · WHAT I BUILT

The whole platform, one developer, end to end.

Multi-tenant from the core
Each organization is its own isolated tenant, with its own contacts, campaigns and settings, set up from a platform admin. One codebase serves many groups, and no tenant can ever see another's data.
Compose and personalize
Merge fields for first name, custom fields and a donation link, with a live character and segment count, so whoever writes the message sees exactly what will go out and what it will cost.
Background sending, live delivery
Campaigns run on a queue, so closing the tab never stops a send. Each recipient's status comes back from the carrier in real time: delivered, failed, or skipped for an opt-out.
Billing and compliance, built in
Stripe billing with a free tier for nonprofits, bring-your-own-Twilio so each group owns its sender and reputation, and automatic opt-out handling with STOP/HELP replies and a 10DLC-ready setup from day one.
Composing a campaign with merge-field chips, a live segment count and an audience summary
FIG. 02 · Composing a campaign: merge fields, a live segment count, and opt-outs skipped automatically.
The contacts screen: total, opted-out and active counts, CSV import, and a list of supporters
FIG. 03 · Contacts: CSV and XLSX import deduped by phone, with opt-outs tracked and excluded on every send.
The platform admin tenants table listing two organizations, each with its own contacts and campaigns
FIG. 04 · The platform admin: every organization is its own isolated tenant, free or billed independently.
THE BUILD
I built Clarion on my own, front to back: the multi-tenant core, Stripe billing, the Twilio pipeline, and the compliance work. Doing every layer myself kept the decisions consistent, which counts on a product people rely on to get messages out.
NEXT CASE STUDY
AccessHub
© 2026 Priyank Maniar · Independent software developer ← Back to the surface