ERS is the coordination backbone of an entity resolution platform. It receives RDF entity mention submissions, registers them, and orchestrates their resolution through a pluggable Entity Resolution Engine (ERE) over Redis. For each mention it returns a canonical cluster identifier — either confirmed by the ERE or provisionally issued when the engine does not respond within the configured time budget.
The system is engine-authoritative: the ERE determines canonical identity, ERS never overrides it. ERS persists the latest resolution decision per mention, exposes assignments through a REST API, and routes human curation recommendations back to the ERE for re-evaluation. It is not a master data platform, not a golden-record system, and does not clean or enrich incoming data.
- Python 3.12+
- Docker + Docker Compose
- Poetry 2.x
git clone https://github.com/meaningfy-ws/entity-resolution-service.git
cd entity-resolution-service
make installConfigure the environment:
cp infra/.env.example infra/.env
# Edit infra/.env — set MongoDB URI, Redis URL, portsmake up # start all services
make rebuild # rebuild Docker images and start
make down # stop all services
make logs # follow service logsThe API is available at http://localhost:${UVICORN_PORT:-8000}.
make test # all tests with coverage
make test-unit # unit tests only (no infrastructure needed)
make test-feature # BDD / Gherkin feature tests
make lint # ruff check
make typecheck # mypy
make check-quality # lint + typecheck + architecture boundaries
make ci-full # full CI pipeline — run before opening a PRPre-commit hooks (format + lint on every commit):
poetry run pre-commit installFor AI-assisted development, see CLAUDE.md and the .claude/memory folder for architecture specs, epic planning, and agent configuration.
Read docs/CONTRIBUTING.md for setup, coding standards, testing expectations, and PR guidelines. Please follow our Code of Conduct.
Licensed under the Apache License, Version 2.0.