Metadata-Version: 2.5
Name: entirius-django-lookup
Version: 0.2.0
Summary: Product lookup & dedup for the Volkanos platform — fingerprints, normalizers, match/review/no_match decisions
Project-URL: Repository, https://github.com/entirius/entirius-django-lookup
Author: Entirius
Maintainer-email: Piotr Brzozowski <piotrb@entirius.com>, Paweł Kiełt <cptshooter12@gmail.com>, Mateusz Baran <mateuszbaranpv@gmail.com>, Michał Kloczkowski <michal@kloczkowski.pl>
License-Expression: MPL-2.0
License-File: LICENSE
Requires-Python: >=3.12
Requires-Dist: celery>=5.3
Requires-Dist: django>=5.0
Requires-Dist: djangorestframework-simplejwt>=5.3
Requires-Dist: djangorestframework>=3.14
Requires-Dist: drf-spectacular>=0.27
Requires-Dist: entirius-django-utils>=2.0.0
Requires-Dist: imagehash>=4.3
Requires-Dist: pgvector>=0.3
Requires-Dist: pillow>=10.0
Requires-Dist: pydantic>=2.0
Requires-Dist: python-stdnum>=1.20
Requires-Dist: rapidfuzz>=3.0
Requires-Dist: requests>=2.31
Provides-Extra: dev
Requires-Dist: pre-commit; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Provides-Extra: test
Requires-Dist: dj-database-url>=2.0; extra == 'test'
Requires-Dist: psycopg[binary]>=3.1; extra == 'test'
Requires-Dist: pytest; extra == 'test'
Requires-Dist: pytest-django; extra == 'test'
Description-Content-Type: text/markdown

# django-lookup

Product lookup & dedup for the Volkanos platform — "do we already have this?" across PIM and supplier
feeds (atlas), by identifier, text or image, with explainable `match` / `review` / `no_match` verdicts.

## Install

```shell
pip install entirius-django-lookup
```

Then read [`docs/install.md`](docs/install.md): Postgres extensions, the settings table, choosing an
embedding backend, bootstrap order, sizing. [`docs/settings_example.py`](docs/settings_example.py) is
the block to copy — it is under test.

## Docs

| Read | When |
|---|---|
| [`docs/install.md`](docs/install.md) | putting it on a host |
| [`docs/api.md`](docs/api.md) | calling `/search/` and `/check/` |
| [`docs/operations.md`](docs/operations.md) | day 2 — commands, Celery, degradation, tuning, calibration |
| [`docs/concept.md`](docs/concept.md) | why a weight, flag or threshold is what it is |
| [`docs/gotchas.md`](docs/gotchas.md) | before editing |
| [`AGENTS.md`](AGENTS.md) | the map — layout, conventions, where things live |

## Development

```shell
make install   # uv sync --all-extras
make test      # pytest against Postgres (DATABASE_URL or LOOKUP_TEST_DB_*; default: zeno on 5532)
make check     # ruff + canonical .gitleaks.toml
```

## License

MPL-2.0 — see `LICENSE`.
