An intelligent car recommendation system that helps users find their perfect vehicle from a curated list based on their specific requirements.
Car Shortlister is a web application that combines AI-powered natural language processing with a structured car database. Users describe what they're looking for in a car, and the application uses an LLM to understand their requirements and intelligently match them with suitable vehicles.
- Natural Language Input: Describe your car requirements in plain English
- AI-Powered Matching: Uses Ollama (Gemma-4) to understand requirements and match with cars
- Rich Car Details: View comprehensive specs including engine, fuel type, transmission, mileage, top speed, and safety ratings
- Responsive UI: Clean, modern interface built with Tailwind CSS
- Real-time Processing: Instant feedback with loading states
- Next.js 16: React framework with server actions
- React 19: UI library with hooks
- Tailwind CSS 4: Utility-first CSS framework
- TypeScript: Type-safe development
- Ollama with Gemma-4: Local LLM for intelligent car matching
- Vercel AI SDK: Unified AI interface for model integration
- Zod: Runtime schema validation for AI outputs
- ESLint: Code quality and consistency
- pnpm: Fast, efficient package manager
├── app/
│ ├── layout.tsx # Root layout
│ ├── page.tsx # Main UI component
│ ├── action.ts # Server action for AI processing
│ ├── globals.css # Global styles
│ └── schema.ts # Data schemas
├── lib/
│ ├── car-list.ts # Car database
│ └── schema.ts # Zod validation schemas
├── public/ # Static assets
└── config files # Next.js, TypeScript, Tailwind config
- User enters their car requirements (e.g., "I need a budget-friendly SUV with good mileage")
- The form submits to
handleSubmitserver action - Ollama + Gemma-4 parses the requirements and returns matching car IDs
- The app filters the car list and displays matching vehicles
- Results show detailed specs: price, engine, transmission, mileage, safety rating, etc.
# Install dependencies
pnpm install
# Start development server
pnpm dev
# Open http://localhost:3000
### CHECK THE REQUIREMENTS SECTION FOR AI MODEL SETUP ###- Ollama: Ensure Ollama is running locally with the Gemma-4 model (
ollama pull gemma4:31b-cloudthis is a cloud model, so no need to download) [If you have another model/custom ollama server - go toapp/action.tsline:38and change the model there /line:29uncomment and do the same] - Node.js 18+: Required for Next.js
Answer:
I wanted a natural language search like in Google for finding cars, not many people would take the time to change filters like in Flipkart/Amazon.
I cut the images(time consuming), OpenAI cloud models(pricing) so I used a local Ollama with a free cloud model gemma4:31b-cloud. I also cut out making a separate backend(I have to code, link, deploy separately etc...). I have also no need for a PostgreSQL Database since the cars list is not changing any time soon nor do I have an admin panel.
Answer:
Next.JS with App RouterwithServer Actionsas backend.- I also used
TailwindCSSto reduce styling time.
I picked this stack because it helps setup a project with full frontend/backend capability and also vercel deployment would be faster.
Answer:
AI tools helped reduce repetitive tasks and edge case error fixing. The tool would setup what to do, I will proofread and fix errors and make it a little efficient and visually appealing.
For example to generate the seed list of cars - I used Grok AI by X(Twitter), while I created the Car schema based on requirements by the project.
Answer: They sometimes halucinate and do something that is not needed or leave out certain important steps.
Answer:
- I would use
ShadCN UIcomponents to make the UI industry standard and look more nice. - I would setup a separate
Backend service API, Which would help in scaling and a better developer experience. - I would setup an online
OpenAI / ClaudeLLM Model. - I would setup Jest to verify the Backend API and Frontend UI (But this is only when there is too many endpoints or screens, otherwise it would worth less).
- I would also setup a PostgreSQL Database.