Nortik

Case Study · Vinready

A vehicle history platform,VIN to paid report.

Vinready is a consumer vehicle history platform for Efuturemedia, built for the market Carfax and carVertical sit in. We built the whole product in a fixed scope engagement: VIN and license plate entry, the funnel in front of it, a subscription checkout in dozens of currencies, a seventeen section vehicle report with a downloadable PDF, and the customer dashboard behind a passwordless login.

Currencies at checkout
48Currencies at checkout
Report sections per vehicle
17Report sections per vehicle
Vehicle data segments per report
6Vehicle data segments per report

Engagement Overview

Efuturemedia wanted a consumer vehicle history product of their own, in the market Carfax and carVertical sit in. They had Figma designs, an internal engineering rulebook and a shared payments microservice their other products already ran on. What they did not have was a line of product code.

We delivered Vinready in a fixed scope engagement, built end to end by a single Nortik engineer and extended through launch. The platform covers the whole journey rather than a screen of it: VIN or license plate entry, the multi step funnel in front of it, a subscription checkout in dozens of currencies, a seventeen section vehicle report with a downloadable PDF, and a customer dashboard behind a passwordless login.

The single biggest win is the distance covered. An empty boilerplate became a live production service taking real payments on the client’s own Kubernetes infrastructure, pixel-perfect to their designs and inside their own review gates. Everything below is how that was possible on a timeline that never moved.

48
Currencies at checkout
17
Report sections per vehicle
6
Vehicle data segments per report
Engagement
End-to-End Product Development
Team
A single dedicated engineer
Focus
Vehicle data and global subscription checkout
Working model
Fixed scope, inside the client's own standards and infrastructure

Stack

Frontend

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • shadcn/ui
  • Base UI
  • Zustand
  • TanStack Query
  • next-intl
  • Recharts
  • Vitest
  • Playwright

Backend

  • NestJS
  • TypeORM
  • JWT
  • Magic-link auth
  • Puppeteer
  • NATS JetStream
  • Jest

Data & storage

  • PostgreSQL
  • Redis
  • S3-compatible object storage

Infrastructure & DevOps

  • AWS EKS
  • Kubernetes
  • Docker
  • Helm
  • ArgoCD
  • GitHub Actions
  • Cloudflare
  • Sentry
  • Prometheus
  • Structured ECS logging

Integrations

  • VehicleDatabases API
  • Stripe
  • SendGrid
  • Zendesk
  • Klaviyo
  • Lokalise
  • Plausible
  • Google Tag Manager
A Vinready report's sales history section, showing auction photographs of a side-damaged Audi Q7 above a spec row reading Cert of title-salvage

The Challenge

Efuturemedia wanted to enter the vehicle history market with a new consumer product. They arrived with Figma designs, an internal engineering rulebook and a shared payments microservice, and with no product code at all. The platform had to cover the entire journey in one go: VIN or license plate entry, a multi step conversion funnel, a subscription checkout in dozens of currencies, a seventeen section vehicle report with a downloadable PDF, and a customer dashboard behind a passwordless login.

None of it was greenfield in the way that word usually means either. Everything had to run on the client’s own Kubernetes and ArgoCD, follow their organisation wide standards for payments, localisation, tracking and logging, and match the designs 1:1, which their design QA verified with pixel-overlay tools. Building inside somebody else’s rulebook is slower than building beside it, and every one of those constraints was non-negotiable.

The scope and the date were both fixed, and there was one engineer on it. Which meant the interesting problem was never any one feature. It was that a product like this is mostly other people’s systems, the vehicle data provider, the shared payments service, the email and translation pipelines, and on a date that does not move you cannot afford to assume any of them will be up when a customer presses buy.

The Solution

On a fixed timeline the integrations are the product. So every external system the platform leans on was built to degrade gracefully and heal itself rather than to assume the happy path. Three stretches of it carried most of the weight.

A Vinready report's All history events section, with an odometer chart plotting twenty-nine records from 2016 to 2026 above the event table

Six data segments, and a report that repairs itself

Every report is assembled from six independent enrichment segments on the VehicleDatabases API: history events, auction records with their photographs, safety recalls, title checks, market value and specifications. Each is fetched, classified and cached in Redis on its own, so a slow segment never holds up the five that answered. The part that mattered on a fixed timeline is what happens when one of them fails. Failures are classified rather than swallowed, and a self-healing re-enrichment job goes back and repairs the reports created during an upstream outage, which is exactly what it did when a provider went down two weeks before go-live.

  • VehicleDatabases API
  • Six Enrichment Segments
  • Redis Caching
  • Self-Healing Re-enrichment
