The Playfulness Zones
Every screen in Stylify falls into one of three zones. The zone determines how much personality the copy should have.
Green Zone — Full Playfulness
- Loading states
- Success confirmations
- Empty states
- Onboarding screens
- Dashboard greetings
- Post approval celebrations
- Batch completion messages
Yellow Zone — Warm but Clear
- Non-critical error messages
- Help text / tooltips
- Image upload prompts
- Voice selection
- Feature discovery
- Trial countdown reminders
Red Zone — No Playfulness
- Billing & payment
- Account deletion
- Critical errors (data loss, connection failure blocking work)
- Security warnings
- Terms of Service
- Time-critical alerts (approval window closing)
The Stress Test
Before any playful copy ships, ask: "If I'm a stylist who just lost a client and is worried about rent, does this feel supportive or dismissive?" If there's any doubt, dial it back.
Copy Rewrites — Loading States
Loading states are the highest-leverage playfulness opportunity. The stylist is waiting anyway — a smile costs zero time. Use a rotating pool so it doesn't get stale. Never show the same message twice in a row.
Caption Generation Loading
- "Stylifying your caption..."
- "Finding the perfect words..."
- "Channeling your voice..."
- "Making it sound like you..."
- "Matching your style..."
Implementation note: Store the pool as an array in a shared constants file (e.g., frontend/src/config/playfulCopy.js). Use a simple random selector that tracks the last-shown index to prevent consecutive repeats.
Image Upload / Processing
- "Checking the lighting..."
- "Looking good — uploading now..."
- "Getting your photo ready..."
- "Nice shot — processing..."
General Page Loading
- "Setting up your workspace..."
- "Getting everything ready..."
- "One moment..."
- "Loading your week..."
Copy Rewrites — Success States
Single Post Approved
- "Done! Two minutes well spent."
- "Posted! Now go make someone's hair amazing."
- "You're live. Back to your clients."
- "That's posted. Go do what you do best."
Batch Captions Generated
Auto-Published (Pro)
Copy Rewrites — Empty States
No Posts Yet (New User)
No Posts This Week (Returning User)
No Insights Yet
Copy Rewrites — Onboarding
Voice Selection Screen
Photo Upload Prompt
Copy Rewrites — Error States (Yellow Zone)
Image Upload Failed
Connection Lost
Caption Generation Failed
Red Zone — No Changes
These areas keep their current clear, professional copy. No rewrites.
| Screen | Current Copy | Why No Change |
|---|---|---|
| Billing page | "Your next charge: $99 on March 25." | Money moments demand clarity and trust. Zero ambiguity. |
| Account deletion | "This will permanently delete your account and all posts." | Serious decision. Humor feels dismissive. |
| Approval window closing | "Your 2-minute window closed. Post went live." | Time-critical. Clarity first, always. |
| Payment failed | "Payment failed. Update your card to continue." | Stylist is stressed. Be helpful, not playful. |
| Settings / Account info | Email, subscription tier, renewal date | Factual display. Personality adds noise. |
Freshness Strategy
The same joke 50 times stops being funny. Here's how to keep copy fresh without constant maintenance:
| Copy Type | Strategy | Pool Size | Rotation Logic |
|---|---|---|---|
| Loading states | Random rotation | 4-6 per type | Never repeat consecutively. Track last-shown index in component state. |
| Success messages | Random rotation | 3-4 per type | Same as loading. Reset pool on new session. |
| Empty states | Static | 1 each | User sees this once per visit at most. No rotation needed. |
| Onboarding | Static | 1 each | One-time flow. Consistency matters more than variety. |
| Error messages | Static | 1 each | Errors should be predictable. Same message = "I know what happened." |
Accessibility Notes
Playful copy must work for everyone, including screen reader users and non-native English speakers.
- Emoji use: Sparingly. Never use emoji as the sole conveyor of meaning. "You're live" is fine with or without an emoji after it.
- Avoid idioms: "You're on fire" may confuse non-native speakers. Prefer literal warmth: "You're live. Go crush the rest of your day" is clear even translated.
- Screen readers: All copy must make sense read aloud without visual context. "Stylifying your caption..." reads naturally. "✨✨✨" does not.
- No slang: Keep it conversational but universally understandable. "Nice shot" works. "Slay queen" does not.
Implementation Checklist for Stitch
| # | Task | Files | Priority |
|---|---|---|---|
| 1 | Create playfulCopy.js config file with all rotation pools | frontend/src/config/playfulCopy.js | First |
| 2 | Create usePlayfulCopy(pool) hook (random selector, no consecutive repeats) | frontend/src/hooks/usePlayfulCopy.js | First |
| 3 | Update loading spinners to use playful copy pools | Components with loading states | High |
| 4 | Update success/approval toasts and confirmations | PostReviewScreen.jsx, ContentCalendar.jsx | High |
| 5 | Update empty states across dashboard, calendar, insights | Dashboard.jsx, ContentCalendar.jsx | Medium |
| 6 | Update onboarding voice selection screen copy | Onboarding components | Medium |
| 7 | Update image upload prompts | MobilePostBuilder.jsx, QuickStart | Medium |
| 8 | Update non-critical error messages | Error handling components | Low |
Assumption: The current in-app copy is generic/functional across the board. Some components may already have warmer copy that shouldn't be overwritten — Stitch should review each component's current strings before replacing.
Uncertainty: The "Go crush the rest of your day" family of success messages assumes the stylist is using Stylify during working hours. Late-night users may find "day" references slightly off. Low risk, but worth noting.