Open-Source Cold Email & Warmup Platform
Warmbly is the open-source platform for cold email: warm your mailboxes, send campaigns, and triage every reply. Run it on our cloud or self-host the whole thing.
Find companies, resolve industries to real NAICS codes with confidence scores, and turn saved lists into outreach.
MarketingTypeScript · CSSGitHub @daniyalsamimahmadOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
AI-powered B2B lead generation: search 1,200+ decision makers, build lists, launch personalized outreach, validate every contact. Next.js + NestJS + Postgres + Redis + BullMQ.
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A B2B lead generation platform. Search a database of companies and decision makers, save the good ones into lists, and launch AI-personalized outreach over email and LinkedIn. Email and phone validation is built in, so bad data never reaches a campaign.
Live demo: saasquatch-signal.vercel.app
Demo sign-in: [email protected] / demo1234 (or the one-click demo button on the login page)
The first request after a quiet spell can take up to a minute while the free-tier API wakes up. Everything after that is instant.Read the full README ↗A B2B lead generation platform. Search a database of companies and decision makers, save the good ones into lists, and launch AI-personalized outreach over email and LinkedIn. Email and phone validation is built in, so bad data never reaches a campaign.
Live demo: saasquatch-signal.vercel.app
Demo sign-in: [email protected] / demo1234 (or the one-click demo button on the login page)
The first request after a quiet spell can take up to a minute while the free-tier API wakes up. Everything after that is instant.
| Layer | Tool | Where and why |
|---|---|---|
| Frontend | Next.js 15 | The web app in apps/web; server components fetch from the API so nothing loads client side unauthenticated |
| Frontend | React 19 + TypeScript | UI and type safety across the whole monorepo |
| Frontend | Tailwind CSS v4 | All styling, through design tokens for colors, spacing, and dark mode |
| Frontend | shadcn/ui + Radix | Accessible component kit: dialogs, dropdowns, tables, tabs, selects |
| Frontend | Auth.js v5 | Login sessions; the API's JWT rides inside the session cookie and never reaches the browser |
| Frontend | Zod | Validates login and signup forms before they hit the server |
| Backend | NestJS 11 | The API in apps/api: modular controllers and services with guards and dependency injection |
| Backend | PostgreSQL | System of record for companies, contacts, lists, campaigns, and messages |
| Backend | Prisma 6 | ORM, schema migrations, and the seed script (400 companies, 1,206 contacts) |
| Backend | Redis | Caches search results and facets, and backs the job queues |
| Backend | BullMQ | Queues for AI draft generation, sending, and day-delayed follow-up steps |
| Backend | Passport JWT + bcryptjs | Token auth and password hashing |
| Backend | class-validator + Throttler | Request validation and per-route rate limits |
| Backend | Swagger | Self-documenting API at /docs |
| Backend | libphonenumber-js | Offline phone validation: E.164, country, line type |
| AI and data | Google Gemini (Groq fallback) | Plain-English search parsing, sequence design, and per-lead personalized emails |
| AI and data | Apollo.io | Live company enrichment by domain ("Import from web") |
| AI and data | Hunter.io, Brevo, ZeroBounce | Wired slots for people by domain, real email sending, and deep email verification; the app runs in demo mode without keys |
| Infra | Docker + Compose | One-command production-shaped stack: postgres, redis, api, worker, web |
docker compose up --build
docker compose --profile seed run seed # one time: migrate and load demo data
Web on http://localhost:3000, API and Swagger docs on http://localhost:4000/docs.
# 1. infra: boots an embedded PostgreSQL (:5432) and Redis (:6379)
cd apps/api && npm i && node scripts/dev-infra.mjs &
# 2. api
cp .env.example .env # set JWT_SECRET, add provider keys if you have them
npx prisma migrate dev && npm run seed
npm run start:dev # :4000, queues run in-process
# 3. web
cd ../web && npm i && npm run dev # :3000
Tip: set DAY_MS=60000 in the API env to watch a multi-day sequence play out in minutes.
The repo carries a render.yaml blueprint that stands up the API (Docker, health-checked, queues in-process) and a Redis instance on Render's free tier. Postgres lives on Neon, and the web app deploys to Vercel with API_URL pointing at the Render service. All keys are entered in each dashboard and never committed.
Note for free tiers: the API spins down after about 15 idle minutes, so the first request after a quiet spell takes half a minute to wake.
| Path | What's there |
|---|---|
apps/api/src/search | Filtered search and facets (Redis-cached), Apollo and Hunter enrichment |
apps/api/src/ai | LLM client with Gemini-to-Groq fallback, the writer, the NL parser, the sequence designer |
apps/api/src/campaigns | Brief to campaign, step editing, contact management, launch |
apps/api/src/queues | The generate and send processors, plus the standalone worker entrypoint |
apps/api/src/validation | Email and phone validators, bulk mode, history |
apps/web/app/(app) | Dashboard, find, lists, campaigns, validate, settings |
apps/web/lib/api.ts | The one HTTP client every server component and action goes through |
| Infra | embedded-postgres + redis-memory-server | Real Postgres and Redis for local dev with zero installs, no Docker needed |
| Infra | Render, Neon, Vercel | Hosting: the API with Redis, the database, and the web app |