Skip to content

Asset licensing and source risk register ​

Date: 2026-05-14. Status: operational guardrail, not legal advice.

This page records asset, content, data-source, and licensing risks that affect SKN's scanner, collection, pricing, and future marketplace work. It is not a substitute for legal review. It exists so engineering decisions do not accidentally turn an internal proof of concept into public redistribution of assets we do not control.

Core rule ​

Private indexing is still copying. Public image serving is redistribution.

Unknown, missing, or unclear rights are acceptable only for private lab work on controlled infrastructure. They are not acceptable for assets bundled in the app, exposed through a public CDN, displayed in production UI, used in paid marketing, or shipped as a downloadable dataset.

Every source used by the product should keep:

  • source name and upstream URL;
  • source type: image, metadata, pricing, sale comp, user upload, model output;
  • license or terms URL when available;
  • rights status: approved, internal_only, unknown, or blocked;
  • allowed uses: private_lab, private_beta, public_app, public_api, marketing, training, redistribution;
  • cache permission, rehost permission, and public display permission;
  • attribution requirement;
  • last review date and reviewer.

Risk register ​

AreaCurrent examplesMain riskAllowed nowRequired before production use
Sealed-product imagery from ptcg-assets1niceroli/ptcg-assets local clone, packshots, ETBs, displays, tins, collectionsThe GitHub repository exposes no declared license (NOASSERTION), and the images likely include copyrighted Pokémon packaging artworkPrivate sealed scanner lab, private embeddings, private candidate analysisWritten permission, a compatible license, or replacement by production-safe assets
SKN-owned sealed bootstrap referencesOwned French sealed photos under tcg-collector-backend/src/api/tests/fixtures/sealed-samplesSafe for lab use, but the current benchmark reuses the same photos as references, so it can overstate real-world accuracyPrivate lab matching, debug candidate display, regression benchmarkSeparate unseen evaluation set, documented retention policy, and explicit production asset policy
Pokémon card imagesTCGdex images, local image cache, scan debug candidatesCard artwork is copyrighted; cache and rehost rights must match source termsCurrent private/dev scanner work with provenance retainedVerified source terms for cache, public display, rehost, attribution, and commercial use
Pokémon logos, symbols, product names, set marksSet logos, Pokémon names, product packaging, slab labelsTrademark and brand confusion risk; app must not imply official affiliationDescriptive references and internal classificationClear disclaimers, trademark-safe product copy, and legal review before public launch
Competitor screenshots and UI/UX referencesMonPrice, TCG CardScanner, Iestims, Zebradex screenshots in research foldersScreenshots are copyrighted and should not become public marketing or training assetsInternal competitive research only, with source/date contextRemove or replace before public docs/marketing unless permission or fair-use/legal review is explicit
Marketplace and pricing dataeBay, Cardmarket, TCGPlayer, PriceCharting, RapidAPI providersAPI terms, scraping restrictions, caching limits, rate limits, and commercial-use clausesProvider evaluation and normalized schema designTerms review, API agreement where needed, cache policy, freshness display, and provider abstraction
User-uploaded scan photosPhone captures, debug images, issue screenshotsPhotos may include personal data, EXIF, background content, or collection value signalsTransient scan processing and explicit debug casesRetention policy, EXIF stripping, deletion path, access control, and user-facing privacy copy
Slab label and certification dataPSA/CGC/BGS labels, grade text, certification numbersCertification databases and label designs may have terms and branding limitsOCR/classification experiments on user-provided imagesTerms review before querying official databases or showing certification enrichment
Derived embeddings and indexesDINOv2 embeddings from card or sealed images, pgvector tablesEmbeddings can be derived from assets with unclear rights and should not become a redistributed datasetPrivate matching index on controlled backendSource registry linkage, no public dump, no public candidate images unless image rights are approved
Third-party ML models and librariesDINOv2, Ultralytics YOLO, OpenCV, FAISS/pgvector, npm/python dependenciesModel and dependency licenses may impose notice, attribution, copyleft, or commercial constraints. Ultralytics YOLO usage must be reviewed against AGPL-3.0 or commercial Enterprise terms before closed commercial production use.Engineering use with dependency tracking and private lab gatingLicense audit, notices, model-license records, and commercial-license decision before production release
Public server and CDN storageVPS image storage, nginx-served images, future CDNHosting images on our server can become redistribution even if the file originated elsewherePrivate authenticated debug or terms-approved serving onlyPublic asset allowlist enforced by rights status

Practical policy ​

Internal lab ​

Internal lab usage may ingest sources with unknown or internal_only status when access is restricted to the team and the output is used only to evaluate scanner quality. This includes sealed-product experiments using ptcg-assets.

Internal lab endpoints should not expose raw source folders, full datasets, or downloadable image archives. For sealed scan endpoints, returning product metadata and confidence is acceptable. Returning candidate images is acceptable only in private debug surfaces.

Private beta ​

Private beta should not display unlicensed third-party images by default. If an unapproved source is needed for matching, keep it backend-only and return a placeholder, user photo crop, or metadata-only candidate in the client.

Public production ​

Production must block unknown and internal_only images from:

  • mobile app bundles;
  • public APIs;
  • public CDN or nginx routes;
  • marketing pages;
  • public documentation;
  • downloadable datasets;
  • marketplace listing media.

Production-safe images must be backed by explicit source terms, direct permission, a compatible license, or user-owned uploads with appropriate consent.

Sealed scanner implication ​

ptcg-assets is useful for proving whether DINOv2 plus pgvector can identify sealed products. It should not be copied wholesale into the public backend data path, app bundle, or CDN.

The safer sealed-lab architecture is:

  1. keep ptcg-assets as a private source clone;
  2. create a normalized sealed-product source registry;
  3. index only a controlled subset for lab matching;
  4. store source provenance on every product and image;
  5. keep embeddings private;
  6. return public candidate images only after the source is approved for public display.

Immediate actions ​

  1. Add a source registry before scaling sealed-product indexing.
  2. Mark ptcg-assets as internal_only until permission or replacement assets exist.
  3. Verify TCGdex, pokemon-api.com, eBay, Cardmarket, TCGPlayer, and graded-provider terms before public pricing or image display.
  4. Strip EXIF and define retention for scan debug uploads.
  5. Add a production allowlist so public image routes can serve only approved assets.
  6. Keep legal review as a launch gate before public paid release.