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

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.


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.

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.

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.

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.

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.

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.

Tech stack & responsibilities
Stack
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