Published: 2026-06-22
Filter first, then pick: narrowing a mixed list before a random draw
A single, long list of options is wonderfully convenient — until the exact moment you reach for it. You have forty meals saved, but tonight you have fifteen minutes; you have a list of thirty activities, but it's raining; you'd happily eat anything except something spicy. A plain random picker doesn't know any of that, so it cheerfully suggests a two-hour braise on a weeknight. The fix isn't a second list. It's tagging the one list you already have, then narrowing it to the items that fit right now — and only then letting chance decide.
Tag once, filter forever
The idea behind a
conditional random picker
is that each item carries little labels you add inline. You write the item, then append one
or more tags with a hash, like Pizza #quick #takeout or
Curry #cook #spicy. The tags don't change the item — when the picker shows you
a result it strips them back off, so you see "Pizza," not the tag soup — they just describe
it so you can slice the list later. Do this once when you build the list and you never have
to maintain separate "quick" and "slow" versions; the same list answers "what's fast?" and
"what's a project?" depending on how you filter it.
Tags are free-form and case-insensitive, so #Quick and #quick are
the same label, and you can mix dimensions on one item — cuisine, effort, indoor/outdoor,
budget — without them interfering. An item with no tags is still a perfectly valid entry;
it just won't survive a filter that requires a tag it doesn't have.
Include and exclude don't work the same way
This is the part worth slowing down on, because the two filter boxes follow deliberately
different logic. The Include box is an and: list
quick, healthy and an item must carry both tags to qualify. It's a
narrowing tool — every tag you add to Include shrinks the pool further, because the bar to
get in keeps rising. The Exclude box is an or: list
spicy and any item tagged spicy is dropped; add a second exclude tag and an
item is removed if it matches either one. Exclude is a veto, and each tag you add
vetoes more.
That asymmetry is exactly what you want once you see it. "Show me something quick and healthy" is an Include of two tags — both must be true. "Anything but spicy or fried" is an Exclude of two tags — either disqualifies. People sometimes expect Include to mean "has any of these," and then wonder why combining two common tags returns almost nothing. It isn't broken: you asked for items that are both, and few items are. If you want "either tag," run two quick draws, one per tag, rather than stacking them in Include.
A concrete example makes it click. Say your list is Pizza #quick #takeout,
Salad #healthy #quick, Curry #cook #spicy, and
Stir fry #quick #cook. Include quick on its own and three of the
four qualify — everything but the curry. Add healthy to Include as well and only
the salad survives, because it's the lone item carrying both tags. Clear Include, put
spicy in Exclude instead, and the curry alone drops out while the other three
stay. Same four items, three completely different pools, no editing — just different
questions asked of the same list.
The draw itself is still genuinely random
Filtering only decides who's eligible; it never tips the scales among them. Once your include and exclude rules have narrowed the list, the final choice among the survivors is a flat, unbiased pick made with the browser's Web Crypto API — the same unbiased source a careful raffle would use, not the lopsided "sort by random" shortcut. Every qualifying item has an equal shot. So you get the best of both: human judgement sets the boundaries ("nothing that takes an hour"), and impartial chance makes the call inside them, which is precisely the part you wanted to outsource in the first place.
One honest edge case: if your filters are so tight that nothing qualifies — say you Include a tag no item has, or exclude everything — there's simply nothing to draw. That's not an error so much as a signal to loosen a tag until at least one entry gets through. And like the rest of the site's pickers, the whole thing runs in your browser: your list and its tags never leave the device, and it keeps working with no connection at all.
When this is the right tool — and when it isn't
Reach for conditional picking whenever one list legitimately serves several moods and the thing that changes is which subset is valid right now. Meals by effort, workouts by equipment, date ideas by weather and budget, chores by how much time you've got — all of these are one tagged list with different filters on different days. If, instead, you never filter and just want a straight pull from everything, a plain single random picker is simpler. And if the goal isn't to exclude items but to make some more likely than others while keeping them all in play, that's a job for a weighted random picker — weights bias the odds, filters change the pool, and they solve different problems.
For the specific case of "what's for dinner," there's also a dedicated meal picker that remembers your saved meals — but if your list spans more than food, the conditional picker's tag-and-filter approach generalises to anything.
Put it to work
Spend two minutes tagging a list you already use — your meals, your workouts, your rainy-day ideas — and you've turned a flat menu into something that adapts to the day. Then open the conditional random picker , set an include or exclude tag for the mood you're in, and let it choose from exactly the items that fit. The list stays one list; only the slice changes.