AXS
AlphaXSender
Features

Everything to run your own send.

Multi-engine delivery, your own Ubuntu nodes, Microsoft 365 integration, an AI Leads Enricher, an Email Verifier, live DNS validation, real-time controls, and a configurable database backend — all in a single Windows desktop app. Your infrastructure stays yours; the platform is just where you buy and manage your license.

Send modes

Pick the engine that fits the campaign.

Built-in MTA

Direct-to-MX delivery from the desktop on port 25 with full DKIM signing and per-domain rate limits. The radio is auto-disabled when port 25 is blocked on the network.

  • Live port-25 probe at startup
  • Per-recipient MX resolution
  • RSA-2048 DKIM signing
  • Bounce + retry classification

Custom SMTP rotation

Pool any SMTP relays you control — provider-supplied or self-hosted — and rotate through them with the strategy that fits your reputation profile.

  • Round-robin · Weighted · LRU · Random
  • Hourly + daily caps per account
  • Outbound proxy (SOCKS5/4/4a, HTTP)
  • Health score — auto-disable failing accounts

Node Delivery

External Ubuntu MTAs running Postfix + OpenDKIM + Redis + PostgreSQL + a Python FastAPI control agent. Provisioned end-to-end over SSH from inside the desktop.

  • One-click SSH install (Ubuntu 20–26)
  • 15s health polling + categorized error feed
  • Per-node hourly + daily limits
  • Postfix queue depth visible in real time
Office B2B

Send through your own Microsoft 365 mailboxes.

Connect Outlook / Microsoft 365 accounts via Microsoft Graph — device-code OAuth or a pasted token bundle. The desktop harvests contacts, classifies them by ESP, and dispatches campaigns through each user's own Mail.Send permission with throttling that matches Microsoft's published limits.

  • Device-code OAuth — no app registration required
  • Token-paste import for harvested sessions
  • Contact harvesting from inbox + sent + folders
  • ESP bucketing (Gmail / Outlook / corporate / etc.)
  • Default 30/min · 8,000/day caps per account
  • Schedule sends to fire while the app is running
POST /me/sendMail
Authorization: Bearer eyJ0eXAi…
{
"message": {
"subject": "Hello {{fromname}}",
"body": { "contentType": "HTML", … },
"toRecipients": [...]
},
"saveToSentItems": false
}
202 Accepted · graph.microsoft.com
[stats] sent 247 · failed 0 · throttled 0 · 28/min
AI Leads Enricher

Paste emails. Get qualified leads.

Drop a list of email addresses. The desktop fetches each company's website, runs the content through the AI you configured, and emits a CSV with company name, industry, business summary, services, and address. The enriched fields then resolve as merge tags inside any campaign.

Two AI providers, your choice.

Point it at OpenAI (or any OpenAI-compatible endpoint — Together, Groq, Anthropic-via-proxy, your own gateway) when you want frontier quality. Point it at a local Ollama instance when you want zero per-call cost and full data confinement on your own hardware.

  • OpenAI-compatible: custom base URL, custom model, DPAPI-encrypted API key
  • Local LLM via Ollama (default llama3.1:8b) — runs on your machine
  • Configurable temperature, request timeout, and cache TTL
  • Per-domain cache — already-enriched companies never re-hit the LLM
  • Optional global proxy routing for site fetches (off by default for accuracy)
  • One-click "Test connection" — verifies provider, model, and key
PROVIDERollama MODELllama3.1:8b CACHED148 domains
[fetch] ceo@acme-co.com → acme-co.com → 200 OK · 14.2 KB
[llm] prompt 1,842 tok · response 312 tok · 1.4s
[ok] Acme Co · Manufacturing · "industrial-grade adhesives…"
[fetch] hi@bluelaw.io → bluelaw.io → 200 OK · 8.9 KB
[ok] Blue Law LLP · Legal · "boutique IP litigation firm…"
[cache] orders@northstar.dev → hit · skipped LLM
[skip] noreply@bouncer.test → blocklisted ESP domain
[csv] email · company · industry · summary · services · address
[done] 247 enriched · 12 cached · 4 skipped · 3m 22s
Step 1

Paste emails or load .txt

The enricher dedupes input and groups by company domain so each website is fetched once, no matter how many addresses share it.

Step 2

Live status, cancel anytime

Provider, model, cache count, current phase, and progress sit in the status strip. Pull the plug mid-run and partial results are kept.

Step 3

Push into a campaign

"Save as Recipients" or "Use in Campaign" sends the leads — and their enriched fields — straight to the Campaign Builder.

Per-recipient merge tags from enrichment

Once a list is enriched, the standard placeholder set expands. Every campaign sent to those recipients can address them by what their company actually does — not just by their email address.

{{company}} → "Acme Co"
{{industry}} → "Manufacturing"
{{summary}} → "industrial-grade adhesives for…"
{{services}} → "epoxies · sealants · custom blends"
{{address}} → "1420 Industrial Pkwy, Akron OH"

