Reels Caption Prompt Engineering
Prepared by: Charlotte (COO) |
Date: February 25, 2026 |
For: Stitch (CTO) — integration into contentService.js |
Status: Ready for implementation when Reels build begins
Context: Jason approved all 6 Reels implementation decisions (DECISIONS.md 2026-02-25). Reels build is deferred until 10+ active users are posting images. This document prepares the AI caption prompt modifications so Stitch can drop them in when the time comes. The existing voice calibration system, archetype assignments, and 2-minute approval loop remain unchanged.
1. What Changes for Reels Captions
Reels captions serve the same purpose as image captions (authentic, voice-matched text that sounds like the stylist) but the format changes how people consume them. Key differences:
| Dimension |
Image Post |
Reel |
| First impression |
Caption is visible immediately — it's part of the feed card alongside the image |
Video plays first. Caption is secondary — viewer reads it only if the video hooks them |
| Hook purpose |
Stop the scroll, get them to look at the image |
Complement the video hook — add context, curiosity, or reaction that makes them read more |
| Ideal length |
50-200 words (varies by archetype) |
30-120 words — shorter because the video does the heavy lifting |
| CTA style |
"Save this" / "Tag a friend" / educational CTAs |
"Follow for more" / "Save this" / "Watch till the end" — video-native CTAs |
| Language |
Can describe the visual in detail (reader can see the photo) |
Should use dynamic/temporal language ("Watch this," "Wait for it," "Before → after") |
| Emoji pattern |
Follows archetype calibration |
Slight upward nudge (+1 on density scale) — Reels are more energetic by convention |
2. The Prompt Modification
The existing caption generation prompt stays intact. We add a conditional block when mediaType === 'REELS'. Here's the exact prompt addition for Stitch to splice into contentService.js:
CONTENT FORMAT: SHORT-FORM VIDEO REEL
This caption accompanies a short-form Instagram Reel (video), not a static image.
Key adjustments for Reels:
1. SHORTER CAPTIONS — The video does the storytelling. Your caption adds
context, personality, and a reason to engage. Aim for 30-120 words
(roughly 40% shorter than your typical image caption for this archetype).
2. DYNAMIC LANGUAGE — Use temporal, motion-based language that matches
video energy. Say "watch," "wait for it," "the moment when," "before →
after" — not "look at," "check out this photo," or "here's a pic of."
Never reference a "photo" or "image" — this is a video.
3. COMPLEMENT, DON'T NARRATE — The viewer can SEE what's happening.
Don't describe the video frame by frame. Instead, add what the video
can't show: the backstory, the technique decision, the client's
reaction, the "why" behind the result.
4. HOOK LINE — The first line matters even more for Reels. It should
create curiosity or emotional pull that makes them read the caption
AFTER the video hooks them visually. Formats that work:
- Reaction: "I literally gasped when she saw it."
- Curiosity: "3 hours. 47 foils. Worth every single one."
- Bold claim: "This is the color she's been asking for since 2024."
- Question: "Can we talk about this blend for a sec?"
5. CTA PATTERNS — Use Reel-native CTAs. Pick ONE:
- "Follow for more [technique] content"
- "Save this for your next appointment"
- "Send this to your colorist"
- "Drop a [emoji] if you'd sit in this chair"
Avoid: "Link in bio" (rarely effective on Reels), "DM me" (can feel
pushy in Reel format).
6. EMOJI NUDGE — Add 1-2 more emojis than this archetype's normal
calibration. Reels are higher-energy content. Even "Polished &
Elevated" archetypes can use 2-3 emojis on Reels without breaking
character. Don't overdo it — just a slight bump.
7. HASHTAG RULES — Same rules apply: max 5 hashtags, industry-native,
no banned terms. For Reels, prioritize discovery hashtags over niche
ones (Reels have broader reach than feed posts via the Explore page).
Include #reels or #hairtok only if it fits naturally — don't force it.
Video description: [USER_VIDEO_DESCRIPTION or AI_FRAME_ANALYSIS]
Video duration: [DURATION_SECONDS] seconds
Content type: [TRANSFORMATION / TECHNIQUE / BEHIND_THE_CHAIR / CLIENT_REVEAL / PROCESS]
3. Archetype-Specific Reel Adjustments
Each archetype's Reel captions should feel like the same person — just posting a video instead of a photo. The core personality stays. Here's how each of the 4 brand vibes adapts for Reels:
| Brand Vibe |
Image Caption Style |
Reel Caption Adaptation |
Example Hook |
| Polished & Elevated |
Refined, minimal emoji, professional storytelling |
Slightly warmer — video format allows more personality. Still elegant, but a touch more conversational. 2-3 emojis max. |
"Three hours of foils and one very happy client. This is what dimensional blonde looks like when you take your time." |
| Bold & Expressive |
High energy, emoji-forward, exclamation-heavy, hype |
Natural fit for Reels — this archetype barely needs adjustment. Let the energy match the video pace. 4-6 emojis. |
"OKAY BUT CAN WE TALK ABOUT THIS COLOR 😍🔥 I've been waiting to post this one!!" |
| Laid-Back & Natural |
Chill, earthy, lowercase energy, conversational |
Keep the relaxed vibe — don't inject artificial energy. Reels can be calm too. Let the video speak, caption adds gentle context. 1-3 emojis. |
"just a really beautiful balayage on a tuesday afternoon. sometimes the simple ones hit different." |
| Fun & Personal |
Chatty, community-focused, relatable, playful |
Lean into the "talking to a friend" energy. Reels feel like a conversation — this archetype is already there. Humor and relatability work well. 3-5 emojis. |
"POV: she shows you the Pinterest inspo and you actually nail it on the first try 😭💕 (it never happens don't get used to it)" |
4. Reel Content Types & Prompt Hints
The user tells us what they're posting (or we infer from the video). Each content type gets a specific prompt hint that guides the caption's angle:
| Content Type |
Prompt Hint for AI |
Caption Angle |
| Transformation (before → after) |
"This Reel shows a hair transformation — the video likely has a reveal moment. Caption should build anticipation or react to the result." |
Focus on the journey or the reaction. "From level 4 to this" or "Her face when she saw it" energy. |
| Technique / Process |
"This Reel shows a hair technique in progress — foiling, painting, cutting, etc. Caption should add expert context the viewer can't see." |
Educational but in-voice. Why this technique, what makes it work, pro tips. "The trick with money pieces is placement, not brightness." |
| Behind the Chair |
"This Reel shows the stylist's daily work life — the booth, the salon, the routine. Caption should feel personal and relatable." |
Day-in-the-life energy. "Saturday fully booked, coffee barely surviving" kind of vibe. Connects the person to the profession. |
| Client Reveal |
"This Reel captures the client's reaction to their finished hair. Caption should amplify the emotional moment." |
All about the reaction. "This is why I do this" or "Her reaction is everything." Let the client's joy carry the caption. |
| General / Other |
"This Reel is general salon or hair content. Caption should match the stylist's voice and be engaging without over-explaining." |
Flexible. Let the archetype lead. Keep it natural. |
5. Image vs. Reel Caption Examples
Same archetype, same type of content — different format. These examples show how the prompt modification changes output while maintaining voice consistency.
Polished & Elevated — Balayage Result
Image Caption
Dimensional blonde that lives and breathes. This balayage was painted freehand over two sessions to preserve hair integrity while building this luminous, multi-tonal result. The shadow root grows out naturally — no harsh line, no maintenance panic. Sometimes the best color is the one that looks like it's always been there.
#balayage #dimensionalblonde #haircolorist #shadowroot #salonlife
Reel Caption
Two sessions to get here. Worth every minute ✨
Freehand balayage with a shadow root that grows out without the drama. This is what "low maintenance" actually looks like.
Save this for your next appointment 📌
#balayage #dimensionalblonde #haircolorist #shadowroot #salonlife
Bold & Expressive — Vivid Color
Image Caption
EXCUSE ME?? 😍🔥 This purple to silver melt is GIVING everything!! She came in wanting something bold and I said say less 💜✨ We pre-lightened to a level 10, then layered a custom purple through the mid-lengths fading into an icy silver at the ends. The dimension!! The shine!! I can't stop staring 😭
#vividhair #purplehair #silverhair #colorist #hairgoals
Reel Caption
She said "go bold" so I WENT BOLD 💜🔥
Purple to silver melt. Custom mixed. 4 hours in the chair and SO worth it 😍 Her face at the end says everything!!
Drop a 💜 if you'd rock this color
#vividhair #purplehair #silverhair #colorist #hairgoals
Laid-Back & Natural — Simple Blowout
Image Caption
just a really clean blowout on naturally wavy hair. used a 1.5" round brush to smooth without killing the movement. sometimes the goal isn't straight, it's polished with personality. love days like these 🌿
#blowout #hairstylist #wavyhair #salonday #naturalhair
Reel Caption
the sound of a round brush doing its thing > everything 🌿
smooth but not flat. polished but still her. that's the goal.
#blowout #hairstylist #wavyhair #salonday #naturalhair
Fun & Personal — Client Reveal
Image Caption
THIS is why I became a stylist 😭💕 My girl has been coming to me for 2 years and she finally let me do the money pieces she's been eyeing on Pinterest!! The reveal was everything — she literally teared up. I teared up. We were a MESS lol. Hair that makes you feel something? That's the whole point 💛
#moneypiece #hairreveal #hairstylist #clientlove #behindthechair
Reel Caption
waited 2 years for her to say yes to the money pieces and I am NOT okay 😭💕
watch her face. WATCH HER FACE. that's the whole job right there 💛
follow for more chair moments like this 🥹
#moneypiece #hairreveal #hairstylist #clientlove #behindthechair
6. Implementation Notes for Stitch
- Prompt insertion point: In contentService.js, after the voice profile / archetype block and before the content context block. Conditional on
postType === 'REEL' or mediaType === 'REELS'.
- New parameters needed from frontend:
mediaType ('IMAGE' | 'REELS'), videoDuration (seconds, optional), reelContentType ('TRANSFORMATION' | 'TECHNIQUE' | 'BEHIND_THE_CHAIR' | 'CLIENT_REVEAL' | 'GENERAL').
- Emoji density adjustment: When building the archetype calibration values for the prompt, add +1 to the emoji density scale (capped at max). This is a soft nudge, not a hard override — the AI can adjust based on content.
- Caption length validation: Image captions have a soft target of 50-200 words. Reels should target 30-120 words. This is a prompt instruction, not a hard truncation — let the AI calibrate naturally.
- No separate prompt file needed. This is a conditional block within the existing prompt builder. The voice system, archetype system, hashtag system, and approval flow are all unchanged.
- Test approach: Generate 3 Reel captions per archetype (12 total) and compare against image captions for the same content. Verify: shorter length, dynamic language, no "photo/image" references, Reel-native CTAs.
Brand rule reminder: Reel captions follow all existing brand rules — no "AI," no fabricated proof, max 5 hashtags, no banned terminology. The "Stylify writes/learns/sees" rule applies even in video context. If the caption needs to reference the tool, say "Stylify" not "AI."
7. Reel-Specific UX Copy
Customer-facing text that Stitch will need for the Reels upload flow. All copy follows brand voice rules.
| Screen / Element | Copy |
| Reel upload button | "Upload a Reel" |
| Upload instruction | "Add a video from your camera roll. Stylify handles the caption." |
| Video processing state | "Getting your video ready..." |
| Caption generation state | "Writing your caption..." (same as image flow) |
| Cover frame picker label | "Pick a cover frame" |
| Cover frame instruction | "Drag to choose the frame that shows your best work." |
| Reel ready for review | "Your Reel is ready. Review and approve." |
| Post type indicator | Show a small "Reel" badge/icon on the post card — distinguishes from image posts in the calendar view |
| Error Condition | Message |
| Non-MP4 file | "This video needs to be an MP4 file. Most phone recordings are already MP4 — if yours isn't, try re-exporting from your camera roll or editing app." |
| Video too long (>90 sec) | "Reels can be up to 90 seconds. This video is [X] seconds — try trimming it in your camera roll or CapCut before uploading." |
| Video too short (<3 sec) | "Reels need to be at least 3 seconds long. This video is too short for Instagram." |
| Wrong aspect ratio | "This video's dimensions don't match Instagram Reels (9:16 vertical). Try recording in portrait mode or crop it in your camera roll." |
| File too large (>1GB) | "This video is too large for Instagram (max 1GB). Try compressing it in your camera roll settings or an app like CapCut." |
| Upload failed (network) | "Upload didn't go through — check your connection and try again." |
| Instagram publish failed | "Instagram couldn't publish this Reel. This usually means a temporary issue on their end — try again in a few minutes." |
A simple reference page or tooltip that users see when they hit a format error. Could be a Help Center entry or inline expandable.
| Requirement | What It Means |
| Format: MP4 | Most iPhones and Androids record in MP4 by default. If you edit in CapCut, InShot, or similar apps, export as MP4. |
| Duration: 3-90 seconds | Short and sweet works best. Most hair Reels that perform well are 15-30 seconds. |
| Orientation: Vertical (9:16) | Record in portrait mode (phone upright). Horizontal videos won't fill the Reel frame. |
| Max size: 1GB | A 60-second phone recording is usually 100-300MB — well under the limit. |
| Resolution: 1080x1920 recommended | Standard phone camera quality is perfect. No special settings needed. |
8. What This Document Does NOT Cover
- Backend implementation — Stitch owns the code changes. This provides the prompt text and UX copy for him to integrate.
- Video storage (R2 setup) — Separate brief. Cloudflare R2 bucket creation, CORS config, and credentials are a discrete 30-min task.
- Database migration — Covered in the Reels Implementation Brief.
- Hook Optimization (Phase 2) — The hook guidance here is basic. The full Hook Optimization feature (decision gate: 50+ captions published) will add systematic A/B testing of hook patterns. This doc gives Stitch enough to ship v1.
- Custom cover upload — Deferred to v2 per decision #5. Only frame picker for v1.
Kristi Review Note: The UX copy in Section 7 is customer-facing and will need Kristi's approval before going live. Charlotte will submit it to the Content Review Portal when the Reels build begins. The prompt text in Section 2 is internal (users never see it) and does not need Kristi review.