🇻🇪 Venezuela Te Busca: deduplicamos el registro de personas desaparecidas. Ayuda gratuita para reunir familias.Saber más

AI Data Infrastructure

One trusted view of
every <customer>

Tilores is real-time entity resolution: it links the duplicate, conflicting records scattered across your systems into one resolved record — so your fraud, compliance, Customer 360, and AI teams all work from the same truth.

Available on AWS Marketplace · Other hyperscalers and on-premise also supported

CRM
Sarah Johnson
s.johnson+spam@example.com · +1 415 555 0199
DOB 03/14/1989 · 94107
650 Townsend St · 37.7701, -122.4031
no match
Support
Sara Johnston
(415) 555-0199
DOB 1989-03-14 · 94107
650 Townsend Street · 37.7702, -122.4029
no match
App
Sarah Johnson
s.johnson@example.com
DOB 14.03.1989 · 94107
650 Townsend St #200 · 37.7700, -122.4032
no match
Web
Sarah Johnson
sarah.j@demo.com · +1 312 555 7788
DOB 1991-07-22 · 60614
12 N State St, Chicago · 41.8838, -87.6278
no match

3 records resolved into one entity — the Web lookalike stays separate.

R9 R12 R11 R1 Sara Johnston Support Sarah Johnson CRM Sarah Johnson App Sarah Johnson Web · different entity
Match Explainer
R9 Similar Last, Same DOB, Phone, Postal Code
R12 Similar Address, Geo within 50m
R11 Similar Last, Same DOB, Email, Postal Code
R1 Identical Name, DOB
Web ✕ No match rule triggered
3 of 4 linked → 1 entity 96% confidence
Sarah Johnson
96% confidence
ent_3c8b21a0 · 3 sources linked · 1 excluded
Name Sarah Johnson CRM
Email s.johnson@example.com App
Phone +1 415 555 0199 CRM
DOB 1989-03-14 Support
Address 650 Townsend St, SF CRM
Geo 37.7701, -122.4031 CRM
Best value picked per field across all linked sources — fully traceable back to the record it came from.
GraphQL ● 96ms
query ResolveEntity {
  entity(input: { id: "ent_3c8b21a0" }) {
    entity {
      id
      score
      edges
      recordInsights {
        name:     valuesDistinct(field: "name")
        email:    valuesDistinct(field: "email")
        phone:    valuesDistinct(field: "phone")
        dob:      valuesDistinct(field: "dateOfBirth")
        address:  valuesDistinct(field: "address")
        location: valuesDistinct(field: "location")
      }
    }
  }
}
Response
{
  "data": {
    "entity": {
      "entity": {
        "id": "ent_3c8b21a0",
        "score": 0.96,
        "edges": [
          "crm:support:R9",
          "crm:support:R12",
          "crm:app:R11",
          "crm:app:R1"
        ],
        "recordInsights": {
          "name": ["Sarah Johnson", "Sara Johnston"],
          "email": ["s.johnson@example.com"],
          "phone": ["+1 415 555 0199"],
          "dob": ["1989-03-14"],
          "address": ["650 Townsend St, San Francisco, CA 94107"],
          "location": ["37.7701,-122.4031"]
        }
      }
    }
  }
}

One Sarah Johnson — your fraud, support and AI systems now see the same person, and the lookalike stays separate.

CRM
Acme Inc.
acme.com · +1 650 555 0100
94105 · Reg US-9921
535 Mission St · 37.7891, -122.3942
no match
Salesforce
ACME INCORPORATED
+1 650 555 0100
94105 · Reg US-9921
535 Mission Street, SF · 37.7892, -122.3940
no match
ERP
Acme, Inc.
acme.com
94105
535 Mission St Ste 200 · 37.7890, -122.3943
no match
Web
Acme Inc.
acme-corp.io · +1 312 555 4400
60601 · Reg US-7744
200 W Madison St, Chicago · 41.8819, -87.6349
no match

