DEV Community

Cover image for BottleBuddy
imalKesara
imalKesara

Posted on

BottleBuddy

This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend

What I Built

I built BottleBuddy, a small AI-powered product discovery app for a friend.

The idea came from a simple problem: browsing a large list of products and manually applying filters can be annoying when you already know roughly what you want.

Instead, BottleBuddy lets my friend describe what they're looking for in natural language.

For example:

"I'm looking for beer under Rs. 5,000 (LKR) with a lower ABV."

BottleBuddy interprets that request and converts it into structured filters such as budget, category, brand, and ABV range. It then searches the product data stored in MongoDB and displays matching products.

I also included regular filters so the application isn't dependent entirely on AI.

Demo

BottleBuddy currently runs locally because the AI model is running directly on my machine through Ollama.

Here's a video showing the complete flow:

https://youtube.com/shorts/uuS9bb2CIQA?feature=share

In the demo, I show:

  • entering a natural-language request
  • Gemma interpreting the request
  • BottleBuddy finding matching products
  • product information coming from MongoDB
  • manual filtering/search functionality

Code

GitHub repository : https://github.com/ImalKesara/BottleBuddy

How I Built It

I built BottleBuddy using SvelteKit and TypeScript for the application.

The AI part uses Gemma 3, Google's open-weight model, running locally through Ollama.

When someone enters a request such as:

"Beer under Rs. 5,000 lkr, preferably lower strength"

BottleBuddy sends the text from the SvelteKit server to the locally running Gemma model.

Gemma's responsibility is not to invent or recommend products. Instead, it interprets the natural-language request and converts it into structured search filters.

For example:

{
"maxBudget": 5000,
"category": "beer",
"brand": null,
"minAbv": null,
"maxAbv": 5
}

BottleBuddy then uses those filters to search the actual product data stored in MongoDB Atlas.

Why Does Open Innovation Matter?

Open innovation made the core idea behind BottleBuddy possible.

Because Gemma is an open-weight model, I was able to run the model locally on my own machine using Ollama and integrate it directly into my application.

That gave me much more control over how the AI part of the application works. The application is not tied to a closed AI API for its core natural-language search feature, and the model can be run on infrastructure I control.

It also made experimenting much easier. I could test prompts, structured outputs, and different ways of extracting search filters while keeping inference local.

For BottleBuddy specifically, this showed me that useful AI features don't always require sending requests to a large proprietary hosted service. An open-weight model running locally can be enough to build the core experience.

Top comments (0)