A Vinready vehicle history report for a 2023 Audi Q7, showing the market value band and the seventeen-section navigation rail beside it

Seventeen sections, and an eleven-page PDF in six seconds

The report itself runs to seventeen sections, from market value and ownership history through stolen vehicle, junk and salvage records to the odometer and title brand checks, each one linked from a rail that follows the reader down the page. The same page renders as an eleven-page PDF in about six seconds, through a pool of headless Chromium instances kept warm so nobody waits on a cold start, and the client's invoices are generated by that same pipeline rather than a second one built beside it.

  • 17-Section Report
  • Puppeteer
  • Warmed Chromium Pool
  • PDF and Invoicing
The Vinready customer dashboard, listing six saved vehicle reports with a download button on each and subscription settings in the left rail

A checkout in forty-eight currencies, on somebody else's rails

Subscription checkout runs end to end through the client's own shared Stripe payments microservice rather than a second integration of our own: card, Apple Pay and Google Pay, across forty-eight currencies, with trial-based pricing seeded from their pricing sheet. Payment events arrive back over NATS JetStream and drive the transactional email, from welcome through cancellation and the rest of the account lifecycle. Behind it sits the dashboard a buyer actually returns to, with every report they have ever pulled, its PDF one click away.

  • Stripe
  • 48 Currencies
  • NATS JetStream
  • Customer Dashboard

And everything holding the platform up

The parts a buyer only notices when they are missing, and the reason a product built to a fixed scope by one engineer passed a large organisation’s own review gates on the way out.

  • Two applications, inside their boilerplate

    A Next.js frontend and a NestJS API, both built inside the client's own enterprise boilerplate rather than a stack of our choosing. It cost some speed in the first weeks and bought code that passed their review gates and that their engineers could read on day one.

  • No login wall in front of a purchase

    Authentication is passwordless magic-link, and a finished report is reachable on an unguessable GUID link, so a first-time buyer goes from VIN to paid report without being asked to invent a password halfway through.

  • Roughly 1,200 keys, in two languages

    The entire interface was extracted into a localized catalog of about twelve hundred keys in English and Spanish, wired into the client's own Lokalise translation workflow so their copy team ships changes without an engineer in the loop.

  • Analytics on their policy, not ours

    Google Tag Manager with Consent Mode v2, Plausible alongside it, and Klaviyo picking up abandoned checkouts, all configured to the client's organisation wide tracking policy rather than to whatever would have been quickest.

  • Hardened before launch, not after

    An adversarial review and hardening pass across the whole codebase before go-live, which closed an account-takeover vector, gaps in the rate limiting and a cache poisoning route, alongside more than eight hundred and fifty automated tests.

  • Shipped on the client's own rails

    Docker and Helm onto their AWS EKS cluster through GitHub Actions and ArgoCD, dev, staging and production from one pipeline, with Cloudflare in front, Sentry on both applications, Prometheus metrics and structured ECS logging carrying correlation IDs.

Nortik engineers working around the meeting table in the Novi Sad office, a video call on the wall screen

Business Impact

Vinready is live at vinready.com, serving the full flow in production: VIN entry, preview, subscription checkout, report generation, PDF download and the customer dashboard, with dev, staging and production environments deployed from one CI/CD pipeline.

The part we are proudest of is the breadth-to-headcount ratio. One engineer shipped a complete consumer product, a payments integration, a data pipeline and a two language product surface inside a large organisation’s own standards, with more than eight hundred and fifty automated tests and full documentation behind it.

The client’s own engineers are now being onboarded onto that codebase to carry the product forward, which we take as the real proof of the engineering quality. Code somebody else can pick up and keep building in is a harder result than code that shipped on time, and this had to be both.

View it from our angle.

Get In Touch
Vlado SavićNortik logo
Vlado Savić
Sr. Software Engineer, Nortik
The thing this project taught me is that on a fixed timeline, the integrations are the product: the VIN data provider, the shared payments service, the email and translation pipelines all had failure modes we did not control, so we designed everything to degrade gracefully and heal itself instead of assuming the happy path. The self-healing enrichment job and the strict test discipline are what made the launch calm instead of chaotic.

Nortik’s Impact

The Vinready platform end to end: VIN and plate entry, a six segment enrichment pipeline behind a seventeen section report, an eleven-page PDF renderer, a forty-eight currency subscription checkout on the client's shared payments service, and the customer dashboard behind a passwordless login.

Your AI team is ready.Are you?

Let's shape the future of AI, together.