cd /news/ai-products/how-i-built-gifthive-an-ai-gift-find… · home topics ai-products article
[ARTICLE · art-91469] src=dev.to ↗ pub= topic=ai-products verified=true sentiment=↑ positive

How I Built GiftHive: An AI Gift Finder That Actually Picks Gifts People Want

A developer built GiftHive, a quiz-driven AI gift recommender that ranks real Amazon products by recipient fit rather than keyword match. The site uses a weighted scoring system based on tag overlap, budget, and occasion, and includes route-aware conversion optimizations. The developer shared the architecture and lessons learned, noting that route-aware components significantly improved quiz completion rates.

read2 min views1 publishedAug 11, 2026

Most "AI gift finders" are a search box with a chatbot glued on. I wanted to build something different — ** GiftHive**, a quiz-driven gift recommender that ranks real Amazon products by who the recipient

In this post I'll walk through the architecture, the conversion tricks I learned shipping it, and the bits I'm proudest of.

Picking gifts is emotionally expensive. You scroll Amazon for an hour, second-guess every option, and end up buying a gift card. Existing tools don't help because they optimize for keyword match, not recipient fit.

GiftHive flips the input: instead of "show me gifts under $50", you answer a 30-second quiz about the person (relationship, interests, occasion, budget) and get a ranked shortlist with explanations of why each gift fits.

The whole site is a 3-step conversion funnel:

Every step has a single primary CTA. The exit-intent modal is route-aware — it only fires on /

and stays silent on /quiz

and /results

so it never interrupts the funnel mid-flow. That bug cost me ~15% of quiz completions before I caught it.

Each quiz answer maps to a vector of attributes (interests, style, budget, relationship). Products in the catalog have matching tags. Ranking is a weighted score:

score = tag_overlap * w1 + budget_match * w2 + occasion_match * w3

No ML model needed — a few hundred products and clean tagging is enough to feel personal.

Every product link runs through getAmazonUrl()

which:

tag=

param — if so, replaces it with ours?tag=gifthive08-20

export function getAmazonUrl(gift: Gift) {
  const AFFILIATE_TAG = "gifthive08-20";
  if (gift.amazonUrl) {
    return /[?&]tag=/i.test(gift.amazonUrl)
      ? gift.amazonUrl.replace(/([?&])tag=[^&]*/i, `$1tag=${AFFILIATE_TAG}`)
      : `${gift.amazonUrl}${gift.amazonUrl.includes("?") ? "&" : "?"}tag=${AFFILIATE_TAG}`;
  }
  return `https://www.amazon.com/s?k=${encodeURIComponent(gift.name)}&tag=${AFFILIATE_TAG}`;
}

Every ASIN in the catalog is real and verified, so clicks register in the Associates dashboard.

A few things that moved the needle:

Deployed on Cloudflare Pages via wrangler

. The default *.pages.dev

domain works fine, but some startup directories (like BetaList) reject it as "free hosting" — something to keep in mind if you're planning a launch there.

GiftHive is live at ** https://gifthive.pages.dev** — I'd love feedback, especially on the quiz flow and the quality of recommendations.

If you're building something with a similar funnel, the biggest lesson was: route-aware components beat global components. A social proof toast that fires on every page feels spammy; one that only fires on /results

feels like proof.

Happy hacking!

── more in #ai-products 4 stories · sorted by recency
── more on @gifthive 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/how-i-built-gifthive…] indexed:0 read:2min 2026-08-11 ·