← All Use Cases
Use Case

You can't map a supply chain
if you can't identify the companies

Supply chain intelligence depends on knowing precisely which companies you're tracking. When the same manufacturer appears under a dozen name variants across your sources, everything built on top — risk scoring, due diligence, compliance checks — inherits that ambiguity. Tilores resolves company records into a single, reliable entity graph before your intelligence layer ever runs.


The Problem

Duplicate company records corrupt everything downstream

Without Tilores

A tier-2 supplier appears across multiple data sources under different name forms. Your system treats each as a different company:

"Jiangsu Bright Mfg Co" and "JIANGSU BRIGHT MFG." are two separate entities — risk is split across both
Shipping record with embedded address fragment ("APPLE ELECTRONICS SHENZHEN GUANGDONG") doesn't match the registry entry
A sanctioned subsidiary looks unconnected to a key supplier because the name differs by transliteration
Due diligence runs on duplicates — analysts review the same company multiple times without knowing it
With Tilores

Every source record for a company resolves into a single canonical cluster — before any intelligence runs on top:

Token-weighted matching handles noisy shipping names, transliterations, and embedded address fragments
Company records from 16+ source types resolve into one entity — registries, shipping data, customs, reference data
Risk and due diligence run against the full entity, not a single fragmented source record
New records ingest continuously — the entity graph updates in real time, not overnight batch

The Hard Part

Company matching is harder
than person matching

Two people named John Smith in the same city are relatively distinguishable. Two companies called Ideal Industries Inc. registered in the same state may be genuinely different organisations with no reliable discriminating attribute available.

Global shipping and customs data compounds this further. Records are captured from handwritten port documents, scanned forms, and OCR systems operating across dozens of languages and scripts. Company names carry embedded address fragments, extraneous tokens, transliteration variants, and missing attributes.

Standard fuzzy matching and exact name search can't resolve records like these. Tilores uses token-weighted matching that down-weights common terms ("industry", "solutions", "international"), handles diacritics and script variants, and applies consistency rules to prevent over-clustering — even when records from a dozen sources all describe the same company in different ways.

Same company — 6 ways it appears in your data
Company registry
Bright Precision Manufacturing Ltd.
US customs manifest
BRIGHT PRECISION MFG LTD SHENZHEN GUANGDONG
Shipping database
Bright Precision Mfg.
Trade reference data
Bright Precision Manufacturing Limited
Supplier portal
BPM Ltd
Invoicing system
Bright Precison Mfg Ltd
→ Tilores resolves all six to one canonical cluster

How It Works

An entity layer your intelligence stack builds on

1
Ingest All Sources

Connect company registries, shipping databases, customs feeds, trade reference data, and internal supplier records into a single Tilores instance via GraphQL.

2
Resolve the Entity

Tilores applies token-weighted matching, geo-distance rules, ID-based matching, and consistency checks to cluster all records for the same company — regardless of name variant or data quality.

3
Stream Cluster Events

As new records arrive, the entity graph updates continuously. Kafka-compatible event streams propagate cluster changes to your downstream systems automatically.

4
Build Intelligence On Top

Risk scoring, due diligence, sanctions screening, and supply chain mapping all run against a clean, de-duplicated company graph — not raw, noisy source data.


Capabilities

Built for the complexity of real supply chain data

Token-Weighted Name Matching

Down-weights generic tokens ("industry", "solutions", "international") that cause false matches, while surfacing high-signal name fragments — even when embedded in OCR noise or address strings.

🔄
Continuous Ingestion

New records resolve in real time as they arrive from source pipelines. Your entity graph is always current — no nightly batch runs, no stale clusters, no delayed risk signals.

🛡
Consistency Rules

Even when matching rules fire, a designated field (VAT ID, tax number, company registration) can veto a cluster assignment — preventing over-clustering even in high-noise datasets.

🌐
Global Name Coverage

Handles Chinese business name structures, diacritics, script variants, and transliterations across languages — so entity resolution works across every geography in your supply chain.

📍
Geographic Distance Matching

Geo-coordinate-based rules let you match records that share a location within configurable distance thresholds — useful when address strings differ but physical location is consistent.

Sub-100ms Query Latency

Search and resolve across hundreds of millions of records in under 100 milliseconds — fast enough for real-time lookups, due diligence workflows, and transactional risk checks.



Technical Fit

Designed for enterprise data infrastructure

Cloud

Available on AWS Marketplace. Integrates with existing Spark, Kafka, and data warehouse infrastructure without rebuilding dependent systems.

API

GraphQL API for record ingestion and entity search. Event streaming for cluster updates propagated downstream.

Latency

<100ms search across hundreds of millions of records — suitable for real-time due diligence, analyst tooling, and transactional lookups.

Scale

Handles 110M+ records with cluster sizes up to 6,000 records. Clique-based graph compression handles the largest clusters without performance degradation.

Ingestion

Continuous ingestion — new records resolve into the entity graph in real time, not overnight batch. Full initial loads of 110M records complete in under 24 hours.

Compliance

SOC 2 certified. Explainable matching — every resolution decision returns matched attributes, source records, and the rules that triggered the match.

Example — resolve company entity from shipping record
query ResolveCompany($name: String!, $country: String!) {
  search(input: {
    parameters: {
      companyName: $name
      country: $country
    }
  }) {
    entities {
      id
      score
      hitScore
      records {
        id
        companyName
        registrationNumber
        country
        vatId
        sourceType
      }
    }
  }
}

Explore

Related use cases


Start from accurate company identity —
build better intelligence on top

See how Tilores resolves company records at scale. Available on AWS Marketplace.