Skip to main content

Used car marketplace app development, with inspection reports inside the listing

Written by DevoraXReviewed by Sameem Amjad, Founder & Lead Architect EngineerLast updated Based on project records and public sources (service page)

DevoraX builds used-car marketplaces where the inspection report is part of the listing rather than a PDF sent on request. The reference is Dooz Inspected Cars, a used-car marketplace in Jordan with an Angular web client, iOS and Android apps, inspection reports inside the listing, and financing and insurance in the buying flow. Dooz hired DevoraX's founder, Sameem Amjad, directly to work on the NestJS backend those three clients share. It is live on the web and both app stores, and its Google Play listing shows 100K+ downloads.

The work behind this page

Dooz Inspected Cars

A used-car marketplace in Jordan for buying, financing and insuring inspected vehicles: an Angular web client and iOS and Android apps over one NestJS backend on PostgreSQL. Dooz hired Sameem directly for that shared backend.

What it shows: A used-car marketplace where the inspection report is published as part of the listing, with a financing calculator and insurance in the same flow, and valuation, financing terms and listing availability resolved server-side so the web client and both apps show the same answer. Live on the web, Google Play and the App Store.

What you can check

  • Live at dooz.com
  • On Google Play as com.dooz.app, where the listing shows 100K+ downloads (https://play.google.com/store/apps/details?id=com.dooz.app)
  • On the App Store as Dooz Cars (id1627030530)

Read the 1,617-word engineering case study

Afriva E-Commerce Platform

A multi-vendor e-commerce marketplace on Next.js 15 and Supabase, with separate admin, manager, seller and buyer dashboards and real-time delivery tracking over Postgres changes. Sameem worked on it as an engineer at Webrange Solutions.

What it shows: Seller separation pushed down into the data layer rather than left as a UI concern, four role-scoped dashboards from one deployment, and server-rendered catalogue pages a crawler can read. General goods rather than automotive, so it evidences the multi-vendor mechanics a dealer marketplace needs, not vehicle domain knowledge.

What you can check

  • Demo build of the buyer storefront at afriva-buyer.vercel.app

Read the 1,544-word engineering case study

What a build includes

In base scope

  • Buyer-facing web marketplace with server-rendered listing and category pages, so the catalogue is indexable rather than an empty shell
  • Faceted vehicle search over make, model, year, mileage, price and inspection outcomes, indexed and paginated server-side
  • Structured inspection records: every checkpoint stored with its own identity and result, photographic evidence addressable per point, and a versioned rubric so historic reports still render
  • The inspection report rendered inside the listing, not attached as a downloadable file
  • Seller or dealer accounts with listing creation, stock state and a dashboard scoped to their own inventory
  • Admin console for reviewing inspections, approving listings and policing the catalogue
  • Ownership and role rules enforced in the database schema, not only in the interface
  • Financing calculator with term, rate and deposit resolved server-side so every screen shows the same figure
  • Reservation and availability handling, so a reserved or sold vehicle disappears from search and saved lists everywhere
  • Buyer accounts, saved vehicles and enquiry capture

Scoped and quoted separately

  • Native iOS and Android apps alongside the web marketplace. Dooz has both, but they are a separate line rather than base scope
  • Insurer quote integrations. Each partner is scoped individually, because the work depends entirely on what API they expose and what it returns
  • Lender and payment gateway integrations beyond the first
  • Automated or AI-assisted valuation. It depends on having enough structured condition data to price against, which a new catalogue does not have on day one
  • Migration of existing inventory from a dealer management system or a supplier feed
  • Support, monitoring and maintenance after handover

What do you actually get in a used car marketplace build?

Three layers, and they are not equally hard. The catalogue is the straightforward part: vehicles, photos, faceted search over make, model, year, mileage and price, server-rendered so listing pages are readable by crawlers. The inspection layer is the part most quotes underestimate. The transaction layer, where a reservation, a financing application and a unique physical asset must agree, is where the engineering cost sits.

Base scope is listed in full below. In short: a buyer-facing web marketplace, a dealer account with its own listing tools, an admin console for reviewing inspections and approving listings, structured inspection records rendered inside the listing, a server-side financing calculator, and reservation handling so a sold car leaves search everywhere at once.

Native apps, insurer integrations and automated valuation are each quoted on their own rather than folded into a base price.

Has DevoraX's founder worked on one of these before?

Once, and the product is public, so you can check it rather than take anyone's word. Dooz Inspected Cars runs at dooz.com, the Android app is on Google Play as com.dooz.app, where the listing shows 100K+ downloads, and the iOS app is on the App Store as Dooz Cars. Sameem Amjad, DevoraX's founder, worked on the NestJS backend that serves all three.

The product addresses the problem this page describes. Buyers struggle to verify a used car's condition, and financing complicated enough pushes deals offline. On Dooz every listed car is an inspected car, the inspection report is published as part of the listing, and a financing calculator and insurance sit in the same flow as a vehicle whose condition has already been established. The write-up is at /projects/25.

How does an inspection become something a buyer can filter on?

By being data rather than a document. A PDF tells a buyer about one car. A structured inspection lets them compare every car against the same rubric, which is the point of a verified marketplace.

Dooz publishes the inspection report as part of the listing rather than sending it on request. On the Dooz backend, PostgreSQL is the system of record, and vehicles, inspection records, listings and transactions are held as related data rather than as documents.

For your own build, that shape sets requirements we put in the proposal rather than leave to discovery. Each checkpoint needs its own identity and result so it can be queried. The rubric needs versioning, because a report captured under one revision still has to render after the checklist changes. Photographic evidence needs to be addressable per point and delivered efficiently to a phone. Those are scope lines for your system.

How do financing and insurance fit into the buying flow?

Buying, financing and insuring in one place is an integration problem more than an interface problem. A financing calculator has to model term, rate and deposit consistently, and the figure on the listing page has to be the figure at checkout. Dooz resolves financing terms, valuation, inspection status and listing availability server-side rather than in the clients.

Insurance is harder because the quote is not yours. A third-party response arrives on someone else's latency budget and can be slow or absent. Anything the platform does not control is treated as unreliable by design: timeouts, retries and an explicit degraded state, so one slow insurer does not block the rest of the flow.

NestJS module boundaries let listings, inspections, valuation, financing and insurance live as separate domains behind stable interfaces, as they do on the Dooz backend, and typed contracts mean a partner changing a field fails at compile time rather than showing a buyer a wrong number.

How do you keep dealer accounts separated from each other?

A marketplace with independent dealers is a multi-vendor system, and the rule that matters is that one seller cannot read or mutate another seller's stock. The wrong place to enforce that is the interface. A dashboard that hides a row is a presentation decision; a query that cannot return the row is a boundary.

Afriva is the work that evidences this. Four roles, admin, manager, seller and buyer, each with a dashboard querying only the slice of data that role is entitled to, on Supabase's managed Postgres. Because Supabase bundles authentication with the database, the identity that signs a user in is the identity Postgres sees on the query, so ownership rules live once in the schema rather than in every screen. Sameem worked on Afriva as an engineer at Webrange Solutions, and its public link is a demo build.

Afriva is general-goods e-commerce, not automotive. It evidences the separation model; Dooz supplies the vehicle domain.

What does the build process look like, and what do you need from me?

It starts with a free 30-minute discovery call and ends with a written fixed-price proposal listing scope line by line. There is no hourly billing, so the scoping conversation has to be honest on both sides. An under-specified fixed price is bad for you and worse for us.

The thing we need from you first is the inspection rubric. Not a description of it, the actual checklist, with the points, the result types and the pass criteria, because that document determines the data model and every filter built on top of it. We also need to know which lenders and insurers you intend to work with and whether they expose an API, whether listings come from your own inspectors or independent dealers, and where existing inventory lives. If you do not have a rubric yet, that is a scoping conversation rather than a blocker.

How is this priced?

Fixed price, in writing, after the discovery call. DevoraX publishes indicative starting points: MVP Starter from $2,900, Growth from $7,500, Enterprise custom-scoped. Those are starting points for the tiers, not quotes for this build. A marketplace with a structured inspection layer, dealer accounts and lender integrations does not sit in the entry tier, and we would rather say so here than in a third meeting.

What moves the number is rarely the catalogue. It is the count of third-party integrations, the depth of the inspection rubric, whether native apps ship alongside the web marketplace, and whether existing inventory has to be migrated. Each is its own line in the proposal, so one can be cut without reopening the whole scope.

No hourly billing means we absorb the cost of our own estimation errors. It also means a scope change is re-quoted in writing rather than quietly absorbed.

What happens after launch, and who owns the code?

You own all code and IP on final payment. That is not a negotiated extra. The repository, the schema, the deployment configuration and the inspection data model are yours, and nothing is retained as a bargaining chip.

Ongoing support is quoted separately, because it is a different commitment from a build and bundling the two produces a vague retainer neither side reads. If you have your own engineers, handover is a repository and a walkthrough. If not, say so during discovery and we will scope it.

Two things to plan for regardless of who maintains it. Third-party integrations break on someone else's schedule, so a lender changing a payload is an operational event rather than a build defect. And the inspection rubric will change. A checklist that grows or reorganises has to leave reports captured under the old revision still readable, which is why rubric versioning is base scope in the first release rather than a repair job after the first revision.

When should you not hire DevoraX for this?

If what you want is a classifieds board, where sellers post, buyers call and nobody verifies anything, do not commission a custom build. An off-the-shelf listings platform does that for a fraction of the cost, and the inspection engineering would be dead weight. If verification is not part of your product, nothing on this page applies to you.

Do not hire us to run the inspection operation. We build the software that captures, versions and publishes a report. Recruiting inspectors and standing up the physical network is a different business, and not one we have done.

And if procurement requires hourly billing, a named team of five, or a compliance certification on file, we are the wrong supplier. DevoraX is two people, Sameem Amjad and Usman, founded in 2022, and we work fixed-price. We will not clear those bars.

When not to hire us for this

If your model is a classifieds board, where sellers post, buyers call and nobody verifies anything, do not pay for a custom build. An off-the-shelf listings platform does that cheaply, and the inspection layer is the only part it cannot do. Skip us too if you need the inspection operation itself staffed: we build the software that captures and publishes a report, not the inspector network. And if procurement requires hourly billing or five named engineers on your standups, DevoraX is two people working fixed-price and will not clear that bar.

Questions buyers ask

Can you attach a full inspection report to every listing?

Yes. On Dooz the inspection report is published as part of the listing rather than sent on request. For your build we model each checkpoint as a record rather than a document, because that is what makes condition comparable across a catalogue instead of readable one PDF at a time, and it is what lets buyers filter on inspection outcomes alongside make, model, year, mileage and price.

Do I get mobile apps as well as a web marketplace?

Dooz has both: an Angular web marketplace plus iOS and Android apps, all on one NestJS backend, which is the part Sameem worked on. For a new build, the web marketplace is base scope and the apps are quoted separately. React Native or Flutter means one codebase serves both stores, so a listing or financing flow is implemented once and behaves the same on each. What that is worth against a web-only scope comes out of the discovery call.

Can buyers apply for financing and get insurance inside the app?

On Dooz, financing and insurance sit in the same flow as a vehicle whose condition has already been established, which is the point of the product. For your build, each lender or insurer is scoped and quoted individually, because the work depends on whether that partner exposes a usable API and how reliable its responses are.

Who was Dooz built for?

For Dooz, which hired Sameem directly. It is the company's own used-car marketplace in Jordan, and he worked on the shared NestJS backend behind its web client and its iOS and Android apps. It is live at dooz.com, on the App Store as Dooz Cars, and on Google Play, where the listing shows 100K+ downloads.

What will it cost?

We do not quote before a discovery call and we do not bill hourly. You get a written fixed price after a free 30-minute call. Published starting points are $2,900 for MVP Starter and $7,500 for Growth, with Enterprise custom-scoped. Those are starting points, not quotes. A marketplace with a real inspection layer and lender integrations sits above the entry tier.

Who owns the code when it is finished?

You do, on final payment: code, IP, schema and deployment configuration. Nothing is withheld to secure a maintenance contract. Support after launch is a separate quote because it is a separate commitment, and if you have your own engineers you may not want it at all.

How do you stop one dealer from seeing another dealer's stock?

By enforcing ownership in the database rather than the interface. On Afriva, which Sameem worked on as an engineer at Webrange Solutions, each role queries only the slice of data it is entitled to, and because Supabase bundles authentication with Postgres, the identity that signs a user in is the identity the database sees on the query. A hidden row is a presentation choice; a query that cannot return it is a boundary.

Is this the same build as a general multi-vendor marketplace?

The vendor mechanics overlap: seller accounts, role-separated dashboards, ownership rules in the schema, order state that has to stay fresh on every surface. What differs is uniqueness, since every car is one unit rather than a stock item with a quantity, plus the inspection layer itself. For general goods, start from our multi-vendor marketplace development page.

Related work

Start with a scoping call

A free 30-minute call to work out what you are building and what is actually hard about it. If there is a fit you get a written fixed-price proposal. If there is not, we will say so on the call.

Book a call