Skip to content
← All work Case study · Web application · CRM

Metro CRM

A custom sales CRM for a Bengaluru manufacturer of PUF panels, purlins and roofing sheets. It takes an enquiry from the first ad click all the way to a dispatched order and a received payment — in one app the whole team uses every day.

  • ClientMetro Puf Industries & Delta Infrastructures
  • IndustryBuilding materials manufacturing
  • My roleProduct design, development & deployment
  • StackJavaScript SPA · PHP · MySQL
Start a similar project →
Metro CRM · demo data
Metro CRM dashboard with lead stage funnel, team filters and today's follow-ups
6,000+leads managed
27,000+follow-up notes stored
20modules in one app
83%smaller sync payload

All screenshots use demo data. Customer names, numbers and bank details are not real.

The problem

Leads everywhere, no shared picture

01

Leads everywhere

Enquiries arrived from Facebook Lead Ads, Google Ads, IndiaMART, the website and chat apps. Each lived in a different inbox or spreadsheet — and some were never called back.

02

Quotes built by hand

Every quotation for sandwich panels, purlins or roofing sheets was calculated and typed manually. Weights, areas, GST and numbering were easy to get wrong.

03

No shared picture

Management couldn't see who was handling which customer, which leads had gone cold, or what had been promised. Two agents sometimes chased the same buyer.

The solution

One path from enquiry to payment

  1. 1EnquiryAd, marketplace, website or call
  2. 2LeadDe-duplicated and assigned
  3. 3Follow-upNotes, reminders, stages
  4. 4QuotationCalculated, approved, sent
  5. 5Job cardProduction and dispatch
  6. 6PaymentReceived and reconciled
What I built

20 modules, one app

Capture
  • Facebook Lead Ads, Google Ads and IndiaMART pulled in automatically
  • Website forms post straight into the right lead list
  • Duplicate check by phone number before any lead is saved
  • Lead lists, sources and auto-assignment to agents
Sell
  • Leads & customers with stages, remarks and full note history
  • Follow-up reminders and a Stagnant Leads view
  • Auto-detected state, city and product
  • Click-to-call, chat and product photo sharing from any lead
Quote & build
  • Quotation builder for PUF panels, purlins and sheets, with live preview
  • Area and weight per row, GST and round-off
  • Approval links, version history and PDF quotations
  • Job cards, dispatch tracking and received payments
Run the team
  • Face-recognition attendance and login tracking
  • Daily reports, dashboards and per-agent performance
  • Product and catalogue library for both companies
  • Role-based access: agents see only their own customers
Built in

Alex, the AI sales assistant

Agents ask Alex about their leads, follow-ups and quotations in plain language. It runs on the Claude API, called from the CRM's own server so the API key never reaches the browser.

Inside the app

Built around how the team works

Leads & customers

Every enquiry in one list

Source, auto-detected city and product, assigned agent, chat shortcuts and read-only lead status.

Metro CRM · demo data
Leads and customers table
Lead view

Everything about a customer, one tap away

Editable details, one-tap call / chat / meet, assignment, follow-up and the full notes timeline.

Metro CRM · demo data
Single lead view with notes timeline
Quotation builder

Quotes that write themselves

Product specs on the right, a print-ready estimate with GST and amount in words on the left — updating as you type.

Metro CRM · demo data
Quotation builder with live preview
Reports

Numbers management can act on

Conversion rate, 14-day lead trend and per-agent performance, with CSV and Excel export.

Metro CRM · demo data
Reports with leads trend and team performance
Key decisions

Engineering for a busy sales floor

01

One file, zero build step

The whole front end ships as a single HTML file. The team deploys an update by uploading one file to shared hosting — no build tools, no servers to manage.

02

Save only what changed

The app computes a delta of what each user changed and sends just that. A server-side lock keeps simultaneous saves from overwriting each other.

03

Notes are never overwritten

Follow-up notes are append-only and de-duplicated by key, so two agents writing at the same moment can never erase each other's history.

04

Compress the big download

With thousands of leads the first sync grew to about 11 MB. Gzipping cut it to roughly 1.85 MB, so the CRM opens quickly even on mobile data.

Hard problems, solved

Debugging in the real world

Problem

The banner that would not go away

Agents kept seeing “Changes not saved yet”, even when idle. Server space and plan limits looked fine.

The fix

The browser network log showed saves returning 403 from the host's CDN firewall, which treated rapid saves as an attack. Turning the CDN off for the CRM domain fixed it for every agent.

Problem

Duplicate leads leaked customers

Adding a lead that already belonged to a colleague showed the existing customer in the new agent's list.

The fix

The duplicate check now stops the save and names the customer and the agent already handling them. Admins still see everything.

Problem

A quotation that could not be updated

Switching a quote between the two companies changed its ID prefix, and the update was rejected.

The fix

Edits keep the original quote number and swap only the company prefix — and the linked job card follows the change.

Outcome

Every enquiry lands in one place, is checked for duplicates and reaches an agent automatically.

Over 6,000 leads and 27,000 follow-up notes live in a single MySQL database instead of scattered sheets. Quotations, job cards and payments are connected to the lead that started them — management can follow any order from the first call to dispatch.

What's next
  • Incremental sync — each device downloads only what changed
  • Deeper reporting on lead source quality and conversion by product
  • More automation around follow-ups and quotation approvals
JavaScript SPAPHPMySQLClaude APIHostinger
Available for new projects

Have an idea? Let's make it move.

Book a free call →Instant quote ₹AI brief ✦
Find me

Studio in Bengaluru

3rd Phase, Apparel Park, Obadenahalli Industrial Area,
Doddaballapura, Bengaluru, Karnataka 561203
Open 24 hoursWorks with clients worldwide IST
● Satish Kumar — Creative Studio