All projects
Saas
Built — not yet launched

LoudMouth — All-in-One Marketing Automation SaaS

LoudMouth is CountryDevs' own all-in-one marketing SaaS: cold email sent from a company's own mailboxes behind a deliverability engine, AI blog posts on the customer's own AI key, and social posts and Remotion video reels, in one workspace. Built, not launched.

For LoudMouth2026
  • Web app (workspace)
  • Marketing site
  • Node.js API (TypeScript)
  • BullMQ background worker
Send dashboard with KPI tiles, mailbox rotation bars and deliverability health list

Overview

LoudMouth is an all-in-one marketing app that CountryDevs designed and built as its own product. It puts the tools a small team usually pays for separately into one workspace with one credit wallet: cold email with a light CRM, an AI blog writer, a social calendar and a video reel editor, plus automations and agency sub-accounts.

Cold email is the core. Outreach goes out from the customer's own mailboxes, never a shared relay, behind a deliverability engine: a real DKIM key per sending domain, a warmup ramp, rotation across mailboxes, bounce backoff, a suppression list and one-click unsubscribe headers. The AI features run on the customer's own key for a supported AI provider or any compatible service. They research, write and score blog posts, and turn a one-line idea into a video reel built from one of four Remotion templates.

We built it as a TypeScript Express API on MongoDB with a separate BullMQ worker on Redis, and a Next.js 16 front end that carries both the marketing site and the app. It is not deployed and has no users, so this case study covers what was built and what is still open.

How does LoudMouth keep cold email out of spam folders?

LoudMouth sends from the customer's own mailboxes, never a shared relay, so the engine's job is to protect each mailbox's reputation. Our June 2026 review found that the first send path sent real mail and stopped there. The DKIM record it told users to publish held a placeholder key, outgoing mail was unsigned, and the warmup and health logic existed but was never called, so a new mailbox could send at full volume on day one. We fixed both.

A real key per domain

Adding a sending domain generates an RSA-2048 keypair. The public key goes into the DKIM record the setup wizard shows, beside SPF and DMARC. The private key is encrypted in the vault and never sent to the browser. SMTP mail is signed with it, and verification checks that the published p= value matches our key, not merely that some DKIM record exists.

Warmup, rotation and backoff

Rule Value
New mailbox 10 sends a day, then about +3 a day
Steady state 35 a day, ±5 random jitter
Hard ceiling 50 a day, in any state
Gap between sends 30–180 seconds, random
7-day bounce rate of 2% or more daily cap halved
Complaint rate of 0.3% or more mailbox rests for 7 days

A daily tick advances warmup and recomputes bounce rates from real send records. Each queued email goes to the healthy mailbox with the most capacity left, so volume grows by adding mailboxes, not by pushing one harder. Complaint-based resting is coded, but no complaint feed is connected yet, so that rate reads zero.

Guardrails before the queue

Before queuing an email, the scheduler stops the sequence if the address is suppressed, and skips the send if the workspace has no postal address, which every email must carry along with one-click unsubscribe headers (RFC 8058). Each send has a unique key per enrolment and step, and the sender claims a job atomically, so a duplicated queue message cannot send twice.

How does LoudMouth protect stored keys and keep reel previews identical to renders?

Envelope encryption for every credential

Mailbox passwords and tokens, AI provider keys, CMS credentials, social tokens and DKIM private keys all go through one SecretVault:

  1. Each secret gets a fresh 256-bit data key and is encrypted with AES-256-GCM.
  2. The workspace id is bound in as additional authenticated data, so a ciphertext copied into another workspace fails to decrypt.
  3. The data key is wrapped with a key-encryption key derived with scrypt from a master secret that exists only in the server environment. The storage format would not change if that key later came from a cloud KMS.
  4. Each record carries a version tag for future key rotation, and every retrieval through the vault writes an audit-log entry.

Records that need a secret hold a vault reference or the encrypted blob, never plaintext, and none of it is sent to the browser. The vault's tests cover the round trip, the absence of plaintext in the stored blob, refusal across workspaces, tamper detection and the audit entry.

One set of templates in two places

The reel editor previews a template live with Remotion's Player in the browser, and the worker renders the MP4 on the server with Remotion's renderer. If the two copies drift apart, the export stops matching the preview. So the four templates, the props schema, the theme and the audio helpers (including the rule for ducking music under a voiceover) are kept byte-identical in the front-end and back-end repos.

A SHA-256 checksum of those seven files is committed in both repos. A parity check, a Jest test in the backend and an npm script in the front end, fails if one copy changes without the other. When we checked in October 2026, both copies matched the committed value.

The same Zod schema validates what the AI returns when it turns a one-line idea into a reel, so a generated reel opens in the editor and renders without hand-fixing.

The challenge

