DominaresTools

Nothing reaches a customer's phone or inbox unless every rule you set says yes.

cleartosend puts one gate in front of every text, email and call your software sends. Approval, opt-outs, quiet hours, calling hours and daily caps are checked before anything reaches a provider, and an audit finds the code that calls Twilio, SMTP or an email API without asking the gate.

Buy cleartosend for $99

One payment of $99, plus sales tax where it applies, and every future update. Delivered as a private GitHub repository you're invited to.

What it does

Every rule in one gate
A message goes out only if it is approved, its channel is on, the recipient has not opted out, it is outside quiet hours (and inside calling hours for a call) and the daily cap allows it. A refusal names every rule that failed, not just the first.
Held, not dropped
A message stopped by quiet hours, calling hours, a daily cap or a provider that isn't set up is held and goes out on a later sweep. The time zone is required; there is no default.
No double sends
A task is saved as sending before the provider is called, the sweep takes a lock, and status changes are compare-and-set. A crash leaves a task for you to settle, never a second send.
Opt-outs read from real replies
Carrier keywords such as STOP, UNSUBSCRIBE and REVOKE, short replies like "please stop" and sentences like "quit texting me", while "remove my late fee" and "stop the noise next door" are left alone. An opt-out that cannot be recorded raises an error instead of reporting success.
A suppression list that fails closed
Phone numbers are stored as digits with the country code, and email addresses lowercased without display names. If the list cannot be read, nothing is sent until it can.
An audit for sends that skip the gate
cleartosend audit reads your Python and reports file:line for direct Twilio, SMTP, Django, SendGrid, Resend, SES and other provider calls, and exits non-zero so it can run in CI. A pytest helper runs the same check in your test suite.
Senders and storage you can swap
Twilio SMS and voice (Messaging Services included) and email through Resend or SMTP, on the standard library with no SDK. SQLite is the default store; any other provider or database plugs in through a small protocol.

After you buy

pip install ./cleartosend
export CLEARTOSEND_POLICY=cleartosend/examples/policy.json CLEARTOSEND_DB=demo.db
cleartosend queue add --channel sms --to "(555) 123-0000" --body "Your appointment is tomorrow at 10:00."
cleartosend check --channel sms --to "(555) 123-0000" --status pending --at 2026-06-22T22:30
cleartosend audit cleartosend/examples/reminders_before.py

What you get

cleartosend 1.0.0: the Python library and the cleartosend command, with 419 automated tests. Python 3.10 or newer.

A commercial license. Use it and change it in your own projects and your clients' projects. Don't share or resell the source. Read the license.

Every update. New versions land in the same repository; git pull to get them.

How buying works

  1. Enter your GitHub username. You'll see the account before you pay, so you can check it's yours.
  2. Pay $99, plus any sales tax shown at checkout, on Stripe's checkout page.
  3. Accept the invitation GitHub emails you. Signed in as that account, you'll also find it at github.com/dominares-tools/cleartosend/invitations. Invitations expire after 7 days; you can get a new one any time.
  4. Clone and install:
    git clone https://github.com/dominares-tools/cleartosend.git
    pip install ./cleartosend

Questions

Do I need GitHub?
Yes. Access is a read-only invitation to a private repository, sent to the GitHub account you choose.
Can I get a refund?
Yes, within 14 days, no questions asked. Access ends when the refund goes through. Refund policy.
Who takes the payment?
Stripe. Your purchase is sold through Link, Stripe's checkout service, which also works out sales tax and sends your receipt.
Something wrong?
Email josephlinares02@gmail.com. Every buyer of a tool shares its repository, so support happens by email rather than in GitHub issues.