The Problem
Client onboarding for a business funding operator took 30 to 60 minutes per intake. Someone had to create the Drive folder structure, copy a financial spreadsheet template, fill the business info tab, look up state-specific banks, then create matching records in three separate Airtable tables (Onboarding, Repair, Funding) and link them manually to the Payment row if one already existed. Typos crept in. Steps got skipped. Funding records sometimes ended up orphaned because the operator forgot to link them to an existing payment.
The Build
I built a 35-node n8n pipeline triggered by the intake webhook. The workflow normalizes the form data, creates the client folder and a Credit Repair subfolder in Google Drive, conditionally uploads the Photo ID and Proof of Address when they're present, and clones the financial spreadsheet template into the new folder. It then writes the business info tab, fetches a per-state bank list, filters to the client's state, and populates the General Information tab with their banks pre-filled. The Airtable side creates three linked records in parallel: Onboarding, Repair, and Funding. After both record sets exist, an enrichment step writes the Onboarding reference into the Repair record so the ops team can navigate from any record to the others. The workflow then searches the Payment table by email and phone, links the new Funding record to the matching payment row if one comes back, and posts a Slack alert for ops to reconcile when no match exists.
The Outcome
Onboarding takes about two minutes from form submission instead of 30 to 60 minutes manual. The ops team stopped retyping the same data across Drive, Sheets, and three Airtable tables. Banks pre-populate from the client's state. Funding records auto-link to existing payment rows when the client paid before onboarding finished. Edge cases without a matching payment get a Slack alert immediately so ops can reconcile while context is fresh.