Voice & Tone — Courtex
This document guides how we communicate with users through copy, messaging, and microcopy. Use this when writing buttons, error messages, onboarding flows, or any user-facing text.
Core Principles
1. Keep it Simple
Avoid unnecessary words. Say what you mean, clearly and concisely. Users should understand instantly without guessing or re-reading.
Principle: Clarity over cleverness
Examples
✅ Good - "Session full" - "Book a spot" - "You're climbing the rankings" - "Last updated 2 hours ago"
❌ Bad - "Unfortunately, the maximum capacity for this particular session has been reached" - "Proceed with reservation" - "Your competitive standing is improving" - "Last modified in a temporal window of approximately 120 minutes"
Rules
- Remove filler words (unfortunately, very, quite, actually, basically)
- Use short sentences (aim for <15 words per sentence)
- Avoid jargon unless it's badminton-specific (and even then, explain it)
- Use active voice ("Join a social" not "You are able to join a social")
- Be specific ("You played 5 games" not "You've been active")
2. No Bullshit
We don't exaggerate, and we don't stretch the meaning of words. Be honest. If something is broken, say it. If we're working on it, say that too. Never oversell features or benefits.
Principle: Honesty over hype
Examples
✅ Good - "We're having issues right now. We're working to fix it. Try again in a few minutes." - "Courtex is where you find your next game" (direct, not oversold) - "You've played 1 game" (not "You've begun your competitive journey") - "We messed up. Here's what happened and how we're fixing it."
❌ Bad - "We're currently experiencing unprecedented server scaling optimisations" - "Courtex is revolutionizing badminton forever through AI-powered matchmaking" (we don't do this) - "You've commenced your athletic excellence expedition" - "We're unable to provide the service you expected at this juncture" (blame-shifting)
Rules
- Don't use marketing language in the product
- If a feature isn't ready, say so
- If we made a mistake, own it
- Don't describe simple features as complex solutions
- Avoid superlatives ("best", "greatest", "ultimate") unless they're literally true
- Be specific about timelines ("We're working on this" is vague; "We'll have it ready in March" is honest)
3. Respect
We don't put other people down in order to lift ourselves up. Celebrate skill mastery without shaming lower ranks. Celebrate community without exclusion. Treat all users as worthy of respect.
Principle: Lift others up, don't tear them down
Examples
✅ Good - "You're climbing the rankings! Keep at it." (celebrates progress without shame) - "Play anywhere, anytime" (inclusive, not gatekeeping) - "Find your level" (welcoming to all skill levels) - "New player? No problem. Jump in." (inviting) - "1st place: Alex Chen — 2150 MMR" (facts, no trash talk)
❌ Bad - "You're finally getting better" (implies they were bad before) - "Unlike casual players, serious athletes choose Courtex" (exclusionary) - "Climb out of the beginner tier" (shames lower ranks) - "For real badminton players" (gatekeeping) - "Destroy your opponents" (aggressive, not aligned with community)
Rules
- Celebrate achievement, not superiority
- Never shame lower ranks or skill levels
- Use neutral language about competition ("play against", not "destroy" or "crush")
- Include all skill levels in messaging
- Acknowledge that skill-building takes time
- Never compare players negatively against each other
Audience-Specific Messaging
For Organisers
Primary Message: "Courtex handles the admin so you can focus on growing your social."
Tone
- Helpful and efficient
- Problem-solver (not problem-creator)
- Understands their pain points
- Practical, not flashy
Key Messages
- "Admin is sorted" — We handle the tedious stuff
- "Grow your social" — Focus on community, not logistics
- "Your players, your way" — You stay in control
- "From WhatsApp to Courtex" — Easy migration path
Example Copy
- ✅ "Create a session in 2 minutes"
- ✅ "We'll handle roster changes while you focus on the game"
- ✅ "Your regular players stay in the loop"
- ❌ "Revolutionize your session management"
- ❌ "Leverage cutting-edge technology"
Common Scenarios
Onboarding - "Connect with Courtex. Manage your sessions, grow your social." - "Your players are already on Courtex. Bring your sessions here."
Feature Explanation - "Automated attendance tracking saves you 15 minutes per session" - "Send one message, reach all your players"
Call-to-Action - "Create your first session" - "Add your regular players"
For Players
Primary Message: "Courtex is where you find your next game."
Tone
- Welcoming and encouraging
- Community-focused
- Empowering (you're in control of your game)
- Fun but not over-the-top
Key Messages
- "Find your next game" — Exploration, discovery
- "Build your badminton identity" — Long-term engagement
- "Play everywhere" — Access to all socials
- "Level up together" — Community growth
Example Copy
- ✅ "Find a social near you"
- ✅ "Play against new opponents"
- ✅ "Track your wins, see your progress"
- ❌ "Become a badminton legend"
- ❌ "Dominate the leaderboards"
Common Scenarios
Onboarding - "Tell us what you're looking for" (skill level, days, locations) - "Socials near you, when you're free"
Feature Explanation - "Your stats show you're improving. Keep it up." - "See where you rank locally"
Call-to-Action - "Find a social" - "Book a spot"
Tone in Different Contexts
When Things Go Right ✅
Tone: Encouraging, celebratory (but elegant, not over-the-top)
Examples
- "You're all booked! Get ready for a ripper of a match." (playful, Australian)
- "Session created. Your players will see it in their feed." (confident)
- "You've improved 50 MMR points this month. Well done." (specific, celebratory)
- "Welcome back. 5 socials on this week." (warm, informative)
When Things Go Wrong ❌
Tone: Honest, helpful, take responsibility
Examples
- "That didn't work. Our team's on it. Try again in a sec, yeah?" (owning it, casual)
- "Something went wrong on our end. Refresh and try again." (clear, no excuses)
- "We messed up—you were charged twice. We've refunded the extra. Sorry about that." (direct, action-oriented)
- "Session is fully booked, but here are 3 others nearby." (helpful alternative)
Errors & Warnings ⚠️
Tone: Helpful, not alarmist
Examples
- "Your session is tomorrow at 8pm. Just confirming you're coming?" (friendly reminder)
- "You haven't played in 30 days. Missing the game?" (check-in, not guilt-tripping)
- "Internet might be slow—videos could take longer to upload" (helpful heads-up)
- "This session is for intermediate players. You might find a better fit here." (respectful redirection)
Language Guidelines
Vocabulary & Jargon
Use: - Plain English words (use → utilise ❌) - Badminton-specific terms (rally, smash, court, social, MMR) - Australianisms when appropriate ("ripper", "no drama", "yeah")
Avoid: - Corporate jargon ("leverage", "synergise", "optimise") - Tech jargon unless explaining it ("algorithm" needs context) - Unnecessarily complex words ("facilitate" → "help") - Gendered language ("guys" → "folks", "players")
Contractions
Use contractions — they're friendlier and more natural - "You're" instead of "You are" - "We've" instead of "We have" - "Can't" instead of "Cannot"
Exclamation Points
Use sparingly. One exclamation point per message, maximum.
✅ "You're all booked!" ❌ "You're all booked! Get ready! See you there!"
Second Person
Address users directly — use "you" and "your"
✅ "Your next game is tomorrow" ❌ "The user's next game is tomorrow"
Common Microcopy
Buttons
| Context | ✅ Good | ❌ Bad |
|---|---|---|
| Main CTA | "Find a Social" | "Search Sessions" |
| Secondary | "Learn More" | "Get More Info" |
| Confirm | "Book Spot" | "Proceed" |
| Create | "Create Session" | "Add New Event" |
| Cancel | "Cancel" | "Abort" |
| Delete | "Delete" | "Remove Permanently" |
Form Labels
| Field | ✅ Good | ❌ Bad |
|---|---|---|
| Date | "When?" | "Session Date/Time" |
| Level | "Your level?" | "Player Skill Classification" |
| Players | "How many?" | "Participant Count" |
Empty States
✅ "No socials this week yet. Check back soon or create one." ❌ "There are currently no scheduled sessions available."
Loading States
✅ "Finding socials near you…" ❌ "Processing request…"
Success Messages
✅ "You're booked for Tuesday at 8pm" ❌ "Operation completed successfully"
Australian Personality
When to Use Australianisms
- Error messages and feedback
- Celebratory moments
- Casual user communication
Examples of Australian Tone
- "That's a ripper of a win" (celebrating)
- "No drama, we've sorted it" (casual assurance)
- "Yeah, keen?" (playful invitation)
- "She'll be right" (reassurance)
- "Good on ya" (encouragement)
When NOT to Use
- Technical documentation
- Legal terms
- Serious error messages (like misconduct)
Anti-Patterns
Things We Never Say
❌ "We're the best badminton app in the world" - Why: Exaggeration, not credible
❌ "Click here" - Why: Poor UX copy; use action words instead
❌ "Unexpected error" - Why: Not helpful; be specific
❌ "You must be registered to continue" - Why: Sounds like a demand; use "Create an account to get started"
❌ "For serious players only" - Why: Gatekeeping; contradicts accessibility value
❌ "Destroy your opponents" - Why: Disrespectful; we celebrate community
❌ "Unlike other apps, we actually work" - Why: Puts others down; arrogant
Checklist for Any Copy
Before you ship it, ask:
- [ ] Is it simple? Can someone understand it in 5 seconds?
- [ ] Is it honest? Are we exaggerating or stretching the truth?
- [ ] Is it respectful? Would we be proud saying this to a badminton player?
- [ ] Is it Australian? Does it sound like us (70% playful, 30% earnest)?
- [ ] Does it use active voice? "Book a spot" not "A spot can be booked"
- [ ] Does it avoid jargon? Are all terms either plain English or explained?
- [ ] Is it concise? Can we remove any words without losing meaning?
If you can answer "yes" to all, you're ready to ship.
Resources
- Design System: See
design-system.mdfor component copy (buttons, error states) - Brand Guide: See
brand-guide.htmlfor full visual context - Copilot Instructions: See
copilot-instructions.mdfor strategic context