Case study
Swipe CRM: lead qualification in a swipe
How we built our own lead qualification CRM: website screenshots in, a four way decision per lead, a call list out as CSV. Next.js, PostgreSQL and Playwright, built in three weeks.
Home / Swipe CRM

The problem
Forty seconds a lead, and no shared view
Our outbound team was qualifying thousands of scraped business leads by opening each website in a browser tab, judging it, and typing a verdict into a spreadsheet. Around 40 seconds a lead, no shared view of who had reviewed what, and duplicates slipping into call lists.
What we built
Four parts, three weeks
Import pipeline
CSV exports from our scrapers are imported with deduplication on domain and phone number, so a business appears once no matter how many lists it came from.
Automatic screenshots
A Playwright worker visits every website and stores a thumbnail, a hero shot and a full page capture, so the reviewer never leaves the CRM.
Four decisions per lead
Each lead shows the screenshots and the business data. The reviewer swipes into one of four buckets, and the decision, the reviewer and the time are recorded.
Call lists on demand
Any filtered bucket exports as a CSV call list with the fields the callers need. Team logins, a shared password gate and a session log keep the review honest.
Results
What changed
Stack
Built with
The same stack we use for client systems. Everything runs on our own accounts and could move to another provider in an afternoon.
- Next.js application
- PostgreSQL on Neon
- Playwright screenshot worker
- S3 compatible file storage
- Team logins and audit log
- CSV import and export
Swipe CRM is our own internal tool, built the same way we build for clients. We show it because we can share every detail; client systems are described only with permission.
Have a process like this one? Describe it and we will quote the build.
A 30 minute written brief from you, a fixed price and a two page scope from us within two business days. No call required, no obligation.