Success Story · CRM Migration

From Chaos to Fully Automated — In Under 4 Weeks

A general contracting company in Texas was managing leads manually across multiple platforms — contacts scattered, follow-ups missed, and their team had no unified system to track jobs from inquiry to close. They came to me with Follow Up Boss as their CRM and a growing team that needed something better.

15
Pipeline stages built (including the nurture stages)
4 wks
From start to fully live
100%
Zero downtime migration

What we built together:

Full CRM migration Follow Up Boss → GHL
12-stage Active pipeline around their sales process
Automated SMS + email follow-up sequences
A2P 10DLC compliance — approved & operational
Lead sources + Webhook for automatic lead capture
Individual user accounts + call routing
Full team training + Loom video library
Complete handoff documentation
"This is the standard I bring to every project. Zero downtime. Fully documented. Your team owns it completely."
Want Results Like This? Let's Talk

n8n Data Automation

Automated Historical Data Pipeline & Knowledge Base

A home services contracting business had years of pricing history locked inside Estimate Rocket — a CRM/estimating platform with no public API and no export option. Every past proposal existed only as an individually rendered PDF, so there was no way to search, filter, or compare what had been charged for similar work before. Rather than opening over a thousand client records by hand, I built an automated pipeline in n8n to handle it end to end.

n8n scraper workflow pulling proposal PDFs from Estimate Rocket

Phase 1 — the scraper workflow: client sheet → project pages → proposal PDFs, downloaded straight into Google Drive.

n8n workflow parsing PDF text into structured knowledge base rows

Phase 2 — the parsing workflow: reading each downloaded PDF, extracting line items, and writing structured rows into the knowledge base.

1,394
Client records processed
3,325
PDF proposals downloaded
6 hrs
Total runtime

The approach

With no official API to work from, the platform's data structure had to be mapped by hand before any automation could run:

Mapping

Client → Project → Proposal

Mapped the relationship between client records, projects, and saved proposals by inspecting the app's rendered HTML and network requests.

Access

Two authentication paths, not one

  • Found a public, unauthenticated customer-portal URL pattern that served the actual proposal PDFs directly — no need to scrape behind a login for document retrieval.
  • Authenticated the read-side scraping (client/project pages) using a captured browser session token, since no API keys or OAuth flow existed.
Extraction

3,325 PDFs, downloaded automatically

Automated traversal from client → project → proposal, pulling every proposal PDF into Google Drive without a single manual download.

Parsing

Custom regex parser for unstructured text

PDF text extraction doesn't preserve the original table layout, so a custom JavaScript parser was built to pull each line item — description, unit price, quantity, and total — directly out of the raw extracted text.

Clean, Scalable Writes

Batches that fail safely and re-run

Processing ran in chunks of 50 records to stay within the automation platform's execution and memory limits, using an idempotent "append-or-update" write pattern so any batch could be safely re-run without creating duplicates.

Key challenges solved

No public API

Built the entire pipeline against a platform never designed for programmatic access, using session-based requests and careful mapping of internal ID relationships.

Sandboxed execution environment

The automation platform didn't support common HTML-parsing libraries, so hand-written regex parsers stood in as a substitute.

Execution limits at scale

Full-dataset runs initially failed on memory and timeout limits, so the pipeline was redesigned around small, resumable batches instead.

Data integrity at scale

Caught and fixed a parsing bug where quantities were misread from adjacent dollar amounts — an error that would have silently corrupted a large share of the dataset if it had gone unnoticed.

What we built:

Automated login and page navigation per client record
Extracted full pricing breakdowns (item, price, qty, date)
Auto-downloaded proposal PDFs into Google Drive
Batched, idempotent processing to handle scale reliably
"What would've taken weeks of manual copy-paste took 6 hours, fully automated — and left the business with a searchable pricing reference they'll use on every future estimate."
Want Results Like This? Let's Talk

Ready to Build Something Like This?

Let's talk. Book a free 30-minute discovery call and let's map out exactly what your business needs. No pressure. No obligation. Just a real conversation.

📅 Let's Talk — Book Your Free Call