{"slug": "how-i-built-gifthive-an-ai-gift-finder-that-actually-picks-gifts-people-want", "title": "How I Built GiftHive: An AI Gift Finder That Actually Picks Gifts People Want", "summary": "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.", "body_md": "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\n\nIn this post I'll walk through the architecture, the conversion tricks I learned shipping it, and the bits I'm proudest of.\n\nPicking 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*.\n\nGiftHive 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.\n\nThe whole site is a 3-step conversion funnel:\n\nEvery step has a single primary CTA. The exit-intent modal is *route-aware* — it only fires on `/`\n\nand stays silent on `/quiz`\n\nand `/results`\n\nso it never interrupts the funnel mid-flow. That bug cost me ~15% of quiz completions before I caught it.\n\nEach quiz answer maps to a vector of attributes (interests, style, budget, relationship). Products in the catalog have matching tags. Ranking is a weighted score:\n\n```\nscore = tag_overlap * w1 + budget_match * w2 + occasion_match * w3\n```\n\nNo ML model needed — a few hundred products and clean tagging is enough to feel personal.\n\nEvery product link runs through `getAmazonUrl()`\n\nwhich:\n\n`tag=`\n\nparam — if so, replaces it with ours`?tag=gifthive08-20`\n\n``` js\nexport function getAmazonUrl(gift: Gift) {\n  const AFFILIATE_TAG = \"gifthive08-20\";\n  if (gift.amazonUrl) {\n    return /[?&]tag=/i.test(gift.amazonUrl)\n      ? gift.amazonUrl.replace(/([?&])tag=[^&]*/i, `$1tag=${AFFILIATE_TAG}`)\n      : `${gift.amazonUrl}${gift.amazonUrl.includes(\"?\") ? \"&\" : \"?\"}tag=${AFFILIATE_TAG}`;\n  }\n  return `https://www.amazon.com/s?k=${encodeURIComponent(gift.name)}&tag=${AFFILIATE_TAG}`;\n}\n```\n\nEvery ASIN in the catalog is real and verified, so clicks register in the Associates dashboard.\n\nA few things that moved the needle:\n\nDeployed on Cloudflare Pages via `wrangler`\n\n. The default `*.pages.dev`\n\ndomain 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.\n\nGiftHive is live at ** https://gifthive.pages.dev** — I'd love feedback, especially on the quiz flow and the quality of recommendations.\n\nIf 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`\n\nfeels like proof.\n\nHappy hacking!", "url": "https://wpnews.pro/news/how-i-built-gifthive-an-ai-gift-finder-that-actually-picks-gifts-people-want", "canonical_source": "https://dev.to/hao764/how-i-built-gifthive-an-ai-gift-finder-that-actually-picks-gifts-people-want-26bh", "published_at": "2026-08-11 04:41:44+00:00", "updated_at": "2026-08-11 04:45:14.371833+00:00", "lang": "en", "topics": ["ai-products", "ai-tools", "developer-tools"], "entities": ["GiftHive", "Amazon", "Cloudflare Pages", "BetaList"], "alternates": {"html": "https://wpnews.pro/news/how-i-built-gifthive-an-ai-gift-finder-that-actually-picks-gifts-people-want", "markdown": "https://wpnews.pro/news/how-i-built-gifthive-an-ai-gift-finder-that-actually-picks-gifts-people-want.md", "text": "https://wpnews.pro/news/how-i-built-gifthive-an-ai-gift-finder-that-actually-picks-gifts-people-want.txt", "jsonld": "https://wpnews.pro/news/how-i-built-gifthive-an-ai-gift-finder-that-actually-picks-gifts-people-want.jsonld"}}