A closer look at the CRM migrations and automation pipelines I've delivered — what the business needed, how I built it, and what changed.
Success Story · CRM Migration
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.
What we built together:
n8n Data Automation
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.
Phase 1 — the scraper workflow: client sheet → project pages → proposal PDFs, downloaded straight into Google Drive.
Phase 2 — the parsing workflow: reading each downloaded PDF, extracting line items, and writing structured rows into the knowledge base.
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:
Mapped the relationship between client records, projects, and saved proposals by inspecting the app's rendered HTML and network requests.
Automated traversal from client → project → proposal, pulling every proposal PDF into Google Drive without a single manual download.
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.
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
Built the entire pipeline against a platform never designed for programmatic access, using session-based requests and careful mapping of internal ID relationships.
The automation platform didn't support common HTML-parsing libraries, so hand-written regex parsers stood in as a substitute.
Full-dataset runs initially failed on memory and timeout limits, so the pipeline was redesigned around small, resumable batches instead.
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:
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