3 records resolved into one entity — the Web lookalike stays separate.

R3 R5 R7 R8 ACME INCORPORATED Salesforce Acme Inc. CRM Acme, Inc. ERP Acme Inc. Web · different entity
Match Explainer
R3 Similar Name, Same Phone, Postal Code
R5 Identical Registration No.
R7 Similar Name, Same Domain, Postal Code
R8 Same Address, Geo within 50m
Web ✕ No match rule triggered
3 of 4 linked → 1 entity 97% confidence
Acme Inc.
97% confidence
ent_7f2a9b04 · 3 sources linked · 1 excluded
Name Acme Inc. CRM
Domain acme.com ERP
Phone +1 650 555 0100 Salesforce
Reg No US-9921 CRM
Address 535 Mission St, SF CRM
Geo 37.7891, -122.3942 CRM
Best value picked per field across all linked sources — fully traceable back to the record it came from.
GraphQL ● 88ms
query ResolveEntity {
  entity(input: { id: "ent_7f2a9b04" }) {
    entity {
      id
      score
      edges
      recordInsights {
        name:     valuesDistinct(field: "name")
        domain:   valuesDistinct(field: "domain")
        phone:    valuesDistinct(field: "phone")
        regNo:    valuesDistinct(field: "registrationNumber")
        address:  valuesDistinct(field: "address")
        location: valuesDistinct(field: "location")
      }
    }
  }
}
Response
{
  "data": {
    "entity": {
      "entity": {
        "id": "ent_7f2a9b04",
        "score": 0.97,
        "edges": [
          "salesforce:crm:R3",
          "salesforce:crm:R5",
          "crm:erp:R7",
          "crm:erp:R8"
        ],
        "recordInsights": {
          "name": ["Acme Inc.", "ACME INCORPORATED", "Acme, Inc."],
          "domain": ["acme.com"],
          "phone": ["+1 650 555 0100"],
          "regNo": ["US-9921"],
          "address": ["535 Mission St, San Francisco, CA 94105"],
          "location": ["37.7891,-122.3942"]
        }
      }
    }
  }
}

One Acme Inc. — every team and model now queries the same company, with the unrelated namesake kept apart.


110M+
Source records resolved
60M
Resolved entity clusters
<24h
Time to first results
100ms
Query latency at scale

Numbers from our work with Exiger. See the case study →


The problem

Your records are scattered. Your systems disagree. Your decisions suffer.

Customer data sits in your CRM and your support tool and your data warehouse. Supplier data sits in your procurement system and your risk database and your accounting platform. Transaction data sits everywhere.

The same person, company, or transaction shows up in multiple places under multiple spellings. Records get duplicated. Relationships get missed. And every team in your business — fraud, compliance, marketing, analytics, AI — ends up working from a different version of reality.

The downstream cost is real. Duplicates inflate marketing spend and hide fraud rings. Fragmented records break KYC and create compliance gaps. And every AI system you run — fraud models, customer assistants, supply chain intelligence — produces outputs only as good as the entity data it retrieves from.

Fragmented
4 sources · no match
CRM Acme Inc.
⚠ No match
SHP Acme, Inc.
⚠ No match
ERP ACME INCORPORATED
⚠ No match
SUP acme incorporated
⚠ No match
↓ Golden Record
Golden Record
1 entity · 4 sources linked
Acme Inc.
ent_7f2a9b04
97% confidence
email contact@acme.com
phone +1 650 555 0100
CRMSHPERPSUP

AI you can't trust

Your fraud model, your customer assistant, your supply chain AI — all retrieving from fragmented records. Inconsistent inputs produce inconsistent outputs, and no amount of prompt engineering fixes a data problem.

Fraud you can't see

The same fraudster signs up three times under name variations. Your system treats them as three new customers.

Compliance you can't prove

KYC, AML, and sanctions screening fall apart when you can't reliably tell whether two records are the same entity.


