DomainFlow.ai — AI Domain-Sales Automation
6/24/2026

Screenshots below are from the live product with customer data (domains, buyer names, companies, emails, and figures) intentionally blurred.
Overview
DomainFlow.ai is a full‑stack SaaS platform that automates the entire premium domain‑sales outreach workflow. Portfolio owners and brokers upload their domains; the platform uses AI to research likely buyers, generate personalized email pitches with follow‑up sequences, run multi‑step drip campaigns with deliverability/warmup management, and track every opportunity from first touch through escrow to a closed deal — all from one operator dashboard.

Architecture
- Frontend (
client/): React 19 + Vite 7 + Tailwind 4, React Router 7, Axios, Stripe.js. A single SPA that also hosts the admin under role‑gated/admin/*routes - Backend (
server/): Express 5 + MongoDB (Mongoose 9), JWT auth, Nodemailer, Multer/csv/xlsx upload - Async engine: Redis + BullMQ workers process the heavy, rate‑limited work off the request path — buyer research, pitch generation, warmup scheduling, and campaign monitoring
- Multi‑tenant: row‑level isolation by
ownerId, with admin override for cross‑tenant operations
[client] → Dashboard, Upload, Domain Manager, Leads, Pitches, Campaigns,
Deals, Escrow, Billing, Preferences + Admin/* (warmup, costs, health…)
[workers] → simplifiedResearch · advancedResearch · simplifiedPitch · advancedPitch
warmupWorker · campaignWorker · campaignMonitorWorker · leadPitch
[models] → User, Subscription, CreditLedger, Domain, Lead, Deal, Campaign,
SendingAccount, SendingDomain, Escrow, Commission, Invoice, CostEntry
Domain Portfolio & Management
- Upload single domains or bulk CSV/XLSX with asking price, floor price, discount %, and portfolio tags
- Domain Manager: searchable, filterable catalog with per‑domain status progression (Uploaded → In Research → Research Complete → Pitch → Outbound → Finished), bulk actions (research, generate pitches, schedule campaigns, change status)
- Domain detail: per‑domain leads, pitches, campaigns, deals, and cost breakdown in one place, with research/throttle configuration


AI Buyer Research & Pitch Generation
- Buyer discovery in two tiers: a simplified mode (Perplexity finds candidate buyer companies, RocketReach enriches decision‑maker contacts) and an advanced mode that adds SerpAPI verification, strategic‑fit scoring, buyer ranking, and TLD‑variant analysis
- Personalized pitches via OpenAI (
gpt-4o-mini): two sender personas, Instantly placeholders ({{first_name}},{{company_name}}), spintax for per‑send uniqueness, and multi‑step follow‑up sequences - Lead Approval Queue: every AI‑generated lead is scored (fit) and reviewed before it can go out — bulk approve/reject, inline pitch editing, and one‑click regeneration

Email Campaigns & Deliverability
- Campaign sync pushes approved leads into Instantly.ai as scheduled drip campaigns, then continuously pulls back analytics (sends, opens, replies, bounces, unsubscribes)
- Warmup Manager: sending accounts ramp through health‑aware phases (not started → warming up → warm → cold ramp → fully active → recovery) with per‑account daily limits, health scores, and bounce tracking
- Sending‑domain DNS: SPF / MX / DMARC / CNAME setup and verification through the Cloudflare and Namecheap APIs to protect deliverability



Deals, Escrow & Billing
- Deal pipeline: track prospects through lead → interested → negotiating → closed‑won/lost, with offer/final pricing and logged meetings
- Stripe escrow: fund (PaymentIntent), release (capture + transfer), dispute, and refund flows, with Connect commission tracking per deal
- Subscription billing: tiered plans with a per‑user credit wallet and an append‑only credit ledger; every paid operation (research, pitch, sync) is metered against credits
Advanced Implementation
Async pipeline (BullMQ workers)
// server — heavy, rate-limited work runs off the request path
researchQueue.add('advanced', { domainId, ownerId });
new Worker('advancedResearch', async (job) => {
const buyers = await perplexity.discover(job.data); // + SerpAPI verify
const contacts = await rocketreach.enrich(buyers); // decision-makers
await Lead.insertMany(scoreAndRank(buyers, contacts)); // fit scoring
});
Cost metering per operation
// every external call is recorded for per-service / per-domain cost analytics
await CostEntry.create({ domainRef, service: 'openai', operation: 'pitch', units, unitCost, totalCost, phase });
What made it work
- A clean separation between synchronous UX (dashboard, approvals, deals) and asynchronous heavy lifting (research, pitching, warmup) via Redis/BullMQ
- AI used where it compounds — buyer discovery and pitch drafting — but always behind a human approval gate
- Deliverability treated as a first‑class concern: warmup phases, DNS authentication, and account health baked into the campaign engine
- Full cost and credit accounting, so every AI/API operation is metered, attributable, and billable
Deliverables
- Domain portfolio management (single + bulk CSV/XLSX upload)
- AI buyer research (Perplexity + SerpAPI + RocketReach)
- Personalized pitch generation with follow-up sequences (OpenAI)
- Email campaigns + warmup & deliverability (Instantly.ai, Cloudflare/Namecheap DNS)
- Deal pipeline, Stripe escrow, commissions & subscription billing
- Admin console (users, costs, system health, sending accounts)