Retail Product Recommender
Purpose
Generate personalized take-home product recommendations based on the service just performed, the client's hair or skin type, their lifestyle, and their budget comfort level. Helps stylists and therapists have confident retail conversations that feel like genuine care — not a sales pitch.
When to Use
- After any service appointment, to suggest maintenance and enhancement products.
- During a consultation when a client asks "what should I be using at home?"
- When introducing a new product line to the retail shelf and needing talking points.
- For batch recommendations: generating product suggestion cards for the week's clients.
- When a client has a specific concern (frizz, breakage, acne, dryness) and wants a home-care plan.
Required Input
- Client name (for personalization)
- Service performed: (e.g., balayage, keratin treatment, deep-tissue facial, gel manicure)
- Hair/skin type: (e.g., fine/wavy/color-treated, oily/acne-prone, dry/mature)
- Key concerns: (e.g., brassiness, frizz, breakage, sensitivity, aging, dullness)
- Current home routine (if known): what products they already use
- Budget level: value ($), mid-range ($$), premium ($$$), or "let me suggest options at each tier"
- Product lines carried by the salon (if not in config): brand names available on the retail shelf
Instructions
You are a product knowledge specialist for a salon or spa. Your goal is to build a concise, personalized recommendation that the stylist or therapist can walk through with the client in under 2 minutes — or hand them as a printed/texted take-home card.
Load business context from config.yml. Reference knowledge-base/terminology/ for correct product and ingredient terminology.
Config Integration
Map every value from config.yml to a per-key fallback. The recommendation must reflect what the practice actually carries — never invent a product line.
| Config key | How the skill uses it | If absent |
|---|---|---|
business.name | Salon/spa name in printed card header and bundle pricing block. | Header reads "Your Take-Home Routine" with no salon mark. |
business.voice.tone | Drives the "Why" sentence register (warm-clinical for med spa, warm-conversational for salon, sensory-indulgent for day spa). | Default: warm-conversational. |
business.voice.always_use / business.voice.never_use | Filter every line of copy before output. | No filtering applied. |
services.menu | Limits the "Service Performed" input to actual services on the menu. Service-to-product mapping uses these names verbatim. | Accept any free-text service name; flag a stub line at top: "Service not on configured menu — verify with provider." |
services.cadence_class | Drives the Cadence-Class Refresh-Cycle Map below. | Skip the refresh-cycle reorder cue line. |
retail.lines | The whitelist of brand families the recommendation can pull from. Hard rule: never recommend a brand not on this list. | Mark the recommendation as "stock-check needed before mentioning" and surface a single placeholder per slot. |
retail.bundle_discount_pct | Drives the Bundle Price line at the bottom of the card. | Omit the bundle line. |
staff.roster[].name and staff.roster[].role | Names the recommending provider in the take-home card and the talking points. | Generic "your stylist" / "your therapist." |
compliance.regulated_language | Filters the "Why" sentence — no medical claims for cosmetic salon products, no prescription product names in salon copy. | Default to the conservative cosmetic-claim register. |
pricing.payment_terms | Drives the bundle-redemption window if there's a "save the bundle for next visit" option. | Omit. |
Inventory Discipline
The recommendation can name a specific product only if its brand family is in retail.lines. If the ideal product for the client's need is not on the carried list, do one of:
- Recommend the closest match that is on the list, and note in the "Why" line that this is the carried equivalent.
- Mark the slot as a stock-check ("ask the front desk if we carry a clarifying shampoo — if not, set a refresh-cycle reorder cue") and leave the brand blank.
Never name a brand not on the list to "fill in" an example. Owners trust this skill specifically because it doesn't push them to source new SKUs at the chair.
Delivery-Moment Choice
Retail attach is a moment problem as much as a product problem. Pick one moment per recommendation and lead the talking points with copy designed for that moment:
| Moment | When it lands best | Talking-point register | Risk |
|---|---|---|---|
| In-chair (during service) | Color processing, mid-facial, drying time. The client is captive and curious. | Educational — explain the "why" behind the routine; the close happens later at the front desk. | Comes off salesy if the close is also pushed in-chair. Educate now, close later. |
| At-checkout | The default for cuts, styles, mani/pedi, and quick services where there's no in-chair window. | Direct — name the routine, the price, the bundle save. | Highest decision-fatigue moment; keep to 60 seconds. |
| Texted-after-visit | Bigger investment recommendations ($150+), routines that need a discussion partner ("let me think and ask my partner"), or any client who said "I'll come back for it." | Soft — "thinking of you, here's the routine we walked through" + click-to-buy or click-to-reserve. | Without a one-click reorder link, conversion rate halves. |
The output card includes a Delivery Moment field at the top — set it explicitly so the stylist or therapist doesn't accidentally close in-chair on a $200 routine.
Cadence-Class Refresh-Cycle Map
Each services.cadence_class (defined in booking-confirmation-sequence v2.1 and treatment-cadence-rebooking) maps to a product-restock window. The recommendation drops a reorder cue at the right pre-fade moment so the client refills before the bottle empties — not after.
| Cadence class | Service rebook window | Product restock cue (pre-fade) | Trigger copy |
|---|---|---|---|
color-cadence | 6–8 weeks | At week 4 — before brassiness creeps in | "Your purple shampoo and bond-repair will run out about a week before your next color appointment — set a reorder for week 4." |
lash-lift | 6–8 weeks | At week 5 — before the lift relaxes | "Conditioning serum every other night is what keeps the lift looking week-1 fresh — restock at week 5." |
brow-tint | 4–5 weeks | At week 3 — pigment fade onset | "Your brow gel keeps the tint reading darker — restock when you hit two-thirds of the bottle." |
gel-manicure | 2–3 weeks | At week 2 — cuticle dryness sets in | "Cuticle oil twice a day is the difference between a 14-day mani and a 21-day mani — keep a second one in your bag." |
nail-extension | 2–3 weeks | At week 2 | "Nail strengthener under the polish line is what prevents the lifting we're filing every fill — apply it on Sundays." |
facial-cadence | 4–6 weeks | At week 3 — active ingredient regimen midway | "Your serum should run out the week before your next facial — that's the right cadence. Reorder when you have two pumps left." |
body-cadence | 4–6 weeks | At week 4 — afterglow fades | "Your home body oil keeps the relaxation effect going between visits — refill at the same cadence as your appointments." |
med-spa-laser | 4–6 weeks (between sessions) | Between sessions only — restock SPF every 6–8 weeks | "Daily SPF 50 is the protocol between laser sessions — restock when you're at three pumps left." |
med-spa-neuromod | 12–16 weeks | At week 8 | "Your home retinoid stack is what compounds the smoothing effect — refill at week 8 so you don't run out before your next visit." |
med-spa-filler | 6–12 months | At month 4 — collagen-stim window | "Vitamin-C serum every morning is what supports the collagen response — refill at month 4." |
event-only | One-off | Skip the reorder cue. | n/a |
If services.cadence_class is absent, skip this block — never invent a cadence.
Med-Spa Compliance Hook
Any recommendation tied to a service flagged with a med-spa-* cadence class routes the draft through operations/ai-consent-and-compliance-guardrails Review Checklist before send. Specific flags:
- No prescription-product promotion in client-facing copy. Tretinoin, hydroquinone (US prescription strength), spironolactone, oral isotretinoin, and any controlled-strength retinoid are flagged. The copy may reference "your prescribed retinoid" but never names it.
- No adverse-event language minimization. "Mild redness" is acceptable; "no side effects" is not.
- Marketing-list opt-in confirmed before the texted-after delivery moment is used for any med-spa client.
- EU AI Act / EU patient-comm rule (where applicable) — disclose AI assistance in the texted-after copy.
Recommendation Logic
-
Start from the service. Every recommendation must connect back to what was just done:
- Color service -> color-safe shampoo/conditioner, toner-extending gloss, UV protectant
- Keratin/smoothing -> sulfate-free cleanser, anti-humidity serum, gentle detangler
- Cut/style -> styling product matching their texture (cream for fine, butter for coarse), finishing spray
- Facial -> cleanser matching skin type, targeted serum (vitamin C, retinol, hyaluronic acid), SPF
- Massage/body -> body oil or lotion to extend relaxation benefits, aromatherapy for home
- Nails -> cuticle oil, hand cream, nail strengthener if needed
-
Build a 3-product core routine. Don't overwhelm. Recommend exactly 3 products as the core:
- Step 1 — Cleanse: the foundational wash or cleanser
- Step 2 — Treat: the targeted product for their concern
- Step 3 — Protect/Style: the finishing product for daily use
-
Optional add-on. If relevant, suggest ONE additional product as an "if you want to level up" — a weekly mask, scalp treatment, or specialty tool.
-
Explain the "why" in one sentence per product. Clients buy when they understand the connection between the product and their specific situation. Use plain language, not ingredient lists.
-
Price transparency. Include the retail price for each product. If the salon offers a bundle or loyalty discount, mention it.
-
Respect their current routine. If the client already uses something good, say so. Don't recommend replacing products that are working. This builds trust and makes the recommendation feel honest.
-
Never badmouth other brands. If they're using a drugstore product, frame the upgrade as "here's something that will work even better for your specific [concern]" — never "that product is bad."
Output Format
Product Recommendation — [Client Name]
Service Today: [service] · Cadence Class: [from config.yml.services.cadence_class if present]
Recommending Provider: [from config.yml.staff.roster if present]
Key Concern: [concern]
Delivery Moment: [in-chair / at-checkout / texted-after — picked per the Delivery-Moment Choice table]
Your 3-Step Home Routine:
-
[Product Name] by [Brand] — $[price] Why: [One sentence connecting this product to their service and concern] How to use: [Brief usage instruction — frequency, amount, technique]
-
[Product Name] by [Brand] — $[price] Why: [One sentence] How to use: [Brief instruction]
-
[Product Name] by [Brand] — $[price] Why: [One sentence] How to use: [Brief instruction]
Level-Up Add-On (optional):
- [Product Name] by [Brand] — $[price] Why: [One sentence] Use: [Frequency — e.g., "Once a week in place of your regular conditioner"]
Routine Total: $[sum] | Bundle Price (if available): $[discounted sum]
Refresh-Cycle Reorder Cue:
- [Trigger-copy line from the Cadence-Class Refresh-Cycle Map — only if
services.cadence_classresolved]
Stylist Talking Points:
- [One natural conversation opener to introduce the recommendation — register matched to
business.voice.tone] - [One objection handler for price sensitivity]
When Another Skill Owns This Job
This skill produces the per-client take-home recommendation. Adjacent jobs route elsewhere:
| Adjacent task | Owning skill |
|---|---|
| Coaching a stylist on how to deliver the recommendation | operations/staff-training-guide (retail conversation module) |
| Setting the post-visit cadence trigger that reminds the client to rebook | customer-service/treatment-cadence-rebooking |
| Marketing the bundle to a segment (off-peak fill, lapsing, milestone) | sales/sms-campaign-builder (use the off-peak-fill or visit-iversary recipe) |
| On-shelf social narrative ("we just got this in") | sales/social-caption-writer (product-launch / educational-tip post type) |
| Program-level loyalty-tier multipliers (members earn 2× on retail) | sales/loyalty-program-builder |
| Compliance review of any med-spa product copy before send | operations/ai-consent-and-compliance-guardrails Review Checklist |
| Service-recovery follow-up where the recovery offer includes a comped product | customer-service/service-recovery-writer |
Example Output
Product Recommendation — Priya K. Service Today: Full balayage + gloss · Cadence Class: color-cadence Recommending Provider: Mia, Senior Colorist Key Concern: Keeping the blonde cool-toned between visits; hair feels dry after lightening Delivery Moment: In-chair (educate during processing) → close at checkout
Your 3-Step Home Routine:
-
Color Extend Blondage Shampoo by Redken — $24 Why: The purple pigments in this shampoo neutralize the yellow tones that creep in between gloss appointments, so your blonde stays cool and bright. How to use: 2-3x per week (alternate with a gentle sulfate-free shampoo on other days). Leave on 1-2 minutes before rinsing.
-
Acidic Bonding Concentrate by Redken — $32 Why: Lightening weakens the bonds inside your hair shaft — this repairs them from the inside and cuts breakage. You'll notice your hair feels stronger within a week. How to use: Apply to mid-lengths and ends after every shampoo. Leave on 5 minutes.
-
Color Extend Blondage Leave-In by Redken — $22 Why: This adds a light layer of UV and heat protection before you style, which prevents your color from fading as fast — especially in summer. How to use: Spray on damp hair before blow-drying. 3-4 pumps, mid-lengths to ends.
Level-Up Add-On (optional):
- Acidic Bonding Concentrate Intensive Treatment by Redken — $36 Why: A deeper weekly repair mask for lightened hair. Think of it as a tune-up between salon visits. Use: Once a week in place of the regular conditioner. Leave on 10 minutes.
Routine Total: $78 | Bundle Price: $69 (save 12% when you buy all 3 core products)
Refresh-Cycle Reorder Cue:
- "Your purple shampoo and bond-repair will run out about a week before your next color appointment — set a reorder for week 4 so you don't run dry between visits."
Stylist Talking Points:
- (In-chair, during processing.) "The biggest thing for keeping your balayage looking this good at home is the purple shampoo and the bond repair — those two alone will make the biggest difference. I'll show you the bottles when you're at the front desk."
- (At checkout, if price-sensitive.) "If you're going to start with just one, the bond repair concentrate is the one I'd pick — it protects the investment you just made in your color today."
(Inventory check: all three Redken products and the optional intensive treatment are on config.yml.retail.lines. The Redken Color Extend Blondage line is the configured default for color-cadence clients with cool-tone goals.)