Inspiration

I felt inspired to make this website when researching a product myself, finding tons of biased information about it, and having to spend a while looking for real facts about it to help figure out whether I should buy it or not. Hence, to help other people find info about products that they're not sure whether they should get or not, easily and quickly, I made this website that just gives you the facts or the real POV of people on that product.

What it does

Verdikt is an AI-powered product review website using Gemini AI from Google AI Studio to give you a verdict on any product, based on facts (listed as pros and cons) and reliable reviews. You can search by product name or upload a photo, and Verdikt returns a structured report with a score out of 100, a Buy/Consider/Skip verdict, and a pros and cons list, using real feedback, teardowns, and forums from across the web. If you sign in, you can also ask follow-up questions to dig deeper, get as many verdikts as you want, and get your chat history saved to Supabase so you can revisit past verdicts.

Features

  • Chat-style review interface — ask about any product and get a detailed review
  • Upload a photo or capture one with your device camera
  • "This week's top rulings" — trending products on the landing view; click one to see its verdict.
  • Sources cited under every verdict and follow-up answer option
  • Sidebar with the user's recent chats with a way to reference them afterwards or delete them, and the new chat and our purpose buttons, to aid the user in finding what they want easily
  • Theme Personalization (light/dark)
  • Guest Option with 3 free verdiks a day and no follow up questions to ensure a bot doesn't burn out my API key limits, excluding this week's top rulings which are pre-generated at the start of each week displaying the most popular products.
  • Sign in/Sign up option to save your chats with the AI to Supabase for later reference, and you can get as many verdicts and ask as many follow up questions you want since I didn't want to enforce real paid plans for a hackathon
  • Responsive layout that scales fluidly on the smallest to the largest screens

Tech Stack

  • TanStack Start for the format/structure of my website
  • Nitro — server engine, deployed on Vercel
  • Tailwind CSS v4 with semantic design tokens (src/styles.css)
  • shadcn/ui for UI components
  • Framer Motion for animations and transitions
  • Lucide icons
  • Google Gemini 2.5 Flash for the AI to review the products
  • Supabase to save the chats and make sure a person can't get more than 3 verdicts without signing in
  • Zod for schema validation
  • React JS Library for the sign in/sign up forms and formatting the AI responses
  • Claude assisted me in the coding process by teaching me how to do some things like handling image uploads and boosting my productivity

Challenges I ran into

  • Getting Supabase Row Level Security and service role permissions configured correctly, because the tables needed explicit GRANT statements on top of RLS policies (First time using Supabase for more than just auth)
  • Deploying the TanStack Start app. I need to use Nitro because of my slightly outdated Vite and TanStack Start dependencies. Then I failed to host on Cloudflare Workers (doesn't natively support process.env), and had to switch to Vercel instead, which had a way simpler hosting method for this stack.
  • Handling image uploads through server functions while keeping base64 data out of the URL. (I've never sent images to the backend or Gemini AI's API before)

Accomplishments that I am proud of

  • A clean and smooth UI that has many animations and a great color scheme with light and dark options.
  • Real-time AI verdicts with a web-search tool rather than referencing static data, which might not even have the product the user wants to know about, or any specific details.
  • A fully working auth and chat persistence system that saves and restores conversation history.
  • Successfully deploying a full-stack app with edge functions.
  • Sending images to the backend and to the Gemini AI API.
  • The website is responsive and can operate well on phones and PCs.

What I learned

  • How to save chat history in Supabase and modify them with GRANT statements.
  • How to host on Vercel.
  • How to send images to the backend and to the Gemini AI API.
  • How to make Gemini prompts give responses in a specific format for the same structure of the verdicts.

What's next for Verdikt

  • Having the user personalize how the AI responds, like ChatGPT, would be especially useful in Verdikt because the user would find out exactly what they needed to know about each product far more quickly. Additionally, I could add an option for the user to say whether they bought the product or not, and why, as context for future responses by the AI for further personalization.
  • Have the AI track prices for the assigned products, and whenever there's a discount, email the user with the link.
  • Add account deletion. (I really wish I had enough time for this one specifically)

Built With

  • claude
  • framermotion
  • geminiaiapi
  • lucide
  • nitro
  • react
  • shadcn/ui
  • supabase
  • tailwindcss
  • tanstackstart
  • typescript
  • vite
  • zod
Share this project:

Updates

Submission history