Internal platform · 2022–2025

PawsCRM – high-volume email scrubbing & ESP handoff

PawsCRM is the central control panel for cleaning large email lists, orchestrating scrubbing vendors, and handing clean segments off to MailWizz. I designed and built the system end to end – database schema, Node/Express API, cron workers, vendor integrations, and the React/MUI dashboard operators use every day.

Role
Full-stack developer
Stack
React, TypeScript, Material UI, Node/Express, TypeORM, PostgreSQL, MillionVerifier, EmailOversight, MailWizz API
Status
Internal operations tool · actively used
PawsCRM dashboard overview

Scrubbing overview & KPIs

The main dashboard surfaces the numbers ops teams care about most: scrubbed today, blended pass rate across vendors, valid vs. risky emails, and raw volume entering the pipeline. I designed the layout to feel like a focused SaaS home screen while keeping the original KPIs and pipeline narrative intact.

  • • KPI cards anchored to the global header for scrubbed today, pass rate, valid and risky counts.
  • • Recharts-based visuals for cumulative profiles over time and daily raw records.
  • • A pipeline banner that explains each processing stage from scrubbing to ESP-ready lists.
PawsCRM dashboard KPIs
PawsCRM login screen

Authentication & 2FA

Authentication is built around JWTs and time-based one-time passwords (TOTP). The login and 2FA screens follow the same visual language as the main app so the flow feels cohesive instead of bolted on.

  • • Email/password login backed by a Node/Express auth API and JWT sessions.
  • • Server-generated TOTP secrets and QR codes for enrolling authenticator apps.
  • • A dedicated 2FA verification screen that uses the same card layout and typography.
  • • Automatic redirect when an already authenticated user hits the login route.

Core list & scrub management screens

Profiles table

Central view of all scrubbed profiles, including name, phone, country, and status. Powered by a reusable data table component with server-side pagination and filters for large datasets.

PawsCRM profiles table

Raw table explorer

Row-level visibility into raw records with address details and scrub outcomes. Useful for investigating edge cases and tracking how raw data moves through the pipeline.

PawsCRM raw table

Scrubs activity

Live history of scrub runs with reason codes, vendors, and timestamps for auditing. Backed by cron workers that pull batches, call vendor APIs, and persist responses.

PawsCRM scrubs screen

Scrub vendors

Admin area for managing vendor integrations like MillionVerifier and EmailOversight, including cost per record and metadata used by the scheduler when picking a vendor.

PawsCRM scrub vendors screen

Job orchestration & ESP handoff

Create job wizard

Form for defining recurring jobs: select source lists, choose ISPs, configure daily caps, and map output into MailWizz lists with a planned launch date. The form writes to a jobs table that cron workers consume.

PawsCRM create job form

Jobs timeline

High-density jobs table showing status, scrubbed counts, rejections, and ESP metrics over time so ops can see how cleaned data performs once it lands in campaigns.

PawsCRM jobs table

Tech stack & responsibilities

Stack

ReactTypeScriptMaterial UIReact QueryFormik + YupReact RouterNode.jsExpressTypeORMPostgreSQLNode-cron / workersMillionVerifier APIEmailOversight APIMailWizz APIJWT authTOTP 2FADockerNginx

What I did

  • • Designed the PostgreSQL schema for profiles, scrubs, jobs, vendors, and raw tables.
  • • Implemented a Node/Express API layer and TypeORM models to expose scrub results, jobs, and vendor data to the frontend.
  • • Built cron workers that pull queued jobs, call MillionVerifier and EmailOversight, store the responses, and generate clean segments for MailWizz.
  • • Created the React/MUI dashboard, tables, and job creation flows used by ops to control the entire scrubbing pipeline.
  • • Implemented JWT-based auth, TOTP 2FA, and Dockerized deployment behind Nginx for production use on a VPS.

Need a full-stack developer to design and build an internal dashboard or high-volume data pipeline?

Contact me about a project