I wanted everyone on our tennis team to get a fair chance to play. Working out who should play each week, with whom, and on which line turned out to be quite a puzzle.

I used ChatGPT Work to help. If you’ve used ChatGPT to ask questions or write a letter, the conversation will feel familiar. With Work, you can ask it to carry out a longer task and produce something you can use, such as a printable schedule. OpenAI has a short introduction to Work.

You don’t need spreadsheet skills, programming knowledge, or special software. You need your roster, the playing dates, and instructions about how to arrange the players. You can type that information into the conversation, provide an existing file, or ask ChatGPT to collect it by questioning you.

Our league has six teams, with 12 or 13 players per team. About 60 percent are women, and each team in this example has two couples. Ratings describe playing ability, with higher numbers indicating stronger players. Our levels are 2.5, 2.5+, 3.0-, 3.0, and 3.0+.

Each week we face another team in three doubles matches, using six of our players. The strongest selected pair plays Line 1, the next strongest plays Line 2, and the remaining pair plays Line 3. The opposing team does the same. I’m scheduling our players, not the whole league.

It is a competitive league, but fun and participation come first. These are the rules and preferences I need to juggle:

  • Choose six different, available players for each date.
  • Prefer mixed pairs. Use women-only pairs when needed to balance participation. Never use men-only pairs.
  • Honor required couple pairings and accommodate preferred partners when possible.
  • Include someone rated 3.0- or higher on Line 1 when possible. Absences and fair playing time can take priority. Avoid players rated 3.0 or higher on Line 3 unless unavoidable.
  • Spread playing opportunities fairly through the season, avoiding long gaps for individual players.
  • Follow the league calendar, breaks, courts, and home/away assignments.
  • Preserve completed matches and avoid unnecessary changes to announced lineups. There are no makeup dates for rainouts.

Our example has 14 playing dates and 84 individual playing slots. Dividing those slots among 13 people is only the beginning. A couple takes two slots together. Someone else is away. Moving a player may leave a pair too strong for Line 3.

A spreadsheet could hold all this, but I would still be moving names around and checking each swap. Fix one problem and another appears. Between the original schedule and later changes, that trial and error could take hours.

I gave Work the roster and explained what I wanted. It tried combinations, checked the rules, and produced a schedule. It also counted each person’s appearances and showed how they were spread across the season. Work did the calculations and formatting; I reviewed the choices and asked for changes in ordinary language.

Once the roster and rules were in, my part took very little time: a few minutes reviewing drafts and occasionally asking for a change. Work did the heavy lifting. From start to a workable schedule took less than an hour, and most of that was Work’s time, not mine. I could let it run while doing something else, like watching a football game.

The sample PDF shows the result. I’ve replaced the names with tennis puns for a little fun. The dates and assignments come from an actual draft. Contact details and private notes are omitted.

The PDF includes the schedule, roster, participation totals, and a distribution chart. In that chart, green cells show when each person plays. I can scan a row and spot a long gap much more easily than searching for a name throughout the schedule.

Of course, the original schedule is a plan. Trips, injuries, rainouts, and other surprises mean it will need adjusting. I can give Work the change and ask it to preserve completed matches, check the rules again, and disturb as few future assignments as possible. I still choose which revision to accept.

Rainouts need particular care because we don’t have makeup dates. My proposed approach is to count actual play separately from future assignments, then consider small swaps on the remaining dates to help those who lost playing opportunities. A canceled match shouldn’t count as an appearance. Losing a match also shouldn’t automatically push someone else out of their next turn. I’d review the effect on everyone. This is a suggested addition; the sample PDF doesn’t yet track rainouts.

If you’d like to try this, start with whatever you already have:

  • Paste a player list or table into Work.
  • Attach a roster file. If you already keep a Google Sheet, you can use the Google Drive connector or simply paste its contents.
  • Ask Work to gather the information a few questions at a time.

For that last option, you could say:

Help me schedule my tennis team. Ask me a few questions at a time to collect the roster, playing dates, and rules. Organize my answers and show them to me before making the schedule. Help me turn my preferences into clear instructions.

To see it in action first, copy the whole example below and paste it into Work. It combines my instructions with a sample roster of fictional players, using our league’s actual dates, courts, and home matches. Work will check the roster and rules with you, then build a schedule much like the sample PDF.

To use it for your own team, replace the sample details with yours:

  • Team: your team’s name.
  • Playing dates and times: your league calendar, including the year.
  • Holiday breaks or other excluded dates: dates with no matches, or “None.”
  • Opponents, courts, and home/away: from your league schedule, or “Not yet known.”
  • Other preferences: anything else that matters to your team, or “None.”
  • Roster: your players, one per line, with the same details in the same order, separated by commas. Or delete the sample roster and attach your file instead, or let Work collect it by asking you questions.

Email is for routine updates and sending schedules; an optional phone number is useful for calling or texting someone who is late for a match. Include the year in unavailable dates, and distinguish “Must play with” from “Prefer to play with.” In this example, Courtney must play with Grant, but Grant can play with someone else. “None” means no restriction; a missing phone number is fine.

The rules themselves are a starting point for a league like mine. You can change them, or ask ChatGPT to help adapt them, for example if your league plays a different number of lines.

Help me schedule my tennis team. Fun and fair participation are our priorities.
Use the roster pasted at the end of this message. If you cannot read it, ask me to paste it again. Each player has a name, email, optional phone, gender, rating, unavailable dates, and couple preference.

