Skip to content

feat: Adazo buyer-intent guides (10 jobs) - #79

Merged
SteveSimonson merged 1 commit into
mainfrom
feature/buyer-intent-guides
Aug 6, 2026
Merged

feat: Adazo buyer-intent guides (10 jobs)#79
SteveSimonson merged 1 commit into
mainfrom
feature/buyer-intent-guides

Conversation

@SteveSimonson

Copy link
Copy Markdown
Owner

Closes #78

Summary

  • 10 buyer-intent guides at /guides (SPA + routeMeta)
  • Catalog-adapted beauty intents; dropped brow kit (no SKUs)
  • FAQPage + ItemList SEO; nav Guides; AGENTS.md
  • Not medical advice; not gift listicles

Risk

Low — additive content/routes.

Test plan

  • npm run build green
  • Live titles/FAQ after deploy
  • IndexNow

Skill

affiliate-buyer-guides + pr-ship-gate

Concern-first beauty job pages (retinol, SPF, cleanser, travel, hair oil,
winter body, lips, scalp habits, prestige cream, heat tools) with catalog
picks, FAQ schema, hub, nav, route-meta, sitemap. Warm Riviera voice;
not medical advice. Separate from /gifts.

Closes #78
@SteveSimonson

Copy link
Copy Markdown
Owner Author

Independent code review — PR #79 (buyer-intent guides)

Reviewed against: catalog integrity, medical-claim safety, Associates compliance, SEO wiring, and Riviera editorial voice. Scope: buyerGuides.ts, BuyerGuide.tsx / BuyerGuides.tsx, seoData + route-meta + sitemap, types, nav, AGENTS.md. Did not merge.

Catalog integrity

  • 44 productSlug refs → 23 unique slugs → all resolve in src/data/products.ts (0 missing).
  • Ranks 1…N sequential on every guide (no gaps/dupes).
  • Runtime path is safe: getProduct + filter drops missing SKUs without crashing.
  • Note (pre-existing catalog): cerave-hydrating-facial-cleanser and la-roche-posay-toleriane-double-repair have no asinaffiliateUrl falls back to keyword search. Both appear heavily (retinol, cleanser, SPF/moisturizer lanes). Worth ASIN fill on a catalog PR, not a hard block here.

Spot-check (3 guides) — hard nos / voice / medical

Guide Hard no Voice Medical safety
retinol-first-timers Strong (no acid+retinoid stack night one; eye freestyle; skip SPF) Warm, human, anti-heroic dosing Explicit “not a prescription”; clinician deferral; no disease-treatment claims
sensitive-skin-cleanser Harsh scrub “to get used to it”; hot water as exfoliant Riviera, systems-not-single-bottle “Editorial shelves are not clinics”; NOT_MEDICAL FAQ
dry-scalp-vs-buildup Medical claims from aisle; oiling itch daily without clarifying Clear “two different problems” framing Names psoriasis/dandruff only to refuse diagnosis; FAQ “we cannot diagnose”

Broader medical scan across all 10: no cure/treat-disease/FDA/clinically-proven language. Shared NOT_MEDICAL + page footer (“not medical advice”) + AMAZON FAQ (price/Prime/ingredients on Amazon) are the right pattern. Prestige hard no (“don’t buy La Mer to fix a prescription problem”) is on-brand and safe.

Associates compliance

  • Amazon CTAs use affiliateUrl + rel="noopener noreferrer sponsored" on the guide row CTA (BuyerGuide.tsx ~216). Nested ProductCard also uses rel=…sponsored — consistent with gift guides.
  • Price copy: ~{price} on Amazon · varies — no locked-price implication.
  • Sitewide footer disclosure via BRAND.affiliateDisclosure remains in Layout.
  • Per-guide AMAZON FAQ sets expectation that checkout/price/returns live on Amazon.

SEO / routes / sitemap

  • Routes: /guides, /guides/:slug in App.tsx.
  • Nav: Guides in Layout (primary + footer).
  • buyerGuidesHubSeo / buyerGuideSeo: breadcrumbs + ItemList + FAQPage where FAQ present; article OG type on detail.
  • scripts/route-meta.ts emits hub + all 10 guide paths; worker/generated/routeMeta.json has /guides and all 10 slugs.
  • Sitemap: hub + 10 guides at priority 0.85; generate-sitemap.mjs extracts guide slugs (108 URLs reported).
  • Clear separation from /gifts (hub copy + AGENTS.md).

Build

  • npm run build green (sitemap → tsc → vite).

Nits (non-blocking)

  1. Intent ↔ shelf stretch on a few listicles (honest prose, but ItemList still ranks weak fits high):
  2. NOT_MEDICAL FAQ only on 3/10 guides (retinol, sensitive cleanser, dry scalp). Footer covers the rest; still worth pasting the constant onto winter/lips/prestige for FAQPage + consistency.
  3. Dual Amazon CTAs per pick (ProductCard + row button) — same as gift guides; slightly busy on mobile.
  4. Hub H2 “Money keywords” reads internal/SEO; “High-intent jobs” (or similar) would match Riviera voice better.
  5. Related guides = first 3 in array, not category-adjacent — fine at n=10.

What’s solid

  • Additive, low-risk surface; skill + AGENTS.md documented.
  • Original concern-first prose, not gift listicle clones.
  • Hard nos on all 10.
  • Compliance + SEO plumbing matches the gift-guide architecture without conflating the two jobs.

VERDICT: APPROVE_WITH_NITS

@SteveSimonson
SteveSimonson merged commit 06253e8 into main Aug 6, 2026
1 check passed
@SteveSimonson
SteveSimonson deleted the feature/buyer-intent-guides branch August 6, 2026 23:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Buyer-intent guides for Adazo (affiliate-buyer-guides)

1 participant