A small team doing its own marketing usually rents a stack: a cold-email tool, a warmup service, a CRM, an AI writer, a social scheduler and a video editor, each with its own bill and login. Bundling them is the easy part. The hard part is cold email, where the failures are quiet and expensive. A new mailbox that sends at full volume on day one gets blocklisted, unsigned mail lands in spam, and a sequence that keeps writing to someone who unsubscribed is a legal problem.

An all-in-one tool also ends up holding everyone's keys: SMTP passwords, OAuth tokens, CMS credentials and AI provider keys. If that database leaked, every customer's mailboxes and accounts would go with it.

The solution

We built the send path around the customer's own mailboxes and put the deliverability rules in code rather than in a help article. Each sending domain gets its own RSA-2048 DKIM key, a daily scheduler ramps every mailbox from 10 to 35 sends a day and backs off unhealthy ones, and the scheduler checks suppression and compliance before it queues a single email. Every stored credential goes into a SecretVault that uses envelope encryption bound to the workspace.

The content side runs on the customer's own AI key, so we hold no platform model key. The autoblog researches topics, writes in a saved style, scores each draft and waits for approval before publishing to WordPress or a hosted blog. Reels use four Remotion templates that are byte-identical in the browser preview and the server render, and a checksum check fails if the two copies drift.

The impact

LoudMouth is built and not launched. loudmouth.app does not resolve, no payment provider is wired in, and there are no users, so we quote no usage figures. The code was committed between 18 and 23 June 2026, and at the last full run on 22 June the backend suite passed 182 tests. The screenshots come from a local run in October 2026 on fresh, made-up data.

Some parts are deliberately unfinished. Gmail and Microsoft 365 senders are written, but connecting those mailboxes needs Google and Microsoft OAuth apps, and reading replies automatically needs Google's CASA security assessment, so today mailboxes connect over SMTP and replies are marked by hand. Publishing supports WordPress and the hosted blog; Webflow, Ghost and Shopify are planned. LinkedIn and Instagram publishing is written against the real APIs but has not been run against live accounts. The October run also found a dashboard chart that reads a different response shape from the one the API sends, which is recorded for a fix.

Features

What we built into LoudMouth

Sending domains with a real DKIM key

Each domain gets its own RSA-2048 keypair. LoudMouth generates the SPF, DKIM and DMARC records to paste into DNS, then checks them live and requires the published DKIM key to match the one it holds.

Warmup and mailbox rotation

A new mailbox starts at 10 sends a day and adds about 3 a day up to 35, with ±5 random jitter and a hard ceiling of 50. Each email goes to the healthy mailbox with the most capacity left, 30 to 180 seconds after the last.

Health backoff

A daily check reads each mailbox's bounce rate over the last seven days and halves its cap at 2% or more. A complaint rate of 0.3% or more rests the mailbox for seven days once a complaint feed is connected.

Suppression and compliance

Unsubscribes, bounces and manual entries go on a per-workspace suppression list that is checked before every send. Every email carries one-click unsubscribe headers (RFC 8058) and a postal address, and a workspace without an address sends nothing.

Sequences, prospects and a pipeline

Sequences of up to five touches with A/B variants and merge fields, prospect imports that skip suppressed addresses, a drag-and-drop pipeline and a reply inbox across all mailboxes. Marking a reply stops that prospect's sequence.

AI autoblog with a review queue

Topic research, saved writing styles and generation on the workspace's own key. Each draft gets overall, SEO, readability and value scores and waits for approval before it publishes to WordPress or the hosted blog.

Bring your own AI key

A key for a supported AI provider or any compatible endpoint. Keys sit in the encrypted vault, and with no key set, generation stops with a clear message instead of falling back to a platform key.

Remotion reels and a video editor

Four templates (quote, product showcase, talking head, listicle) preview live in the browser and render to MP4 on the server. A one-line idea becomes a reel with on-screen copy, a voiceover on the workspace's own AI key, a music bed that ducks under the voice and stock b-roll.

Social calendar and publishing

Posts and reels are scheduled on a monthly calendar and published to LinkedIn as video posts, through its three-step upload, and to Instagram as Reels through the Meta Graph API.

Automations and agency sub-accounts

Rules with four triggers (a reply, a status change, a new prospect, a finished sequence) and five actions (enrol, tag, set status, suppress, notify). On the agency plan, client workspaces roll up with their plan, booked calls, emails sent and an estimated rebilling margin.

By the numbers
50
Hard daily send ceiling per mailbox, in any warmup state
4
Remotion templates shared byte-for-byte by preview and render
182
Backend tests passing at the last full run (22 June 2026)
4
AI provider types a workspace can bring its own key for
Screens

What LoudMouth looks like

