Splitting a “9-pack set” by contents created 80 fake products

日本語版

Development log of Torecadash / October 2026

While inspecting the product list of my iOS app Torecadash, I found 80 products that do not exist around the Pokémon Card “30th CELEBRATION Card Set.” There are only 9 official products. The other 80 were fake products created as a result of splitting a “9-pack set” by its contents. What happened and how I fixed it are written from my hand-over notes.

This is a development log of the app.

The 9-pack set was “one product”

The lottery for a “card set (9-pack set)” that a shop offers is one product. In the catalog it is registered as a “9-kinds set” (10,800 yen). But the app’s product matching (the step that splits an article mentioning several products into one per product) split this title by contents. Names of the nine contents, such as “Mega Mewtwo X” and “Nyabby,” were each treated as a separate product.

As a result, this is what it looked like:

StateCount
Original articles that had been split (parents) were hidden22
Articles created by splitting (children)190 (63 visible)
Fake products created for the children80

On screen, one lottery appeared as if it were separate lotteries for each content item.

The fix: stop the entry, then put things back

  1. Do not split at the entry. A title of the form “card set” + “N kinds” is not split.
  2. Restore the parents. I put the 22 hidden parents back onto the “9-kinds set” product. How I restored each differed (5 back to visible, 3 treated as duplicates because the same shop already had a visible 9-pack set, 13 whose deadline had passed, and 1 with no deadline).
  3. Detach the children. I marked the 190 children with a “wrong split” flag (hiddenByWrongSplit), hid them, and removed their link to a product.
  4. Delete the fake products. I deleted the 80. Before deleting, I confirmed that nothing referenced them and saved the original contents as a backup.

There is an exception. A listing like “Starter Set ex Nyaoha / Hogator / Quaxly 3-kinds set,” where the title spells out all the product names, is still split as before. What I learned this time is that an “N-kinds set” is sold as one product.

Other fake products found in the same inspection

To watch for these, I added an audit (audit_catalog_clean.js). Each time it counts five things: single-card products, products with several set names, mismatches between an application page’s title and the product, drift of list prices copied from products, and products with non-card names.

What I learned

A “split” process needs a “do not split” condition.

This article is written from my hand-over notes (§272) (October 7, 2026). The counts are as written in the notes.

Related

This is the English version of the original Japanese article.

More in English