Writing alert rules that catch sealed TCG — and skip singles, proxies, and bulk
Trading cards are the hardest category to filter on Kleinanzeigen, and it's not close. A single keyword — "Lorcana," "Pokémon," "One Piece" — covers sealed booster boxes and loose singles, sleeves, playmats, printed proxies, damaged bulk, empty display boxes, and "Suche"/"Tausche" posts from other buyers. The word you searched for is present in all of them; the thing you want to buy is in maybe one in ten. Set a naive alert and your phone becomes a slot machine you stop looking at.
This is a recipe for fixing that. It assumes you've already decided to filter on more than a bare keyword (the companion piece argues the why); here we get concrete about the how — how to name exactly what counts as a buy, the reject list every TCG search needs, a worked example you can adapt, and the edge cases that trip up every filter. The technique generalises to GPUs, sneakers, and anything else where meaning hides in the description, so it's worth reading even if you never touch a card.
Step 1: Name exactly what "sealed" means to you
"Sealed" is fuzzier than it looks, and the fuzziness is where junk sneaks in. Pin it down before you write a single rule. Decide, on paper:
- The seal words that count: sealed, OVP (Originalverpackung), originalverpackt, ungeöffnet, eingeschweißt, shrink-wrapped, neu und versiegelt. Note which are reliable and which get abused (plenty of sellers write "OVP" on a resealed or merely boxed item).
- The product forms you want: booster box, display, booster bundle, Elite Trainer Box (ETB), blister/ sleeved booster — versus singles, decks, and accessories. Be specific; "box" alone matches storage boxes and empty display cartons.
- Language and set: English vs German print often carries a real price difference. If you only want English sets, that's a rule. If you only want specific sets (a hot Lorcana chapter, a chase Pokémon set), name them.
If you can't state your "yes" in one clear sentence, no filter can enforce it. This step is the whole job.
Step 2: The reject list every TCG search needs
The recurring junk on a TCG search is remarkably predictable. Write the "no" list once and reuse it:
- Singles / Einzelkarten — unless you specifically hunt singles, this is the biggest source of noise.
- Sleeves / Hüllen, Playmat / Spielmatte, Toploader, Binder / Sammelalbum — accessories.
- Proxies / Fakes / Custom / Selfmade / Nachdruck — not genuine sealed product.
- Bastler / beschädigt / geöffnet / angespielt — opened or damaged.
- "Suche" / "Tausche" — other buyers and traders, not sellers. Astonishingly common and pure noise.
- Sammlung / Konvolut / bulk — a mixed pile, usually not what a sealed-only hunter wants (decide per case).
- Leere OVP / Displaykarton leer — empty boxes sold as collectibles.
Step 3: Two ways to enforce these rules
You've got the "yes" and the "no." Two ways to apply them, with very different ceilings:
Keyword negatives (blunt, free, everywhere). Bake the reject list straight into the search query:
Lorcana OVP -Einzelkarten -Sleeves -Playmat -Proxy -Suche -Tausche -Sammlung. This works and you should
absolutely do it — most people never bother, and it alone cuts noise by half or more. Its limit is that it
matches words, not meaning: exclude "einzeln" and you'll also kill the listing that says "verkaufe nicht
einzeln, nur als Set" — which is the sealed lot you wanted.
Plain-language rules read by AI (nuanced, needs a tool + key). Instead of a word list, you write an instruction that a model applies to each listing's full text. It can honour "sealed, not singles, but a mostly-sealed lot is fine" because it weighs meaning rather than presence. That's the ceiling keywords can't reach. (One honest limit: reliable filtering reads the listing text — title, description, price. Treat "the AI judges the item from the photo" as marketing until proven; image reading in this context is far flakier than vendors imply.)
Step 4: A worked example — sealed Lorcana under budget
Here's a rule block written the way you'd hand it to a text-reading filter. Adapt the set, language, and price:
Pass only listings selling sealed, unopened English Lorcana product — booster boxes, booster displays, booster bundles, or Elite Trainer Boxes — priced at or under 80€ (or 90€ if shipping is included).
Reject single cards, complete/loose decks, sleeves, playmats, binders, toploaders, and any accessory-only listing. Reject proxies, fakes, custom or self-printed cards, and anything described as opened, damaged, "Bastler," or "angespielt." Reject "Suche," "Tausche," and empty display boxes.
Ambiguous cases: if it's a mixed lot, pass it only if the description makes clear it's mostly sealed product, not a pile of singles. If the price is stated per pack rather than per box, judge against the per-box total, not the headline number. If language isn't stated but the set art or name is clearly the German print, reject.
Notice how much of that a keyword list simply can't express — the "mostly-sealed lot is fine," the per-pack price trap, the German-print exclusion. That gap between what you can say and what a filter can enforce is exactly what you're closing.
Step 5: Edge cases that trip up every filter
These recur across card searches. Decide each one on purpose instead of leaving it to luck:
- "Nicht einzeln, nur als Set." You want this. A blunt
-einzelnnegative wrongly kills it; a text rule that understands the whole sentence keeps it. - Per-pack vs per-box pricing. "5€" on a Lorcana listing might be one pack, not a box. Anchor your price ceiling to the unit you actually buy.
- "OVP" that isn't. Some sellers slap OVP on resealed or merely boxed goods. No filter fully solves this — it's why you still read the listing and the photos before you message.
- Tausch-only. "Nur Tausch gegen…" is not a sale. Reject unless you genuinely trade.
- Grading and slabs. A "sealed" search shouldn't pass PSA/CGC single slabs — those are singles in a case.
The technique generalises
This isn't really about cards. The same three moves — name the yes precisely, list the predictable no, handle the ambiguous middle on purpose — fix any category where the truth lives in the description:
- GPUs: pass "working, not for-parts"; reject "defekt," "Bastler," "nur Lüfter dreht."
- Sneakers: pass "deadstock / new in box, EU 44"; reject "getragen," "Replikat," "ohne Karton."
- Consoles: pass "PS5 mit Controller, funktionsfähig"; reject "nur Standfuß," "defekt," "Ersatzteile."
Anywhere a one-word search returns 80% noise, this recipe pays off.
Tune from misses
No rule set is right on day one. Every false positive that slips through and every real deal that got wrongly blocked is a line to add or soften. Keep a running note. A filter you write once and never revise slowly rots as sellers invent new phrasings; a filter you sharpen against real misses gets quietly, permanently better.
The tool I use for this
Since it's my own, plainly: I run an AI agent that watches one eBay Kleinanzeigen search and applies exactly
this kind of plain-language rule to each new listing's title, description, and price, then pings my
Discord only on the passes — about once a minute on the paid tier, every 15 minutes free. It uses Google's
Gemini for the reading and you bring your own Gemini key. Honest scope: Kleinanzeigen-only, Discord-only,
text-only (no image analysis), and — like any automated monitor — it sits in the platform's ToS/robots.txt
gray area, so it polls at human-like intervals and never bids or buys; it only decides whether a listing is
worth telling you about. The rules, though, are the transferable part: write them well and they'll serve you in
a native saved search's negatives or any tool you like.
The agent above is Schnappalarm — start free. Describe what counts as a buy in plain language; it reads each new Kleinanzeigen listing's text and pings your Discord only on the matches. Kleinanzeigen-only, Discord-only, bring your own Gemini key.