Back to home
Try it

You can use the part a customer uses. Open a real estimate and approve or reject it. No login, no app, just a link, which is exactly what the customer gets by text. The same car has a customer portal, and here is the gate pass the security desk sees at handover. This runs the real product against a demo garage of invented people, so approve away: no real customer, no real money.

New

A second UI shipped this month: softer, faster, and already at the counter. The eight screenshots below are captured from the live build, and the estimate above is the real thing, not a picture of it.

Venture · 01

PitStop

Garage management for Indian workshops. Intake to GST invoice, built for a service advisor with oily hands and a queue at the counter.

Spec
Status
Building, live at a working garage
Stack
Next.js, Postgres, Supabase, PWA
Markets
India GST and US sales tax, same product
Role
Everything. Product, design, build, rollout
Build Live at a garage 0 to 1 Next.js Postgres Supabase PWA Multi-tenant RLS GST invoicing UPI Realtime
01

The Problemthe counter, before

An Indian workshop runs on a paper diary, WhatsApp forwards and the owner’s memory. Estimates get argued at the counter, the customer cannot see what they are paying for, and the GST invoice comes from a typist shop two streets away. Software for garages exists, but it is built for dealership chains with a back office, not for one owner running the floor from a phone.

PitStop covers the full loop of a repair: intake, job card, mechanic assignment, customer approval, GST invoice, payment. Nothing more, and every screen assumes a phone, a hurry and grease.

02

The Flowone car, end to end

01

Intake

A phone number finds the customer, the vehicle and everything the shop has done to it before.

02

Job Card

Line items, part tiers, old parts marked for return, and a mechanic on every card.

03

Estimate

A tokenised link goes to the customer. No app, no login, 256 bits of randomness.

04

Approval

They approve on their phone. The amount cap is re-checked in a database trigger, not the UI.

05

Invoice

Gapless serial. Place of supply decides CGST and SGST or IGST, rate-wise, never averaged.

06

Payment

A UPI QR on the bill. Money lands in the garage's own account and the owner marks it collected.

The owner runs the floor from a phone, with oily hands and a queue at the counter.
The person every screen is built around
03

What It Doesintake to invoice, nothing more

01

Job Cards, Intake to Gate Pass

Eight statuses from received to delivered, a mechanic on every card, and a chase list that surfaces whatever is stuck so the owner does not have to remember.

02

Customer Approval by Link

The customer gets a link, not an app. They see every line with a price and approve or decline from their own phone. The link is the credential, and it is built to be safe in hostile hands.

03

GST Invoicing Done Properly

CGST and SGST or IGST, decided by place of supply, rate wise summaries, gapless invoice serials and the amount in words. The tax document is correct, not approximately correct.

04

UPI on the Invoice

A QR on every invoice sends money straight into the garage’s own bank account. No gateway, no KYC paperwork, no cut. The owner watches it land in their banking app and marks it collected.

05

Old Parts Returned

The scrap goes back to the customer and the job card records it. A small feature, but it is the difference between a garage a customer trusts and one they don’t.

06

Workshop Chat with Voice Notes

Every job card is a thread tied to a vehicle. Mechanics send voice notes instead of typing, broadcasts reach the whole floor, and delivered cars leave the inbox on their own.

07

Purchase Requests with Guardrails

Anyone can ask for a part. The owner approves with an amount cap, a supplier and an expiry, and the system re-checks all three at ordering time. Trust, but verified in a trigger.

08

Reads the Bills Customers Bring In

A customer photographs an old bill from any garage. PitStop reads it once, and when that car comes back the mechanic sees prior work matched against the new complaint. Pads three weeks ago is a comeback. Pads three years ago is wear.

09

Two Markets, One Product

A single flag switches a garage between Indian GST and US sales tax, and it reaches all the way down: the maths, the invoice serials, the currency, the dates, even whether the odometer is in kilometers or miles.

10

Installs from the Browser

A PWA with an offline shell, not an app store listing. Zoom is deliberately left on, because a mechanic reading a part number in bad light needs to pinch.

04

Screenssmall screens, oily thumbs

