Available · v1

Catalog Matching

Send two product records from any supplier, marketplace, or feed. Find out whether they're the same purchasable item, a different variant of the same product, or a different product, along with the attributes that agree and the ones that conflict.

  • Distinguishes exact variants from product families
  • Normalizes units, attribute names, and identifier formats
  • Validates GTIN, UPC, and EAN check digits
  • Says "uncertain" instead of guessing an exact match
Request body
{
  "product_a": {
    "title": "Apple iPhone 16 Pro 256GB Black Titanium",
    "brand": "Apple",
    "model": "iPhone 16 Pro",
    "attributes": {
      "storage": "256GB",
      "color": "Black Titanium"
    }
  },
  "product_b": {
    "title": "iPhone 16 Pro - Black Titanium - 256 GB",
    "brand": "Apple",
    "model": "iPhone 16 Pro",
    "attributes": {
      "storage": "256 GB",
      "color": "Black Titanium"
    }
  }
}
Response · 200 OK
{
  "request_id": "req_6tVb1QmXcR8pLz3K",
  "match_type": "same_variant",
  "requires_review": false,
  "matched_attributes": [
    "brand",
    "model",
    "storage",
    "color"
  ],
  "conflicting_attributes": [],
  "normalized": {
    "brand": "Apple",
    "model": "iPhone 16 Pro",
    "attributes": {
      "storage": "256GB",
      "color": "Black Titanium"
    }
  }
}
The problem

The same product, described a hundred ways

Suppliers and marketplaces format titles, units, and identifiers differently. Deciding whether two listings are the same item matters: a wrong match causes inventory errors and fulfillment problems.

Variant-aware matching
Same variant, same product with a different variant, different product, or uncertain. Storage, color, size, and other variant conflicts block exact matches.
Deterministic normalization
Case, whitespace, units, attribute aliases, and company suffixes are normalized by rules, so the same input always normalizes the same way.
Identifier evidence
Check-digit-validated GTINs and manufacturer part numbers count as strong evidence. Supplier SKUs are never treated as proof either way.
Use cases

Where teams use it

  • Supplier onboarding
  • Marketplace listing deduplication
  • Price comparison feeds
  • Catalog clean-up
Integrate

One HTTP call

const response = await fetch("https://kovca.io/api/v1/catalog/match", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.KOVCA_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "product_a": {
      "title": "Apple iPhone 16 Pro 256GB Black Titanium",
      "brand": "Apple",
      "model": "iPhone 16 Pro",
      "attributes": {
        "storage": "256GB",
        "color": "Black Titanium"
      }
    },
    "product_b": {
      "title": "iPhone 16 Pro - Black Titanium - 256 GB",
      "brand": "Apple",
      "model": "iPhone 16 Pro",
      "attributes": {
        "storage": "256 GB",
        "color": "Black Titanium"
      }
    }
  }),
});

if (!response.ok) {
  const { error, request_id } = await response.json();
  throw new Error(`${error.code}: ${error.message} (${request_id})`);
}

const { match_type, requires_review, conflicting_attributes } = await response.json();
  • Returns Intelligence

    Classify return requests, check them against your return policy, and get a suggested next step.

  • Compatibility Intelligence

    Determine whether two products work together using structured specifications, compatibility rules, and intelligent evaluation.

  • Listing Intelligence

    Check product listings for contradictions, missing attributes, unsupported claims, and your listing requirements before publication.

  • Warranty Intelligence

    Classify warranty claims, check them against the warranty terms you supply, and get the next workflow step.