Matchmaking,
Automated.
Retire your manual cupids. Red Panda is the first fully-automated AI matchmaking system that gives your moderation team their free time back.
💖 Zero Manual Labor
Blind Swiping UI
Stop forcing staff to read intros by hand. Users navigate their queue using native Discord buttons inside private tickets.
Likes are 100% secret until the feeling is mutual, triggering an instant match ping without any staff intervention.
🎋 Enterprise Safety
AI-Powered Fences
Our backend relies on strict age math and Groq AI parsing. Creeps and NSFW intros are blocked instantly.
Underage users are automatically hard-locked and staff is pinged before the profile ever enters the public pool.
☕ Active Servers
24h Private Cafes
When two people match, the bot generates a temporary private text channel just for them, managing all permissions.
To kill the awkward silence, Cupid’s AI reads both profiles and drops a custom Icebreaker based on shared hobbies!
How to Use Red Panda Matches
A complete walkthrough from setting up your profile to finding your perfect match.
🎫 Step 1: Open Your Dashboard
Head over to your server's matchmaking lobby and click the 💖 Open Matchmaking Dashboard button on the instructions panel. The bot will instantly create a private text channel just for you. This is your personal dashboard—no one else can see it!
📝 Step 2: Create Your Intro
To enter the matchmaking pool, you need to tell the bot about yourself. Copy your server's intro template, fill it out, and paste it into your ticket. Crucially, your template must contain the arrow symbol (`➤`) and the word `AGE` (or `ᴀɢᴇ`) for the bot to recognize it.
➤ AGE: 21
➤ GENDER: Female
➤ LIKES: Video games, hiking, red pandas
...
Our AI Cupid will read your profile to ensure it is safe and appropriate. Once approved, your swiping begins instantly!
💖 Step 3: The Swiping Interface
Once your profile is saved, the bot will display potential matches one by one. You will use the interactive buttons below their profile to navigate:
- ✅ Express Interest: Swipes right! It's completely blind—they won't know you liked them unless they like you back. The buttons will lock in, and a new profile will spawn below.
- ❌ Pass: Swipes left. The buttons lock and it moves you to the next profile cleanly.
- ✅ Vouch: Add a "Green Flag" to a user's profile to let the community know they are a great person.
- 🚩 Report: Instantly flag a sketchy or inappropriate profile directly to the server staff.
☕ Step 4: The Private Cafe
If you Express Interest in someone and they like you back, it's a match! The bot will instantly create a "Cafe" channel just for the two of you.
- The Icebreaker: Don't know what to say? The bot will read both of your profiles and drop a custom conversation starter in the chat.
- The 24-Hour Timer: You have 24 hours to chat. Before the timer runs out, you both must click ❤️ Keep Cafe Open. If you don't click it, or if someone clicks 💔 Close Cafe, the bot will safely delete the channel.
💔 Step 5: Managing Matches & Your Profile
Need to unpair? If you aren't feeling the vibe with a match, just return to the main public lobby and click the 💔 Request Unpair button. This opens a private support thread for staff to safely close your cafe.
Profile Management: Want to check your stats or edit your bio? Use the `/my-profile` command inside your ticket. If you ever want to leave the matchmaking pool entirely, simply click the 🗑️ Delete Dashboard button in your ticket.
Under the Hood
Curious how the magic actually happens? Here is a look at the code powering the Red Panda matching ecosystem.
1. AI Profile Parsing
Instead of forcing users to fill out complicated web forms, we let them type naturally in Discord. When a user submits an intro, we send the raw text to a highly optimized Groq LLM.
The AI extracts their exact age, normalizes their hobbies into clean arrays, and flags any toxic or NSFW content before it ever touches the database.
# Using Groq to parse Discord text into JSON
async def analyze_intro(text):
prompt = f"Extract age, gender, likes, and dislikes from: {text}"
response = await client.chat.completions.create(
model="llama3-8b-8192",
messages=[{"role": "user", "content": prompt}],
response_format={"type": "json_object"}
)
return json.loads(response.choices[0].message.content)
2. The Strict Match Filter
When you click "Swipe", the bot doesn't just show you random people. It runs a lightning-fast mathematical check using Python Set Theory.
It verifies that your ages are within the safe limit, ensures your genders match each other's preferences, and permanently hides profiles if your "Likes" intersect with their "Dislikes".
# Normalizing arrays to Python Sets for O(1) comparison
my_likes = set(x.lower() for x in me['likes'])
their_dislikes = set(x.lower() for x in target['dislikes'])
# Hard Dealbreaker Check
if my_likes.intersection(their_dislikes):
continue # Skip this profile instantly
# Require at least one shared hobby
shared = my_likes.intersection(their_likes)
if len(shared) >= 1:
matches.append(target)
3. Generating the Private Cafe
When a mutual "Right Swipe" happens, the bot takes over server administration. It creates a temporary, locked text channel that only the two users (and staff) can see.
To break the ice, the bot passes those shared hobbies back to the AI to write a completely customized, fun conversation starter.
# Setting locked channel permissions
overwrites = {
guild.default_role: discord.PermissionOverwrite(read_messages=False),
user1: discord.PermissionOverwrite(read_messages=True),
user2: discord.PermissionOverwrite(read_messages=True)
}
# Creating the Cafe
cafe = await category.create_text_channel(
name=f"☕・cafe-{match_id}",
overwrites=overwrites
)
await cafe.send(f"You both love {shared_hobby}! {ai_icebreaker}")
Command Glossary
Everything you need to run the matchmaking ecosystem.
Player Commands
/open-ticket Player
Opens a private swiping dashboard. Blocked if the user is currently in a match or already has a ticket open.
/my-profile Player
Shows the user their active profile embed, their Discord account age, and their total Vouches (Green Flags).
/time-left Player
Checks the remaining time on a 24-hour private cafe match.
/request-unpair Player
Opens a private Support Ticket pinging staff to safely dissolve a match.
Staff Commands
/pair @user1 @user2 Staff
Manually pairs two users and instantly generates a Private Cafe and AI Icebreaker for them.
/unpair @user1 @user2 Staff
Instantly deletes a private cafe channel and sends an unpair log to the designated tracking channel.
/investigate @user Staff
Pulls a highly detailed, private dossier on a user, displaying their Watchlist status, Discord account age, current active pair, and raw saved intro.
/watchlist, /watchlist-add & /watchlist-remove Staff
Manage the server's internal watchlist to keep track of suspicious users.
Admin Commands
/setup Admin
The master configuration command. Links 12 different categories, channels, and roles to the bot database so it knows where to build cafes and send logs.
/spawn-community-panel Admin
Drops a permanent UI message containing buttons for users to "Open a Support Ticket" or "Apply for Staff".
Advanced Staff Training Guide
Standard operating procedures for managing the Red Panda matchmaking ecosystem.
📋 Enforcing the Profile Template
To ensure the AI perfectly parses user introductions, your community must follow a strict format. While you can lightly customize the template for your server, you must adhere to these absolute rules:
- The Trigger Symbol: Somewhere in the introduction, you must include the
➤ symbol.
- The Separator: You must include the exact
﹌﹌﹌﹌ ʟᴏᴏᴋɪɴɢ ꜰᴏʀ ? ﹌﹌﹌﹌ divider so the AI can distinguish between the user's traits and their partner preferences.
- Standard Fonts Only: Do not use aesthetic Discord fonts for the property names (e.g., use "AGE", not "𝒜𝒢𝐸"). The bot's backend will not recognize them.
- Strict Categories: Do not add extra custom properties or remove any existing ones. The bot is strictly programmed to look for the exact set of keywords shown below.
Here is the standard template you should provide to your server:
➤ ᴀɢᴇ ﹕
➤ ꜱᴇxᴜᴀʟɪᴛʏ﹕
➤ ɢᴇɴᴅᴇʀ﹕
➤ ʟɪᴋᴇꜱ :
➤ ᴅɪꜱʟɪᴋᴇꜱ﹕
➤ ᴛɪᴍᴇᴢᴏɴᴇ﹕
➤ ᴇxᴛʀᴀ﹕
﹌﹌﹌﹌ ʟᴏᴏᴋɪɴɢ ꜰᴏʀ ? ﹌﹌﹌﹌
➤ ꜱᴇxᴜᴀʟɪᴛʏ﹕
➤ ɢᴇɴᴅᴇʀ :
➤ ʟɪᴋᴇꜱ﹕
➤ ᴅɪꜱʟɪᴋᴇꜱ﹕
➤ ᴛɪᴍᴇᴢᴏɴᴇ﹕
➤ ᴇxᴛʀᴀ﹕
🚨 Handling "Underage" Auto-Flags
When a user types an age under 13, the bot's AI instantly catches it. The bot removes their typing permissions, renames their ticket to underage-[name], and pings the `@staff` role in your designated staff channel.
- Go to the locked ticket. Read the intro they provided to verify the AI's catch.
- If they are clearly under 13, execute your server's ban/kick policy for Discord ToS violations.
- Click the Delete Dashboard UI button to clear the ticket and wipe their profile attempt from the database.
🚩 Handling "Toxicity" Auto-Flags
If the Groq AI detects NSFW content, slurs, or harassment in a user's intro, it blocks the profile from saving, renames the ticket to flagged-[name], and sends a log to your staff channel.
- Review the flagged message. If it was a false positive (e.g., they used a slang term benignly), ask them to rephrase and try again.
- If it was malicious, issue a warning/mute and close the ticket.
- Note: These users are automatically added to the Global Watchlist by the bot.
🕵️ Deep Dive Investigations
If a user is reported via the UI "Report" button, or if they are acting suspicious, use the `/investigate @user` command. This will generate a private embed visible only to you.
- Check Discord Age: If the account was created 2 days ago, it is likely an alternate account trying to bypass a ban.
- Check Watchlist Status: See if other mods have previously flagged this user for weird behavior.
- Check Active Matches: See exactly who they are currently in a Private Cafe with, so you can monitor the situation.
👁️ Managing the Watchlist & Ticket Bans
The Watchlist is a server-wide memory bank. If a user is being creepy but hasn't broken a strictly bannable rule, put them on the watchlist using `/watchlist-add`.
- The Ticket Ban Toggle: When adding a user to the watchlist, you can set `ticket_ban` to True. This revokes their ability to use `/open-ticket`, effectively blacklisting them from the dating pool without banning them from the main server.
- To see everyone currently being monitored, run `/watchlist`.
- To clear a user's name, run `/watchlist-remove @user`.
💔 Processing Unpair Requests
Users who want out of a match but are uncomfortable talking to their partner will click "Request Unpair", automatically opening an unpair-[name] support ticket.
- Talk to the requester. Ask if the unpair is due to a lack of connection, or if the other person violated a rule.
- Use the `/unpair @user1 @user2` command. The bot will instantly delete their Private Cafe channel and log the unpair.
- Inform the user it has been handled, then click the 🔒 Close Ticket UI button in the unpair channel.
📜 Terms of Service (ToS)
Last Updated: April 10, 2026
By using Red Panda Matches (the "Bot"), you agree to these Terms of Service. If you do not agree, do not use the Bot.
1. Age Requirement
You must be at least 13 years old (or the minimum age of digital consent in your country) to use this Bot. The Bot utilizes AI to estimate age based on user-provided introductions. If you are found to be underage, your profile will be immediately locked, your access will be revoked, and you will be reported to server staff. Falsifying your age is a direct violation of these terms.
2. User Conduct & Safety
You agree to use this Bot respectfully and safely. You may not:
- Harass, bully, or send inappropriate/NSFW content to your matches.
- Use the Bot to distribute spam, malicious links, or illegal content.
- Provide fake, misleading, or impersonated profile information.
Safety Disclaimer: Red Panda Matches is an automated matchmaking tool. We do not perform background checks on users. You are solely responsible for your interactions with other users. Always practice safe online habits.
3. AI Processing Disclaimer
The Bot utilizes artificial intelligence (AI) to parse your profile introductions and generate icebreakers. By using the Bot, you acknowledge that:
- AI can make mistakes or misinterpret data.
- We do not guarantee the accuracy of AI-generated compatibility or summaries.
- You are responsible for verifying the information of your matches.
4. Moderation & Termination
The developer of Red Panda Matches and the administrative staff of the Discord servers utilizing the Bot reserve the right to ban users, delete profiles, or restrict access to the Bot at any time, for any reason, without notice.
5. Limitation of Liability
Use this Bot at your own risk. To the maximum extent permitted by law, the developer(s) of Red Panda Matches shall not be held liable for any direct, indirect, incidental, or consequential damages resulting from your use of the Bot, including but not limited to emotional distress, data loss, or harmful interactions with other users.
🔒 Privacy Policy
Last Updated: April 8th, 2026
This Privacy Policy explains how Red Panda Matches collects, uses, and protects your data.
1. Data We Collect
To provide matchmaking services, the Bot collects and stores the following information:
- Discord Data: Your Discord User ID, Guild (Server) ID, and Discord Username.
- Profile Data: The raw text of your introduction, and the data parsed from it by our AI (including stated age, gender, pronouns, timezone, likes, dislikes, and who you are attracted to).
- Usage Data: Your swipe history (who you liked/passed on), active pairings, timestamps of when pairs were created, and "Green Flag" vouches.
2. How We Use Your Data
Your data is used strictly to operate the Bot's core features:
- Matching you with compatible users based on your preferences.
- Creating private "Cafe" channels and generating AI icebreakers.
- Enforcing moderation and age-restriction rules.
- Allowing server staff to view matchmaking history to investigate reports or abuse.
3. Third-Party Services
We do not sell your data. However, your data is securely processed by the following third-party services to make the Bot function:
- Discord: To read messages, assign roles, and create channels.
- Supabase: Our secure database provider where your profile and swipe history are stored. Only Accessible by the Owner and/or developer team.
- Groq (AI API): Your profile introductions and "likes" are sent to Groq's AI models strictly for parsing profile data and generating icebreaker prompts.
4. Data Retention and Deletion
Your data is kept for as long as your profile remains active in the matchmaking pool.
- User Deletion: You can permanently delete your profile and wipe your data from our active database at any time by clicking the "🗑️ Delete Dashboard" button inside your private ticket.
- Automatic Deletion: Server administrators or automated inactivity timers may delete your profile if you are inactive for an extended period.
- Note on Swipe Logs: Even if you delete your profile, anonymized swipe history may remain in the database to prevent matching errors for other active users.
5. Contact
If you have questions about your data, or need to request manual data deletion, please contact the Bot Developer.