Every potluck has the same failure mode. You say "bring a dish to share," and somehow four people bring dessert, nobody brings a main, and there are enough chips to survive a small winter. It's not that your friends are careless. It's that "bring whatever" gives them no information, so they default to the easy thing. The fix isn't more nagging. It's a little structure up front.

Start with a headcount, not a dish list

Before you think about food at all, get a rough number of people. Everything else scales off it. Twelve people is three or four mains and a couple of sides. Forty people is a different animal. You don't need to be exact, you just need a target so the sign-up isn't open-ended.

If you can, collect the headcount in the same place people sign up to bring food. Splitting "are you coming?" and "what are you bringing?" into two separate messages is how you end up with two half-accurate lists.

Split the meal into categories with real counts

This is the whole trick. Instead of one open list, give people slots to claim inside categories, each with a target number:

Two things happen when you do this. People can see what's already covered, so they stop defaulting to dessert. And once a category hits its number, it's full, so the fifth would-be dessert person naturally drifts to sides. That single design choice prevents about 90% of potluck chaos.

Don't forget the unglamorous slots. Ice, cups, serving utensils, and trash bags are the things everyone assumes someone else has, which means nobody does.

Let people write in what they're bringing

Claiming "Sides" is good. Claiming "Sides: my mom's mac and cheese" is better. When people name the actual dish, you avoid the two-lasagna situation and folks with allergies can scan the list ahead of time. A single free-text field next to each slot does the job.

A shortcut worth knowing This is basically what Signup Sheets for Gmail was built for. There's a ready-made potluck template with categories and counts already set up, so you pick it, tweak the numbers, and send it inside a normal email. People claim a slot and type their dish in one click, no account needed, and a category shows as full once it hits your target. Everyone gets a reminder before the event automatically. Your first 10 sheets are free. See how it works.

Send exactly one reminder

People sign up two weeks out and then life happens. A single reminder a day or two before, with what they said they'd bring, closes the gap between "I signed up" and "I remembered." More than one reminder and you're the annoying one. Fewer than one and you're plating store-bought cookies you bought as backup at 6pm.

The lazy-but-effective version

If you truly want to spend zero minutes on setup: state the categories right in your invite text ("we need 4 mains, 6 sides, 3 desserts, reply with which you'll cover"), then keep a running tally yourself. It works for a dozen people. Past that, the manual tally becomes the chore you were trying to avoid, and a sign-up that tracks counts for you pays for itself in one event.

Quick answers

How do you stop duplicate dishes? Categories with counts, plus a write-in field so people declare the specific dish. Visibility does most of the work.

How much food for a potluck? Roughly one to one-and-a-half dishes per family, tilted toward mains and sides. Set the category counts from your headcount instead of leaving it open.

Group chat or sign-up sheet? Group chat is fine up to about ten people. Beyond that, a sign-up that shows what's taken saves everyone from scrolling 60 messages to figure out if salad is covered.