Skip to content

feat: add persona-consultation-builder skill (marketing) - #118

Open
Pralish wants to merge 1 commit into
Fluid-WeCommerce:mainfrom
Pralish:pralish/persona-consultation-builder
Open

feat: add persona-consultation-builder skill (marketing)#118
Pralish wants to merge 1 commit into
Fluid-WeCommerce:mainfrom
Pralish:pralish/persona-consultation-builder

Conversation

@Pralish

@Pralish Pralish commented Jul 31, 2026

Copy link
Copy Markdown

Summary

Hackathon-authored skill (Mist Hackathon, 2026-07-31 build night). Turns any persona a rep already understands about their audience — "curly, dry scalp"; "postpartum shed"; "color-treated blonde" — into a 2-question mini-consultation, down from the target brand's site-wide 19-question flow. Each invocation ships:

  • A Liquid theme section that renders the persona-scoped quiz on any storefront Page (server-rendered, SEO-visible, first-party cookies so FairShare + /:credit/ work with no iframe)
  • A Portal share screen with QuickShareWidget pointing at the storefront Page, so every rep gets an attributed share URL and the resulting cart carries enrollment_sponsor_member_id on conversion

The lever, in one line: the persona moves context acquisition from the CUSTOMER to the LINK. Same catalog, same resolver, same subscribe economics — a fraction of the drop-off.

Why "More for Less"

The old way for spinning up persona landing funnels is agency-scale: designer, dev, merchandiser, QA, a few weeks per page. Six pages a year on a good year. This skill compresses it to a chat turn — "50 persona funnels a quarter" becomes a real number, each with its own rep-attributed share link, all feeding the same subscribe economics.

Company-specific bits worth flagging for reviewers

The skill was authored for Prose during the hackathon, so the body carries examples from that brand:

  • Theme name: Prose Onboarding Theme (#56810)
  • Section directory: sections/prose_hair_quiz/
  • Product slugs: custom-curl-cream, custom-hair-mask, custom-scalp-serum, etc.
  • Concern → product mapping: tuned to Prose's haircare/skincare catalog

Every other skill in the community catalog is company-agnostic (uses {{company.name}} tokens with no hardcoded brand/theme IDs). Happy to generalize this one before merge — options:

  1. Replace theme/section names with placeholders ({{consultation_section_name}}) so any personalization brand can adopt
  2. Turn the concern → product mapping into a per-brand config the caller supplies
  3. Move to a new personal-care/ category since the derivation tables (texture, scalp, concern → signature product) assume that vertical

Guidance welcome on the target shape.

What's verified vs. not

Verified during the hackathon:

  • Country.id=214 is the only US row in Prose's environment (the internal fluid_product_import tool assumes 233 and 422s on every product create — filed separately as Mist feedback)
  • QuickShareWidget accepts shareableType: "Page" — verified in the widget source
  • form_type is a string enum (pre_purchase | post_purchase | general) and form_components at create-time is what triggers create_form_elements
  • create_page errors while succeeding — every call returned Object has been destroyed but persisted the Page; the skill documents the "GET pages, check by title, never retry" recovery so a naive retry doesn't produce 4 duplicate Pages
  • Slugs are derived from title regardless of custom_slug; canonical_url from the response is the only URL to trust
  • page.slug and page.handle are BLANK in Liquid — only page.title populates
  • fluid theme pull can duplicate a large section file's tail past {% endschema %} (renders as visible JS on the storefront while lint stays green); prevented by keeping CSS/JS in assets/ and preferring push --force over pull when local is known-good

Not yet verified:

  • End-to-end rep attribution — Prose's company has zero reps at hackathon time (GET /api/checkout/v2026-04/repstotal_count: 0), so QuickShareWidget → cart's enrollment_sponsor_member_id is wired but untestable until a real rep exists. The skill body says so plainly.

Test plan

  • Copy marketing/persona-consultation-builder/SKILL.md into ~/Fluid/<company>/skills/ (or wait for the manifest sync)
  • Run against a personalization brand with a Liquid theme
  • Verify the skill asks the three-question ask-once, then derives texture/scalp/signature-product without asking for tokens
  • crawl the resulting Page URL and confirm data-quiz-variant positions match predictions from the token tables
  • Confirm the Portal share screen renders a QR + link when opened by a rep account

Related

  • Mist Hackathon 2026-07-31, Prose track
  • Two blocking fluid_product_import bugs (stale country ISO map + silent field re-derivation on write) filed as separate Mist feedback

Hackathon-authored skill for a personalization brand (Prose). Turns a
persona a rep already understands about their audience — "curly, dry
scalp"; "postpartum shed"; "color-treated blonde" — into a 2-question
mini-consultation, down from the site-wide 19-question flow, with its
own rep-attributed share URL.

Ships two artifacts per invocation:

  - a Liquid theme section that renders the persona-scoped quiz on any
    storefront Page (server-rendered, SEO-visible, first-party cookies)
  - a Portal share screen with QuickShareWidget so every rep gets a
    unique attributed link and the consultation credits them on
    conversion via cart.enrollment_sponsor_member_id

The "more for less" lever: same catalog, same resolver, same subscribe
economics, but persona-scoped funnels can be spun up in a chat turn
each instead of an agency-scale multi-week landing-page project.

Skill body carries the persona registry table (routing map for future
triage pages / Mist personas tables) and 15+ hard-won gotchas verified
during the hackathon — create_page's error-while-succeeding behavior,
QuickShareWidget shareableType enum, Portal component_tree POST/PUT
shape, FairShare add-to-cart binding, and the fluid theme pull
duplicate-section-tail corruption on large section files.
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.

1 participant