funnel (dev only)
The Next.js funnel app replacing web2app: static edge-personalized entrance + client step runner. Not linked from production.
Clean URL (middleware assigns)
Variant pages (direct, bypass middleware)
- /ob/en/skincare/e/control
- /ob/en/skincare/e/matched-683
- /ob/en/skincare/e/matched-684-685
- /ob/en/skincare/e/matched-692
- /ob/en/skincare/e/matched-693
- /ob/en/skincare/e/matched-694
- /ob/en/skincare/e/quiz-opener
- /ob/en/skincare/e/skin-first
- /ob/en/skincare/e/runner-skin-first
Step runner (onboarding engine)
- /ob/en/skincare/skincare_age (post-entrance continuation step)
- /ob/en/skincare/skincare_email (registration — real Firebase auth)
- /paywall (Phase B placeholder)
QA overrides
/ob/en/skincare?variant=<slug> forces + persists a variant; ?c=<creative_id> maps ad creatives to their matched variants (692, 693, 694, 683, 684/685); ?reset=1 clears the entrance cookies.