home / skills / composiohq / awesome-codex-skills / raffle-winner-picker

raffle-winner-picker skill

/raffle-winner-picker

This skill selects random winners from lists, CSVs, Excel, or Google Sheets with cryptographic randomness and transparent results.

npx playbooks add skill composiohq/awesome-codex-skills --skill raffle-winner-picker

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
3.7 KB
---
name: raffle-winner-picker
description: Picks random winners from lists, spreadsheets, or Google Sheets for giveaways, raffles, and contests. Ensures fair, unbiased selection with transparency.
---

# Raffle Winner Picker

This skill randomly selects winners from lists, spreadsheets, or Google Sheets for giveaways and contests.

## When to Use This Skill

- Running social media giveaways
- Picking raffle winners at events
- Randomly selecting participants for surveys or tests
- Choosing winners from contest submissions
- Fair distribution of limited spots or resources
- Random team assignments

## What This Skill Does

1. **Random Selection**: Uses cryptographically random selection
2. **Multiple Sources**: Works with CSV, Excel, Google Sheets, or plain lists
3. **Multiple Winners**: Can pick one or multiple winners
4. **Duplicate Prevention**: Ensures the same person can't win twice
5. **Transparent Results**: Shows the selection process clearly
6. **Winner Details**: Displays all relevant information about winners

## How to Use

### From Google Sheets

```
Pick a random row from this Google Sheet to select a winner 
for a giveaway: [Sheet URL]
```

### From Local File

```
Pick 3 random winners from entries.csv
```

### From List

```
Pick a random winner from this list:
- Alice ([email protected])
- Bob ([email protected])
- Carol ([email protected])
...
```

### Multiple Winners

```
Pick 5 random winners from contest-entries.xlsx, 
make sure no duplicates
```

## Example

**User**: "Pick a random row from this Google Sheet to select a winner for a giveaway."

**Output**:
```
Accessing Google Sheet...
Total entries found: 247

Randomly selecting winner...

🎉 WINNER SELECTED! 🎉

Row #142
Name: Sarah Johnson
Email: [email protected]
Entry Date: March 10, 2024
Comment: "Love your newsletter!"

Selection method: Cryptographically random
Timestamp: 2024-03-15 14:32:18 UTC

Would you like to:
- Pick another winner (excluding Sarah)?
- Export winner details?
- Pick runner-ups?
```

**Inspired by:** Lenny's use case - picking a Sora 2 giveaway winner from his subscriber Slack community

## Features

### Fair Selection
- Uses secure random number generation
- No bias or patterns
- Transparent process
- Repeatable with seed (for verification)

### Exclusions
```
Pick a random winner excluding previous winners: 
Alice, Bob, Carol
```

### Weighted Selection
```
Pick a winner with weighted probability based on 
the "entries" column (1 entry = 1 ticket)
```

### Runner-ups
```
Pick 1 winner and 3 runner-ups from the list
```

## Example Workflows

### Social Media Giveaway
1. Export entries from Google Form to Sheets
2. "Pick a random winner from [Sheet URL]"
3. Verify winner details
4. Announce publicly with timestamp

### Event Raffle
1. Create CSV of attendee names and emails
2. "Pick 10 random winners from attendees.csv"
3. Export winner list
4. Email winners directly

### Team Assignment
1. Have list of participants
2. "Randomly split this list into 4 equal teams"
3. Review assignments
4. Share team rosters

## Tips

- **Document the process**: Save the timestamp and method
- **Public announcement**: Share selection details for transparency
- **Check eligibility**: Verify winner meets contest rules
- **Have backups**: Pick runner-ups in case winner is ineligible
- **Export results**: Save winner list for records

## Privacy & Fairness

✓ Uses cryptographically secure randomness
✓ No manipulation possible
✓ Timestamp recorded for verification
✓ Can provide seed for third-party verification
✓ Respects data privacy

## Common Use Cases

- Newsletter subscriber giveaways
- Product launch raffles
- Conference ticket drawings
- Beta tester selection
- Focus group participant selection
- Random prize distribution at events

Overview

This skill picks random winners from lists, spreadsheets, or Google Sheets for giveaways, raffles, and contests. It ensures fair, unbiased selection using cryptographically secure randomness and records transparent metadata for verification. The skill supports CSV, Excel, plain lists, and Google Sheets, and can select multiple winners, runner-ups, or weighted outcomes.

How this skill works

The skill reads entries from a provided source (local file, pasted list, or Google Sheet URL) and normalizes rows as candidate records. It uses a cryptographically secure random generator to select one or more winners, prevents duplicates, and can apply exclusions or weights based on a ticket/entries column. Results include timestamp, method, selected row numbers, and full winner details for audit and export.

When to use it

  • Running social media or newsletter giveaways
  • Picking raffle winners at events or conferences
  • Selecting participants for surveys, beta tests, or focus groups
  • Randomly assigning people to teams or limited slots
  • Choosing runner-ups or backup winners for contests

Best practices

  • Document the selection: save timestamp, source, and method for transparency
  • Verify eligibility before public announcement
  • Use exclusions to remove prior winners or ineligible entries
  • Provide runner-ups to handle disqualifications quickly
  • Export and archive winner data for audit and record-keeping

Example use cases

  • Pick 1 winner from a Google Sheet of form responses and export contact details
  • Select 10 winners from attendees.csv and generate an email list
  • Run a weighted draw where the "entries" column increases odds proportionally
  • Choose 1 winner and 3 runner-ups from contest-entries.xlsx, ensuring no duplicates
  • Randomly split participants into 4 teams for a workshop

FAQ

Can the selection be verified later?

Yes. The skill records a timestamp, selection method, and can produce a seed for repeatable verification on demand.

How are weights handled?

Weights are read from a specified column (e.g., "entries"). Each row’s probability is proportional to its weight; zero or missing values count as zero tickets.