Team: Purple Team
Playing dates and times, including year: Fridays, 2-4 p.m. on Sep 18, Sep 25, Oct 2, Oct 9, Oct 16, Oct 23, Oct 30, Nov 6, Nov 13, Nov 20, Dec 4, Dec 11, and Dec 18, 2026, and Jan 8, 2027
Holiday breaks or other excluded dates: Nov 27 and Dec 25, 2026, and Jan 1, 2027
Opponents, courts, and home/away: Opponents not yet known. Home dates are Sep 25, Oct 9, Oct 23, Nov 6, Nov 20, Dec 11, and Dec 18; the rest are away. Courts 10-12 on Sep 18, Sep 25, Oct 2, Dec 4, and Dec 18. Courts 1-3 on Oct 9, Oct 23, Nov 6, and Dec 11. Courts 7-9 on Oct 16, Oct 30, Nov 13, and Nov 20. Jan 8 courts TBD.
Other preferences: None

Ask me about missing or conflicting scheduling information. Do not guess. Show me the roster and rules for review before scheduling. Missing contact details should not prevent a draft.

Follow these rules:
1. Choose six different available players per date, in three doubles pairs. Schedule only my team; the league supplies the opponents.
2. Prefer mixed pairs. Use women-only pairs to balance participation when needed. Never use men-only pairs.
3. Honor each player's unavailable dates and couple preference. "Must play with" means that player plays only when paired with that partner. "Prefer to play with" means pair them when possible, but other partners are fine. Read each player's preference separately; in a couple, one may say "Must play with" and the other "Prefer to play with."
4. Put the strongest selected pair on Line 1, the next on Line 2, and the remaining pair on Line 3. Aim for at least one player rated 3.0- or higher on Line 1, allowing exceptions for absences and balanced playing time. Avoid anyone rated 3.0 or higher on Line 3 unless unavoidable.
5. Use combined ratings as a starting point for pair strength, counting a plus as +0.1 and a minus as -0.1. Keep listed ratings unchanged and explain exceptions to line preferences or strength order.
6. Balance appearances across players and both halves of the season. Avoid long gaps where possible. Holiday breaks are not missed playing dates.
7. There are no makeup dates for rainouts. Count completed play separately from future assignments. Cancellations before play count as no appearance; ask how to treat partial matches. Consider small changes on remaining dates to help players who lost opportunities, while keeping the pairing rules.
8. In revisions, preserve completed matches and minimize future changes. Explain conflicts rather than silently breaking a rule.

Create a readable PDF showing dates, lines, pairs, combined ratings, courts, and home/away. Mark unknown details TBD. Include each player's total, first-half and second-half appearances, and longest gap in playing dates. Add a chart with players down the side and dates across the top. Use green cells for scheduled appearances and show totals. If cancellations occur, distinguish those from completed play and future assignments in the chart.

Check the result against the rules and explain any exceptions or uneven participation. Save the roster, instructions, and schedule for later changes. Keep the schedule as a draft for my review.

Roster of fictional sample players, one per line, with details separated by commas:
Name, Email, Phone (optional), Gender, Rating, Unavailable dates, Couple preference
Bjorn Toserve, bjorn@example.com, 202-555-0101, Male, 2.5+, 2026-10-16, None
Mattie Point, mattie@example.com, 202-555-0102, Female, 3.0+, 2026-09-18; 2026-10-02; 2026-10-09, None
Holly Volley, holly@example.com, 202-555-0103, Female, 2.5, None, Must play with: Ollie Volley
Ollie Volley, ollie@example.com, 202-555-0104, Male, 2.5+, None, Must play with: Holly Volley
Courtney Slam, courtney@example.com, 202-555-0105, Female, 2.5, 2026-10-09, Must play with: Grant Slam
Grant Slam, grant@example.com, 202-555-0106, Male, 2.5+, 2026-10-09, Prefer to play with: Courtney Slam
Addie Vantage, addie@example.com, 202-555-0107, Female, 3.0-, None, None
Annette Cord, annette@example.com, 202-555-0108, Female, 3.0, 2026-10-09; 2026-12-04; 2026-12-11; 2026-12-18, None
Faye Ult, faye@example.com, 202-555-0109, Female, 2.5, 2026-09-18; 2026-09-25; 2026-10-02; 2026-10-09, None
Lynn Judge, lynn@example.com, 202-555-0110, Female, 2.5, 2026-09-18, None
Rob Lobb, rob@example.com, 202-555-0111, Male, 2.5+, 2026-10-09; 2026-10-30, None
Dewey Deuce, dewey@example.com, 202-555-0112, Male, 3.0, 2026-09-18; 2026-09-25; 2026-10-23; 2026-10-30, None
Lottie Love, lottie@example.com, Not provided, Female, 2.5, 2026-10-09, None

Later, I can continue in the same conversation with a short request, using the real player and date:

Rob Lobb can no longer play on Nov 13. Update the roster and suggest the smallest changes needed. Preserve completed matches, check participation and pairing rules, and show me what changed.

Or, after rain:

Our matches on Oct 16 were canceled before play. There is no makeup. Review who lost playing opportunities and suggest any small adjustments to the remaining schedule. Show me the effect on everyone's totals.

Keep the accepted schedule and roster so you can provide them if you start a new conversation. Review each revision before sharing it with the team.

You could use the same approach for volunteer shifts, club activities, or other group assignments. Give ChatGPT the people, dates, and requirements, and ask it to help adapt these instructions. They don’t have to be perfect on the first try. I refined mine as we went along.