35-category industry pick-list · website fetch with proxy fallback · result caching · DPAPI-encrypted API key · works offline when paired with a local Ollama model.

Email Verifier

Validate every address before you send.

Plug in your own credentials for the deliverability provider you already pay for and the desktop runs each address through it — concurrent, normalised, and streamed straight into a CSV alongside the live grid. The Valid set ships to a Recipients list or directly to the Campaign Builder in one click.

Three providers. Your key, your credit.

Pick the verifier you've already provisioned with your own credit. The desktop normalises every backend's native vocabulary into a single four-bucket verdict so your campaign filters work the same regardless of which API spent the credit.

  • NeverBounce · Debounce.io · MillionVerifier
  • Normalised verdicts: Valid · Risky · Invalid · Unknown
  • Role · disposable · catch-all flags surfaced per row
  • Bounded concurrency (1–50) — never trip a rate limit
  • Streamed CSV — kill mid-run, partial output is recoverable
  • One-click "Test connection" — verifies the key without burning a credit
  • All keys DPAPI-encrypted at rest; inactive providers' keys kept so you can flip back without re-pasting
PROVIDERNeverBounce CONCURRENCY5 PROGRESS247 / 247
[✓ valid] ceo@acme-co.com · valid · good
[✓ valid] hi@bluelaw.io · valid · good
[~ risky] orders@northstar.dev · accept_all · catch-all
[~ risky] info@globex.com · disposable · disposable
[✗ invalid] bademail@nonexistent.zz · invalid
[~ risky] contact@startupco.io · valid · role
[? unknown] admin@quietdomain.org · unknown · greylisted
[csv] email · verdict · provider · result · quality · role · disposable · catch_all
[done] 180 valid · 32 risky · 28 invalid · 7 unknown · 0 errors · 1m 48s
Step 1

Paste, load, or push from a sort

The verifier dedupes input automatically and shows a unique-count before you commit. Drop a .txt, paste from clipboard, or send a sorter bucket straight in.

Step 2

Live counters, cancel anytime

Provider, status, progress, and per-bucket counters (Valid · Risky · Invalid · Unknown) update in real time. Stop and the partial CSV stays on disk.

Step 3

Ship Valid into a campaign

"Save valid as Recipients" or "Use valid in Campaign" filters to the green-bucket addresses and pushes them into the Campaign Builder.

Per-request timeout · optional global proxy · streamed CSV with role/disposable/catch-all columns · credentials probe never burns a verification credit.

example.com203.0.113.10
A ok MX ok SPF wrong DKIM missing rDNS unknown
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BA…
Domains

Live DNS validation. Per record. Per domain.

Every sending domain you attach to a node gets the full validation chain — A, MX, SPF, DKIM, rDNS — checked against public resolvers and rendered as colored chips. The agent generates the DKIM keypair on the node; the desktop hands you the exact records to publish in your DNS.

  • Auto-generated RSA-2048 DKIM keypair per (selector, domain)
  • Click Verify — chips flip in seconds
  • SPF authorisation check against the node's public IP
  • rDNS / PTR alignment with the registered domain
  • Full DNS record sheet copy-to-clipboard
Operations

Real-time control plane.

A live dashboard that aggregates every active engine — Campaign sends, Office B2B, scheduler, node fleet — into a single view.

Live activity feed

Last 200 entries from every subsystem in one stream — color-coded per source.

Pause / Resume

Hit pause on any running campaign or Office send straight from the dashboard. State survives the round trip.

Status chips

License · Port 25 · Tracking · Proxy · Nodes — at-a-glance health for every dependency.

System health

Per-subsystem dot grid in the right rail: SMTP rotation, Node delivery, License, Port 25, Tracker, Proxy.

Authoring

Templates, placeholders, attachments.

Built-in WYSIWYG editor with Visual / HTML toggle. Templates with one-click placeholder insertion. Per-recipient attachment naming. Optional render-as-image for HTML that needs to land pixel-perfect.

  • {{email}} · {{fromname}} · {{rand_string_8}} · {{tracking_url}}
  • Placeholder picker side-panel with descriptions
  • Templates shared across Campaign and Office B2B
  • URL pool — {{url}} picks one at random per recipient
Storage

Local SQLite by default. Configurable for what you actually run.

The desktop ships with a single-file SQLite store next to the EXE. Settings → Database lets you point it at MySQL, MariaDB, or PostgreSQL — connection details are tested live with the official driver and DPAPI-wrapped at rest.

  • Local · MySQL · MariaDB · PostgreSQL
  • Live connection probe with version readback
  • SSL-mode pass-through
  • Passwords DPAPI-encrypted (Windows DP API)

See it run.

Pick a plan, get a license, ship your first campaign today.

View pricing