Skip to main content
Back to projects

Salesforce Record Import Tool

A full-stack web app that replaced manual vlookup-based data imports into Salesforce — OAuth for access control, matching algorithms to resolve emails to ContactIDs and websites to AccountIDs, a user review step before commit, and BigQuery for persistent audit logging.

node.jsreacttypescriptsalesforceoauthbigqueryantigravity

Before this tool, importing records into Salesforce at Builder's Vision meant spreadsheets — vlookups and index matches to manually relate external data to existing Contacts and Accounts. It worked until human error entered the picture, which it did regularly when copying in volume. A single bad paste could misrelate dozens of records with no audit trail.

Scoping the Problem

I ran a scoping process using the BMAD method to map the actual user need before writing a line of code: what data was being imported, where errors were entering the process, and what a user needed to see to feel confident hitting confirm. End user expectations drove the design as much as the technical requirements did.

What I Built

A Node.js / React / TypeScript web application with three key layers:

Access control — OAuth verification ensures only authorized users can initiate an import, removing the risk of unattended or unauthorized data loads reaching the org.

Matching engine — Instead of asking users to manually look up IDs, the tool resolves them automatically: email addresses are matched to existing ContactIDs, website domains to AccountIDs. Users see the proposed matches before anything is written to Salesforce.

Review and logging — A review step surfaces the full match set so users can catch mismatches before committing. After import, a log is generated covering what was written and any errors encountered. System logs are stored automatically in BigQuery for persistent audit history.

Outcome

Manual vlookup-based imports were retired. The matching engine removed the human error vector from the step most likely to misrelate records at volume. Users gained confidence in the data they were loading, and the org gained an audit trail that hadn't existed before.