Sending domains list with verification badges and record pills
Primary and lookalike sending domains with SPF, DKIM and DMARC status and the number of mailboxes on each — one still needs its records added.
DNS setup step listing TXT records with copy buttons
The domain wizard generates the exact SPF, DKIM and DMARC records to paste into the DNS provider, then verifies them live in the next step.
Mailboxes list with provider badges, warmup progress bars and daily caps
Gmail, Microsoft 365 and SMTP mailboxes with their warmup stage and daily send caps; outreach always sends from the customer's own mailboxes.
Sequence builder with steps on the left and the step editor on the right
The sequence builder lays out up to five email touches with day offsets, merge fields, stop-on-reply and business-hours sending.
Prospects table with status and tags
The prospect list with company, title, stage, source, tags and deal value, ready to filter and enroll into sequences.
Kanban pipeline with prospect cards in stage columns
A drag-and-drop pipeline from 'to email' through contacted, opened, replied, booked and won, with a deal value on every card.
Reply inbox with a thread list and the selected conversation
Replies from every mailbox in one inbox, each tagged with the prospect's stage; marking a reply stops that prospect's sequence.
Autoblog page on the review tab with draft posts and their scores
Autoblog's review queue: AI-written drafts with SEO and quality scores wait for approval before they publish to the customer's own site.
Video editor with a vertical reel preview and template fields
The reel editor previews a 9:16 template live in a Remotion player while the side panel edits its text, accent colour, voiceover and music.
Monthly content calendar with post chips on scheduled days
October's social posts laid out by the day they go out across LinkedIn and Instagram.
Automations list with triggers, actions, run counts and toggles
Trigger → action rules such as tagging and alerting on a reply or enrolling new imports into a sequence, each with an on/off switch and a run count.
Agency page with client workspace cards showing calls, sends and margin
On the agency plan, every client sub-account rolls up with its plan, booked calls, emails sent and rebilling margin.
Project details
Tech stack
TypeScriptNext.js 16React 19Redux ToolkitTiptapNode.jsExpressMongoDBMongooseRedisBullMQNodemailerRemotionZodAI provider SDKsJest
Timeline & team
2026
FAQ

Questions about this project

Does LoudMouth send cold email through its own servers?

No. Outreach goes out from the customer's own mailboxes, connected over SMTP today, and LoudMouth generates a DKIM key for each sending domain and signs the mail with it. Gmail and Microsoft 365 OAuth connections are written but wait on OAuth apps and Google's CASA assessment.

How does LoudMouth warm up a new mailbox?

A new mailbox starts at 10 sends a day and adds about 3 a day up to a steady 35, with ±5 random jitter and a hard ceiling of 50. A daily check halves the cap when the mailbox's seven-day bounce rate reaches 2%.

Whose AI does LoudMouth's autoblog run on?

The workspace's own: it brings a key for a supported AI provider or any compatible endpoint, and the key is stored in the encrypted vault. There is no platform key, so generation stops with a clear message when none is set.

Why does a LoudMouth reel preview match the exported video?

The browser preview (Remotion Player) and the server render use byte-identical copies of the same templates, schema, theme and audio helpers. A committed SHA-256 checksum, checked in both repos, fails if either copy drifts.

More work

Other things we shipped

All projects
Storafleet fleet overview with storage totals, trend line, transfers list and per-provider footprint barsFeatured
Saasfor Storafleet

Storafleet — Multi-Cloud Storage Control Plane

Storafleet is CountryDevs' own SaaS control plane for object storage. Teams connect buckets they already own on 50+ providers, including AWS S3, Cloudflare R2, Backblaze B2, Wasabi and MinIO, then browse, migrate, search, secure and cost-check them from one console.

Next.js 15ReactRedux ToolkitNode.js+11
50+Storage providers in the connection roster
Case study
Pakka Logistics home page hero on desktopFeatured
Mobile Appfor Pakka Logistics

Pakka Logistics — Porter-Style Delivery Platform

Pakka Logistics is a Porter-style delivery platform for India. We built all of it: Android apps for customers and drivers, a business portal, an operations console and the website. The web platform is live; the Android apps are being prepared for Google Play.

React NativeTypeScriptRedux ToolkitNode.js+12
96.3%API routes exercised by a probe before launch (260 of 270)
Case study
Superadmin stories grid with photo storiesFeatured
Mobile Appfor Slic Solutions Private Limited

LetSlic — Social Media App with Group Chat, Stories and Premium

LetSlic, listed on Google Play as Slic, is a social app for photo posts, 24-hour stories and real-time chat with group moderation. We built it for Slic Solutions Private Limited: the React Native app, two Node.js APIs, the superadmin console and the website, plus Premium and ads.

React NativeTypeScriptReduxNode.js+13
13Months from first commit to handover (Jun 2025 – Jul 2026)
Case study
Got a project?

Let's build the
next one together

Tell us what you're trying to ship. We'll come back with a scope, a timeline, and a fixed price — usually within 48 hours.

Not ready for a full build? Start with a fixed-price Discovery Sprint, or get a code audit of an app someone else built.