The PitStop dashboard: 43 out today with 35 at risk, 65 in the shop, 8 ready for pickup, 15 waiting on a call and 8,260 rupees billed today, above a by-stage chart of every vehicle
The owner’s morning in one screen. Demo garage, real product
The PitStop job board filtered to in progress: seven vehicle cards with number plates, complaints in plain language, days late and approval chips
The board, filtered to what is being worked on right now
PitStop scheduling: a week by bay, colour coded jobs across seven days, a double-booked chip, blocked time and a job that runs past closing
The week by bay. Double bookings and work past closing are labelled, not hidden
PitStop finance: billed today, this week and this month, GST collected split across CGST, SGST and IGST, 86,286 rupees pending across 30 unpaid invoices, a 79 percent close ratio and cash collected this month
Where the money actually is. GST collected, owed and closed, issued invoices only
A PitStop job card for a Maruti Suzuki Swift: number plate, reported complaint in the customer's own words, status dropdown, an approved-up-to cap, and tabs for inspection, estimate, work in progress, payments and notes
One car, one card. The complaint stays in the customer’s words, and the amount cap sits next to the status
A PitStop GST tax invoice: gapless serial, GSTIN, place of supply, an HSN and SAC column, a rate-wise tax summary splitting CGST and SGST, the amount in words, and a payment row set to UPI
The GST invoice. Gapless serial, place of supply, rate-wise summary, amount in words
PitStop purchase requests: two pending cards for engine oil and brake pads with amounts, an urgent chip, who asked and when, and inline controls to approve up to a spend cap for a number of days or send it back
Anyone asks, the owner approves. The cap and the expiry are bound at approval, then re-checked at ordering
PitStop shop chat: a conversation list with unread counts beside an open thread asking whether a cabin filter is in stock, answered with an instruction to raise a request, with a read receipt
Shop chat. Threads tie to a vehicle, and the parts question ends in a purchase request
05

The Deliberate Cutwhat I chose not to build

Chose

A UPI QR on the invoice

over integrating a payment gateway

A gateway needs a merchant account, company KYC and a bank account before a single rupee can move. The QR puts money in the garage's own account today. The owner watches it land in their banking app and marks it collected. Ninety percent of the value, none of the paperwork, and no reconciliation promise the product cannot keep.

Chose

A content-free realtime signal

over publishing message rows to subscribers

The obvious design puts message bodies on the wire and trusts row security to filter them. It failed its own probe: a member of a private thread heard nothing while broadcasts worked. One table carrying only a topic and a tenant now signals that something changed, and the server re-reads under the same policy that guards every other query.

Chose

SQL matching on customer bills

over letting a model read and act on them

Customers photograph bills from other garages. A model reads each one once, into a table. Nothing it extracts is ever trusted or acted on, and the matcher that surfaces prior work is plain SQL, so nothing written on a photographed page can steer the system.

Chose

A PWA that installs from the browser

over native apps in two stores

One codebase, an offline shell, and no review queue between a fix and the counter. Pinch zoom is deliberately left on, because a mechanic reading a part number in bad light needs to zoom, and a tidier layout is not worth taking that away.

06

What Isn’t Built Yetthe honest list

Blocked, not unwritten

WhatsApp messaging needs Meta Business verification, DLT registration and template approval. The code is the small part.

Deliberately absent

There is no automatic payment reconciliation. UPI collection does not confirm payment, and the product never claims it does.

Unproven

Bill reading has storage, policy and matching under test, but extraction has never run against a real upload in production.

Untestable here

Barcode scanning is buildable and specified. A camera cannot be exercised in a sandbox, so it waits for the floor.

07

Why It Is Built This Waythe counter decides

Constraint

The Phone Is the Office

The owner runs the shop from a phone at the counter. Every feature is designed there first, and the desktop version is the afterthought.

Trade

UPI Without a Gateway

A payment gateway needs merchant KYC and takes a cut. A UPI QR needs neither. Ninety percent of the value for none of the paperwork.

Belief

Why the Scrap Goes Back

Old parts returned, every line priced before work starts, an invoice that stands up to a tax officer. The software just makes honesty the cheap option.

08

Field Noteone decision, documented

A job card that closes without an argument at the counter.
The north star
Curious about PitStop?

Ask Me Anything.

Happy to walk through the product, the multi-tenant design or what a real garage taught me about software.

venkatesh@venkateshgardas.com