How it works

One resolved view of every entity — updated as data arrives.

Tilores connects to your existing systems, matches records as they arrive, and maintains a single resolved view every team can read from. It sits as a layer in your stack — not a platform you rebuild around.

01

Real time, not batch

Records are matched as they arrive - sub-300ms ingestion, ~150ms query response. Your resolved data is never out of date. There is no overnight job, no waiting until Tuesday morning, no static snapshot.

02

Matching rules you can explain to a regulator

Rules are explicit, tunable, and auditable. You can show exactly why two records were linked. You can adjust precision and recall to fit your use case. No black box.

03

Sits as a layer in your stack

Tilores doesn't demand a sandbox. Source data flows in via GraphQL or pre-built connectors. Resolved entity events flow out to your data warehouse, your fraud platform, your AI applications - whatever you've already built.

GraphQL · entity resolution API
Query
# Resolve a company across all your sources
query {
  search(input: { name: "Acme Inc." }) {
    entities {
      id
      recordInsights {
        name:    newest(field: "name")
        email:   first(field: "email")
        phone:   first(field: "phone")
        sources: valuesDistinct(field: "source")
      }
    }
  }
}
Response
97ms
{
  "entities": [{
    "id": "ent_7f2a9b04",
    "recordInsights": {
      "name":    "Acme Inc.",
      "email":   "contact@acme.com",
      "phone":   "+1 650 555 0100",
      "sources": ["CRM", "ERP", "Shopify"]
    }
  }]
}

Use cases

Every use case, one platform

From fraud detection and KYC compliance to Customer 360 and AI pipelines — the same resolved entity graph powers every team.


AI

The data layer your AI needs — and that every team already depends on.

Every AI system you deploy — fraud detection, KYC automation, customer assistants, supply chain intelligence — depends on knowing who it's talking about. Not approximately. Exactly. The same entity across every system you have.

When your records are fragmented, your AI guesses. It returns inconsistent answers about the same customer, misses fraud connections that span systems, and hallucinates relationships that don't exist. The problem isn't the model. It's that the model has no reliable entity truth to retrieve from.

Tilores is the resolved entity layer underneath. Think of it as persistent entity memory for your AI — a real-time graph of every resolved person, company, and transaction that every model, agent, and RAG pipeline in your business can retrieve from consistently.

"This is a very fundamental piece of data that will have downstream effects. We have AI models all over the place, and if you start off with bad initial input, you could end up with garbage in, garbage out. A lot of models will benefit from a good entity system early in the pipeline."
Simon Baker , SVP of AI Products & Supply Chain Intelligence, Exiger
What this means for your AI stack

Entity memory for agents and RAG

Vector databases return semantically similar documents. Tilores returns the resolved entity — the unified, canonical view of a customer or company across all your sources. For questions like "who is this person?" you need entity resolution, not similarity scores. The two are complementary.

Always current, never stale

AI that retrieves from last week's batch job will confidently give wrong answers. Tilores resolves new records in under 300ms and updates the entity graph live — so every query returns current truth, whether your agent is checking a supplier risk score or a customer's fraud history.

Auditable, so your AI can explain itself

Every entity link is explicit and traceable. When a regulator asks why your AI flagged this entity or resolved that match, you can show exactly which records were linked and why. No black box. No "the model decided."


Customer story

How Exiger resolved 110 million company records — and built their AI on top

Exiger is a leader in supply chain risk and compliance, trusted by more than 150 Fortune 500 companies and over 60 federal agencies. To map the world's supply chains reliably, they first needed to resolve more than 110 million company records - drawn from 16 distinct data sources, from clean legal-entity registries to richly detailed global shipping and customs data - into a single, consistent entity graph.

They evaluated Tilores against multiple alternatives across a two-month structured benchmark. Tilores won on the hardest data to match: the global shipping and customs records that competing solutions couldn't reliably resolve. Today, Tilores is the entity layer underneath Exiger's AI-powered supply chain intelligence.

