This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend
What I Built
Gift searches often return a pile of products before helping you decide what would actually feel personal. I built the Gift Hunter Agent to flip this script.
Instead of starting with a product query, Gift Hunter starts with the recipient: their interests, personal clues, budget, and the occasion. It acts as a thoughtful brainstorming partner—it generates eight distinct, personalized gift directions spanning different kinds of gifts, explains exactly why each idea might fit them, and even suggests a personal finishing touch.
Then, it goes a step further: it dynamically searches Google Shopping for the top three strongest ideas, returning real, verifiable listings that are strictly filtered by the user's maximum USD budget and relevance to the recipient's interests.
Demo
🎁 Try it live: gift-hunter-ai.vercel.app
Screenshots from the app:

Gift directions. Eight birthday ideas shaped around Alex's coding and pop-music interests and a $100 budget.

Verified picks. Product listings are grouped under their corresponding gift ideas.

Expanded shortlist. See more listings while keeping each product connected to its gift direction.
(Note: These captures show the app's Gemini fallback path, but the primary target is Gemma!)
Code
JaniDhruv
/
gift-hunter-ai
Gift Hunter AI is a personalized shopping agent built for the Hacktoberfest 'Build for a Friend' challenge. It combines SerpApi for real-time Google Shopping data, MongoDB for profile storage, and Google's Gemma model to reason about niche interests and find the absolute perfect, unique gift for your friends. Built with Next.js and Render.
🎁 Gift Hunter Agent
Thoughtful gifts, chosen for a person rather than a search query.
Share someone's interests, personal clues, budget, and occasion. Gift Hunter creates eight distinct directions and, when shopping is enabled, finds price- and interest-filtered listings for up to three ideas.
Built for the DEV Hacktoberfest Weekend Challenge: Build for a Friend.
💡 The Idea
Gift searches often return a pile of products before helping you decide what would feel personal. Gift Hunter starts with the recipient: their interests, personal clues, budget, and occasion. It turns that brief into a varied shortlist, explains why each idea might fit, and filters product listings against the stated interests and budget.
📸 Screenshots
How I Built It
Gift Hunter is built on a fast, modern stack prioritizing structured generation and live web search:
- Core App: Next.js 16 (App Router), React 19, and TypeScript.
- AI Planning Engine: The default planner uses Gemma, Google's open-weight model. The app sends the recipient brief to Gemma via Google AI Studio, requesting exactly eight gift directions using a strict JSON schema. If the output is invalid, it gets one repair attempt. There's also a graceful fallback to Gemini Flash Lite or a curated offline backup list if needed.
- Live Shopping Agent: Once Gemma generates the plan, the app takes the three highest-priority directions and passes them to SerpApi. SerpApi queries Google Shopping, giving the agent live web search capabilities. The server then filters these results to ensure the products match the parseable USD budget and the titles match at least one stated interest.
-
Data Layer: MongoDB Atlas is integrated as the database. It currently saves the gift-search briefs into a
gift_hunter.searchescollection.
How It Works Under The Hood
Here is a high-level flowchart of the agent's decision process:
flowchart TD
A[Recipient, interests, budget, occasion] --> B[Next.js search API]
B --> C{Configured planner}
C -->|Default| D[Gemma through Google AI Studio]
C -->|Optional| E[Gemma through NVIDIA NIM]
D -. eligible fallback .-> F[Gemini Flash Lite]
D --> G[Validate structured plan]
E --> G
F --> G
G -->|Valid| H[Prioritize three gift directions]
H --> I[Google Shopping through SerpApi]
I --> J[Filter by parsed price and stated interests]
J --> K[Display directions and any available picks]
G -->|Unavailable or unusable| L[Curated backup directions]
L --> K
Why Does Open Innovation Matter?
Open innovation matters because it prevents vendor lock-in and gives developers complete control over their agent's behavior.
By centering the app around Gemma, an open-weight model, the planner is not tied to one closed model or a single inference provider. While the default configuration targets Google AI Studio, I easily configured an optional alternate provider path via NVIDIA NIM.
This flexibility meant I could confidently build strict structured JSON generation without worrying that an opaque model update from a single vendor would break my parsing pipeline. Open models empower builders to own their architectures end-to-end, making tools like Gift Hunter more resilient, adaptable, and community-focused.
Future Enhancements
The foundation is set, and here is where Gift Hunter is going next:
- Friend profiles: Build reusable, user-controlled profiles from saved search briefs.
- Gift memory and shortlists: Bookmark listings and record gifts already given to avoid repeats.
- Memory-aware chat agent: Ask follow-up questions using relevant Atlas-backed profile and gift-history context.
- MongoDB Atlas semantic recall: Explore Vector Search to find related gifts when exact words differ.
Prize Categories
I am entering the following partner categories:
- Best Use of Gemma: Gift Hunter uses Google's open-weight model, Gemma, as the primary AI planning engine to parse recipient briefs and generate the structured JSON gift directions. It's served via Google AI Studio (with an optional NVIDIA NIM path).
- Best Use of SerpApi: The agent uses SerpApi to perform live Google Shopping web searches based on Gemma's top three generated gift directions, grounding the AI's recommendations in fresh, real-world product availability and pricing.
- Best Use of MongoDB Atlas: MongoDB Atlas is used as the foundational data layer. It actively stores saved gift-search briefs in a dedicated cluster, which serves as the persistence layer for the agent's future long-term memory and personalized friend-profile capabilities.


Top comments (1)
🎁 Okay, gift-giving question:
You know that one person who is impossible to shop for? What’s the weirdest, most specific thing you’ve ever gifted someone that somehow turned out to be a perfect gift? 👀
I’m genuinely curious — bonus points if it was something you never would’ve thought of without knowing the person really well.
Fun fact: this is probably the first time I’ve submitted something while not adding every feature I had planned. I was also deep in building OriginTrace for the Sanity AI Challenge, so I decided to actually ship Gift Hunter instead of expanding the roadmap forever. 😄