Case Study · CRM · Field Services

Ridgeline CRM — a leads and job pipeline for a contracting business

Ridgeline Contracting Co. is a fictional small contracting business used to demonstrate how Granite Studios approaches a common operational problem: leads and jobs scattered across texts, spreadsheets, and memory.

Problem

Leads and jobs living in spreadsheets and texts

Ridgeline Contracting Co. tracked incoming leads in a spreadsheet and jobs on a whiteboard. Nothing synced — a lead marked "won" didn't automatically become a scheduled job, and there was no shared view of what was actually in progress versus invoiced.

Approach

One pipeline, two connected views

A single Next.js dashboard with a Supabase-backed database: a kanban-style leads pipeline (new → contacted → quoted → won/lost) and a jobs table (scheduled → in progress → completed → invoiced → paid), linked so a won lead carries its history into the job record.

Outcome

One shared source of truth

Anyone on the team can see pipeline value, active job load, and what's been paid without asking around. Status changes are visible to everyone immediately — no more "is that lead still open?" conversations.

Under the hood

Built to be a real, working system — not a mockup

The live demo linked above is the actual application: add a lead, move it through the pipeline, schedule a job, delete a test record. It's a public sandbox, so we cap row counts and reseed it hourly to keep it usable for the next visitor.

Next.jsTypeScriptTailwind shadcn/uiSupabasePostgres Vercel
2Connected pipelines: leads & jobs
15sLive refresh interval
1hrAutomatic demo data reset
Have a similar problem?

We build systems like this for real businesses.

If leads, jobs, or customers are living in spreadsheets and group chats, this is exactly the kind of thing we replace it with.