802.software

South Burlington, VT

Start a project

MD Motors: inventory, sales and profit for a used-car dealer

A Vermont used-car dealer ran the lot from a Google Sheet and paperwork, and every new window sticker was typed in by hand. MD Motors reads the sheet, imports the stickers and gives the accountant an export they can use.

Client
A used-car dealer in Vermont
Year
2025
Platforms
Web
Our role
Design and engineering
Stack
Next.js, TypeScript, PostgreSQL, Google Sheets API
See it
Behind the client’s login

The problem

Inventory, sales and the reports the accountant needed were all kept by hand in a Google Sheet and on paper.

Window stickers arrived as PDFs, and each vehicle on them was typed into the sheet again before it could be sold.

What we built

A back-office web app that reads the dealer’s Google Sheet into its own database without ever writing to it, so the sheet keeps working the way the dealer is used to.

Window-sticker PDFs are parsed into vehicle rows, and VINs already in stock are flagged as duplicates before anything is saved. A decode button per vehicle fills in details from NHTSA when the dealer wants them.

Interface recreation of the MD Motors inventory sheet. The app sits behind the dealer’s login.

The dealer’s Google Sheet stays the source. VIN details are decoded per vehicle, only when the dealer asks.

How it is built

A Next.js application on PostgreSQL. The Google Sheets connection is read-only by design, and the login route is protected against bots.

Stack
Next.js App Router, TypeScript and PostgreSQL, with Cloudflare Turnstile on the login route
Sheets feed
Google Sheets API with a read-only scope. The app reads the dealer’s sheet and never writes back to it
PDF import
Window-sticker PDFs become vehicle rows, checked against existing VINs before insert
VIN details
NHTSA decode is a per-vehicle action, available when needed rather than a required step
Export
An inventory CSV download in a format the accountant can open directly

Results

Window-sticker uploads become inventory rows in one step, with duplicates caught, instead of each vehicle being typed in.

The accountant gets a CSV export of the inventory, and the dealer’s sheet stays as it was.

What is next

  1. Add a profit column to the accountant’s export, using the same calculation as the inventory card.
  2. Decode VINs automatically during PDF import, so an upload finishes fully filled in.
  3. Two-way sync with the dealer’s sheet, without giving up the read-only default.
Design and engineering
802.software
Project lead
Baris Taskiran
Verified
Against the running code on

Related service: Internal tools and business systems