Skip to content
All work

Platform  · building

Lotline

An automotive CRM for car dealerships — pipeline, texting, desking, inventory and reporting in one system, with an AI layer that reads the conversation.

Private repository
Year
2026
Disciplines
Product, platform engineering, integrations
Stack
TypeScriptNestJSReactPostgres

The brief

The dealership CRM problem is not storage. It is follow-up.

A dealership loses deals in the gaps: a lead nobody called, a text that went unanswered, a number quoted from memory. The incumbents store the record well and do very little to close the gap. Lotline was built as an augmented-intelligence competitor in that market — the same system of record, plus an engine that reads every conversation and tells a rep what to do next.

What we built

  1. 01

    A pipeline that shows the clock

    A kanban board per rooftop with configurable stages, deal age, and an SLA state that surfaces the leads nobody has contacted yet — the failure mode that actually costs the sale.

  2. 02

    Texting with the consent gate in the send path

    Two-way SMS through Twilio, threaded into the deal, with per-channel consent checked on every send rather than at the UI. A refusal is a normal, logged outcome; the evidence lives in its own table, separate from the current flag.

  3. 03

    Desking that computes, not guesses

    Finance and lease payments calculated side by side on the deal — term, rate, cash down, residual and fees — so a number quoted to a customer comes from the system rather than a phone calculator.

  4. 04

    A live DMS feed with its own health reporting

    Inventory and service history syncing from the dealer management system behind an adapter seam, with sync-health cards, aged units flagged, and bad VIN check digits caught rather than silently imported.

  5. 05

    Reporting on rollups, plus a plain-English builder

    A worker sweeps aggregates so reports read pre-computed rollups instead of scanning the transaction tables, and a question box lets a manager ask for a cut that no one built a screen for.

  6. 06

    A rep app that buzzes

    React Native (Expo) app carrying pipeline, tasks and conversations, with push when a lead arrives or an SLA breaks. Deliberately narrower than the web app — the phone is for responding, not administering.

Screens

  • The pipeline board — stages per rooftop, deal age, and leads nobody has contacted yet flagged in red.
    The pipeline board — stages per rooftop, deal age, and leads nobody has contacted yet flagged in red.
  • A deal: health score, the desking ribbon computing two finance terms and a lease side by side, and the full customer timeline below.
    A deal: health score, the desking ribbon computing two finance terms and a lease side by side, and the full customer timeline below.
  • Two-way SMS inside the deal, with delivery status, consent pills, and a live socket indicator.
    Two-way SMS inside the deal, with delivery status, consent pills, and a live socket indicator.
  • Inventory from the DMS feed, with sync-health cards, aged units flagged, and a bad VIN check digit caught on import.
    Inventory from the DMS feed, with sync-health cards, aged units flagged, and a bad VIN check digit caught on import.

Where it stands

In active development, nine phases deep — foundation, CRM, conversation, AI, reporting, desking, marketing, DMS, report builder and mobile all landed. The repository is private; the screenshots are captured from the app running against Postgres and Redis, with entirely invented dealership data.

Tables, multi-tenant with RLS
43 Tables, multi-tenant with RLS
Apps: API, worker, web, mobile
4 Apps: API, worker, web, mobile
Phases shipped
9 Phases shipped

Next case

Kingdom Athletics

Read it →