Skip to content

Project 01

CRM & Ad Reporting

Internal CRM, customer database, scheduling and ad-reporting platform for a Chicago-area home improvement company.

Client
A Chicago-area home improvement company
Built with
Next.js · Supabase · WhatConverts · CallRail · improveit360 · Salesforce · Google Ads API · Meta Marketing API

What we built

A private CRM and operations dashboard built for a home improvement company. It brings the sales team's calls, leads, customers, schedule and sales history into one app, so the office and the reps work from the same numbers.

Inbound calls are tracked through call-tracking software and land in the dashboard as leads. Calls and leads sync from WhatConverts every 15 minutes into a call queue that puts the oldest uncontacted lead first, with lead search that matches callers by phone number. The call-tracking layer was first built on CallRail and later moved to WhatConverts.

Sales and appointment history syncs from improveit360, which runs on Salesforce, into a customer database. Each customer carries their lifetime sales and the quotes that have not closed yet, and the same data drives revenue, close-rate and appointment-outcome reporting.

The team runs on it day to day. There is a shared schedule where in-home visits and measures can't double-book, a rep leaderboard with conversion and response speed, lead status and rep assignment, contract packets and job sheets, and role-based access for admins and sales reps. An operations hub keeps the money in one place: ad spend and budget next to today's call and lead numbers, with disbursements tracked alongside.

Advertising data is read-only reporting. The dashboard retrieves campaign-level performance metrics from the client's own ad accounts: cost, clicks, impressions and conversions from Google Ads, and spend, impressions, clicks, CPC, CPM and action counts from Meta. It shows them alongside lead and sales data, for example as cost per lead. It never creates or changes campaigns, retrieves no data about individual people, and is not sold or offered to third parties.

  • Inbound calls tracked through WhatConverts (earlier CallRail) into a call queue, oldest uncontacted lead first
  • Customer database of lifetime and open sales, synced from improveit360 on Salesforce, with revenue and close-rate reporting
  • Shared schedule, rep leaderboard and an operations hub for ad spend, budget and disbursements
  • Read-only Google Ads and Meta reporting shown next to real leads, as cost per lead

Names, phone numbers and figures in these screenshots are sample data.

Lead screen of the CRM: today's call counts, a call queue of uncontacted leads with wait times, phone numbers and Mark contacted buttons, and today's new leads.
Call queue: every new lead nobody has called yet, oldest first.
Sales analytics screen of the CRM: total revenue, jobs sold, average job size, close rate, revenue by year and appointment outcomes.
Sales analytics: revenue, close rate and appointment outcomes, synced from improveit360.
Schedule screen of the CRM: a week calendar booked with sample appointments (in-home visits, measures, installs, a call, a meeting), per-rep filters, day, week, month and team views, and a legend of visit types.
Team schedule: in-home visits and measures can't double-book.
Team screen of the CRM: active leads, overdue follow-ups, a monthly rep leaderboard with conversion and response speed, and per-rep cards showing roles and permissions.
Team view: rep leaderboard, pipeline load and per-rep permissions.