Simon Baker
"It needs to scale, it needs to have low latency, it needs to handle hundreds of millions of company records reliably. And it needs to be as close as possible to a living system - it can't be a static system."
Simon Baker, SVP of AI Products & Supply Chain Intelligence, Exiger
Read the full case study →
Exiger in numbers
110M+
Source records
60M
Entity clusters
16+
Data sources
<24h
Initial ingestion
100ms
Query latency

Why Tilores

Why Tilores, not the alternatives

You've considered
Vector databases (Pinecone, Weaviate, pgvector)
Tilores advantage
Vector databases answer "what documents are similar to this?" Tilores answers "who is this entity, across all my systems?" For AI that needs to reason about real-world people, companies, and transactions — you need entity resolution, not embeddings. The two are complementary.
You've considered
Graph databases (Neo4j, Amazon Neptune)
Tilores advantage
Graph databases lack native fuzzy matching — a misspelled name silently misses the right entity without bolting on a separate search engine. They also struggle to enforce clean entity boundaries in large, interlinked datasets, making it hard to guarantee that retrieved records belong to exactly one customer. Tilores is purpose-built for entity resolution: fuzzy matching is built in, every entity graph has clean auditable boundaries, and GDPR compliance features come standard.
You've considered
Building it in-house
Tilores advantage
Faster to deploy, no maintenance burden, scales past the 1M-entity wall most builds hit. Your engineers focus on your product, not on entity matching infrastructure.
You've considered
Bolting deduplication onto Elasticsearch
Tilores advantage
Tilores is built for entity resolution, not search. Consistent entity graphs, not best-effort matches. No recursive search problems at scale.
You've considered
MDM platforms
Tilores advantage
Tilores sits as a layer in your stack, not a platform you rebuild around. Real-time, not batch. GraphQL-native. Faster to deploy.
You've considered
Other ER vendors
Tilores advantage
More configurable matching rules. Real-time architecture. One platform that serves risk, Customer 360, and AI — not just compliance.

In head-to-head evaluations, Tilores has won on the hardest data — the noisy, partial, multilingual records no other solution could match reliably.


The team

A team that works alongside yours

Implementing entity resolution well is technical work. The teams who succeed with Tilores aren't the ones who buy the software and disappear - they're the ones who collaborate closely with our engineers to get the matching rules right for their data. Our team works that way by default.

"The Tilores team is one of the most professional teams I've ever worked with in my professional career. They were 100% supportive. They really were part of our team - it felt like a family. They are highly accessible, very professional. They can have discussions at a very pedantic technical level and they're more than capable of explaining things at a business level when needed."
Simon Baker
Simon Baker
SVP of AI Products & Supply Chain Intelligence, Exiger
"Tilores gives you a lot of control over the matching rules and a lot of explainability over the results, and lets you work at a scale that would be hard to manage internally. Tilores allows for rapid time to value and a lower cost of ownership in the long term."
Alexandre Halley
Alexandre Halley
Data Director, Inato
"Accurate supplier data matching and normalization are essential foundations for meaningful data exchange in our ecosystem. Tilores' expertise in entity resolution aligns perfectly with our commitment to providing companies with the technical infrastructure they need to collaborate effectively while maintaining data sovereignty."
EW
Erik Wiegert
Head of Product & Release Management, Cofinity-X

Most deployments are running in weeks, not months.


See what resolved entity data does for your business — and your AI.

Whether you're building AI applications that need reliable entity data, or evaluating entity resolution to replace something that's stopped scaling — the fastest way to know if Tilores fits is to see it with your data.

Book a 30-min demo

30 minutes with our team to walk through your use case.

Get the Evaluation Build

Evaluate locally before deploying to AWS or on-premise.

Used by teams at Exiger, Inato, Grover, Cofinity-X, and others.