← Back to all projects

Quick Steel Buildings

Quick Steel Buildings CRM — Lead Management API

Multi-source lead ingestion, dealer auto-assignment, and marketing-automation backend for a steel-building sales CRM.

Role
Solo Developer
Timeframe
Mar 2023 — Mar 2026
Status
In Production
Team Size
1
Domain
CRM / Lead Management (Construction — Steel Buildings)

Quick Steel Buildings

Quick Steel Buildings CRM — Lead Management API

The Quick Steel Buildings CRM backend automates how an Australian steel-building business captures, routes, and follows up on sales leads. As solo developer, I built the entire TypeScript/Express service, unifying leads from website quote forms, parsed email enquiries, and manual entry into one deduplicated pipeline.

A dealer auto-assignment engine matches leads by postal code with round-robin fairness, claim cooldowns, and daily limits, while scheduled jobs recycle unserviced leads back into a shared pool based on customer survey responses. SMS (ClickSend) and email (Mailchimp) automations keep both leads and dealers notified — all running in Docker on AWS EC2 with RDS PostgreSQL.

Solo Developer

  • Designed and built the entire Node.js/TypeScript backend API
  • Implemented multi-source lead ingestion (WordPress/Gravity Forms API, IMAP email parsing, manual entry)
  • Built the dealer auto-assignment engine with postal-code matching, round-robin fairness, cooldowns, and daily limits
  • Integrated SMS (ClickSend) and email (Mailchimp Transactional + Marketing) notifications and automations
  • Modeled the data layer with Sequelize/PostgreSQL and implemented role-based access and analytics
  • Containerized the service with Docker and set up deployment to AWS EC2 with RDS PostgreSQL
  • Multi-source lead ingestion: WordPress/Gravity Forms API, IMAP email parsing, and manual entry
  • Dealer auto-assignment by postal code with round-robin fairness and randomized fallback
  • Shared lead pool with access cooldowns and per-dealer daily claim limits
  • Automated lead deduplication and postal-code geocoding
  • SMS and templated email notifications for leads and dealers
  • Mailchimp marketing automation with survey-based follow-up that recycles unserviced leads
  • Role-based access control (admin and dealer) with organization and dealer management
  • User invitation and self-registration flow with expiring registration codes
  • Analytics endpoints: lead volume by month, leads by source/status, top dealers/organizations, deals closed
  • Session-based authentication backed by PostgreSQL

Problem

Leads arrived from disparate channels (web forms, ACT Online Designer quote emails, manual entry) in inconsistent formats and with frequent duplicates.

Solution

Normalized each source into a shared lead schema, parsed HTML quote emails with JSDOM, and added scheduled deduplication windows keyed on email and submission date.

Problem

Leads needed to be distributed fairly across regional dealers without overloading any single dealer.

Solution

Built an auto-assignment engine that matches dealers by postal code, applies round-robin fairness using lead-history records, and enforces cooldowns plus per-dealer daily limits.

Problem

Dealers sometimes failed to service assigned leads, leaving customers without quotes.

Solution

Added a scheduled job that reads Mailchimp survey responses and automatically returns unserviced leads (e.g. after 72 hours) back into the shared pool.

Languages

TypeScript

Frameworks

Express.jsSequelize ORMPassport.js

Databases

PostgreSQL

Tools

DockerDocker Composenode-cronJoiPinoNodemonts-nodeimapflowJSDOM

Infrastructure

Deployment
AWS EC2, Docker Compose (rsync/SSH deploy script)
Cloud
AWS
Containers
Docker, Docker Compose
Other
AWS RDS (PostgreSQL)

Mailchimp Transactional

Templated transactional email (dealer servicing, lead assignment, registration)

Mailchimp Marketing

Contact list management, tagging, and survey-driven follow-up automation

ClickSend

SMS notifications to leads and dealers

Google Maps Geocoding API

Geocoding lead postal codes to states/regions

IMAP (imapflow)

Pulling and parsing lead enquiries from an email inbox

WordPress / Gravity Forms API

Syncing leads from the marketing website's quote form

  • Built a multi-channel lead-ingestion backend (TypeScript/Express/PostgreSQL) unifying website forms, parsed email enquiries, and manual entry into a single deduplicated pipeline
  • Engineered a postal-code-based dealer auto-assignment engine with round-robin fairness, claim cooldowns, and daily limits to distribute leads equitably across a dealer network
  • Integrated ClickSend SMS and Mailchimp transactional/marketing email to automate lead and dealer notifications and survey-driven follow-up
  • Implemented scheduled (node-cron) jobs for lead syncing, deduplication, geocoding, and recycling unserviced leads based on customer survey responses
  • Containerized the service with Docker and deployed to AWS EC2 with RDS PostgreSQL

Have a project in mind?

Let’s talk about what you’re building and how Montgomery Labs can help ship it.

Start a project