Back to projects
Technical assessment · Web Designer/Web Developer + AI Automation role · Aug 2026

Every number on the admin dashboard reads from a live database. None of it is sample data.

A car rental platform built for a Web Designer/Web Developer + AI Automation technical assessment - a frictionless booking flow, a live operational dashboard for staff, role-gated admin access, and a chat assistant grounded in real inventory that feeds a working n8n lead automation, all running against one real Supabase database.

Next.js 16TypeScriptSupabaseTailwind v4n8nGroq + Gemini
0
Hard-coded numbers - every dashboard figure and vehicle listing is a live Supabase query
6
Live views on one admin dashboard - revenue, best-sellers, sales by country, bookings, leads, inventory
17
REST endpoints, every one validated with Zod before it touches the database
Groq → Gemini
Two-provider fallback keeps the chat assistant answering through a provider outage
The brief

A rental site has three different people to satisfy, and each one breaks it in a different way.

The assessment asked for a customer-facing rental site, an admin dashboard, and an AI feature backed by a working automation. Framing it around who actually uses each piece, rather than a feature checklist, is what shaped the build.

  • A customer deciding among rental sites won't tolerate a slow or confusing booking flow. If they can't quickly see what's available, at what price, and how to reserve it, they leave for a competitor.
  • Staff need a live, current view of the fleet and bookings - not a spreadsheet. Checking a raw database to answer 'how's revenue trending' or 'which bookings need attention today' doesn't scale past a handful of people.
  • A visitor with a question, not yet a decision, is the easiest lead to lose. If answering 'is a bigger car available' takes an email or a phone call, most people leave instead of asking.
The approach

One build per audience, all reading from the same database.

01

Friction-free booking

Searchable, filterable listings (category, price, seats, transmission, fuel), a detail page per vehicle, and a booking flow that never requires an account first - matching how people actually shop for a rental.

02

A dashboard staff would actually use

Live revenue against the prior period, a best-seller ranking, sales by country, a searchable bookings table with one-click status changes, and full vehicle inventory CRUD - reading from the same tables the customer site writes to.

03

A chat assistant grounded in real inventory

Live on every page, answering with specific real vehicles and prices pulled from the current fleet - with Gemini as an automatic fallback if the primary Groq call fails.

04

Silent lead scoring

Once a conversation reaches a few messages, it's scored in the background for booking likelihood, budget, and urgency, and surfaces on the dashboard ranked highest first - no one reads a transcript to find the serious buyers.

05

Leads land where the team already looks

An n8n workflow logs every scored lead to a Google Sheet the moment it's created, instead of asking a small sales team to adopt a new dashboard habit.

06

Access checked on every request, not just the front door

Customer and staff accounts share one login system; only a role check that runs on every request touching sensitive data - not only the dashboard page - can reach it.

Results

What's actually live - and what's honestly still a placeholder.

OPERATIONAL

The dashboard reflects what's actually happening, not a snapshot

Revenue, best-sellers, sales by country, bookings, and leads all read from the same Supabase tables the customer site writes to - there's no separate content layer to keep in sync or let go stale.

GROUNDED

The assistant only ever names cars that exist

Every reply is generated with the live, available-vehicle list injected as the model's source of truth, and every picture-card recommendation is a real slug pulled from that same query - there's no path for it to invent a car, price, or feature.

RESPONSIVE

Built and tested at phone, tablet, and desktop, not just shrunk down

Both the customer site and the admin dashboard adapt navigation, forms, and touch targets at each width - a meaningful share of visitors to a site like this are comparing options on a phone.

HONEST LIMITS

No real per-date availability check yet

Vehicles carry a static available flag and a stock count, not a booking-conflict engine - two customers could request the same car for overlapping dates and both would land as pending for an admin to resolve manually. Flagged in the project's own write-up as the top next step, not discovered after the fact.

From the app

The customer site, the admin dashboard, and the automation it feeds.

Built with
Next.js 16React 19TypeScriptSupabase (Postgres + Auth)Tailwind CSS v4shadcn/uiZodGroqGeminin8nRecharts