Full-Stack AI Product
AI-Powered Car Rental Platform
A full-stack car rental platform pairing a customer storefront with a staff dashboard, where AI interprets free-text trip requests and qualifies inbound leads while Postgres remains the source of truth.
Context
Rental operations fail in two places: customers cannot describe what they actually need, and staff drown in unqualified inquiries. The goal was to use AI for interpretation and prioritization while keeping every car, price, and availability answer grounded in the database.
37
Postgres migrations
0
double bookings possible by design
2
surfaces in one codebase
Stack
Case Study Overview
Built storefront and staff dashboard in a single Next.js 16 App Router codebase using server components and server actions.
Kept the AI layer bounded so it ranks and interprets, while Postgres supplies every candidate and deterministic scoring computes results.
Enforced booking correctness at the database layer rather than in application code.
What I Built
Single-Codebase Full-Stack Architecture
Built a customer storefront and staff dashboard in one Next.js 16 App Router codebase, using server components and server actions for all data access with no client-side fetching library.
Grounded AI Recommendation Pipeline
Designed a recommendation pipeline where Gemini interprets free-text trip requests and ranks results, while Postgres supplies every candidate and a deterministic scorer computes match percentages — making hallucinated cars or prices structurally impossible.
Automatic Lead Qualification
Implemented lead qualification that scores and prioritizes inbound inquiries, with model output grounded against database records so priority and missing-information fields are recomputed rather than trusted.
Database-Enforced Domain Model
Modeled the domain in Postgres with 37 migrations, row-level security, SQL views and RPCs, preventing double bookings via a date-overlap exclusion constraint enforced at the database layer.
End-to-End Notification Workflow
Built an inquiry → background qualification → Zapier → authenticated webhook → Resend email flow with bearer-token constant-time verification, rate limiting, and typed error classification with retry on transient upstream failures.
Analytics Dashboard
Developed a responsive dashboard with Recharts analytics, a d3-geo sales map, and URL-driven filtering, sorting and pagination shared across list pages; tables switch to card layouts on smaller viewports.
Outcomes
AI features that cannot invent inventory or pricing, because the database owns every candidate and price.
Booking integrity guaranteed by a database constraint instead of application-level checks.
Inbound inquiries triaged and routed automatically through a verified, rate-limited webhook pipeline.
Why This Matters
This project shows how to ship AI features under production constraints: the model handles interpretation and ranking, while correctness, availability, and pricing stay owned by the database.