Тестовое задание: Определить товар по сообщению покупателя
Нужно сделать простого AI-агента для продаж. Одна из его базовых задач - понять, о каком товаре из каталога магазина спрашивает покупатель, который пишет живым языком: с опечатками, сокращениями и лишними словами.

Ожидаемый объём: 4-6 часов чистой работы. 

Дано 
catalog_exel.csv - каталог магазина (~500 позиций): sku, name, unit, price.
messages.txt - ~40 реальных по духу сообщений покупателей «как есть».

Сделать
HTTP-сервис на Python 3.12 + FastAPI с одним эндпоинтом POST /match.

Запрос:

{"messages": ["саморезы по дереву 4.2 на 75, пачку", ...]}

Ответ:

{"results": [{"message": "...", "status": "matched", "candidates": [{"sku": "SKU-123", "confidence": 0.87}]}]}
Статусы: matched — уверен, candidates[0] и есть ответ; ambiguous — не уверен, 2-3 кандидата; not_found - товара нет в каталоге или запрос не про товар (candidates можно оставить пустым).

Формат запроса/ответа менять нельзя - мы проверяем сервис автоматически. Сервис должен подниматься одной командой - напиши её в README.

Важно: сервис должен работать полностью автономно - без интернета, без внешних API и без чьих-либо ключей (в том числе без вызовов LLM-API изнутри сервиса). 
Ключевое требование
Ложных ответов должно быть по-минимому. Если система сомневается - ambiguous со списком кандидатов будет в разы лучше, чем уверенно выданный неправильный товар. Проверять будем в том числе на сообщениях, которых нет в messages.txt.

Обязательно
README.md, три части:
Как запустить (одной командой).
Какие решения принял и ПОЧЕМУ: компромиссы, что попробовал и отбросил; что осознанно не сделал и что доделывал бы до продакшена.
Раздел «Масштаб»: что изменится в твоём решении, если позиций в каталоге станет 2 миллиона (и жить он будет в PostgreSQL), а магазинов на одном сервисе - пятьдесят, у каждого свой каталог. Код под это писать не нужно - только инженерное рассуждение.
Тесты (pytest), включая негативные сценарии.
Git-репозиторий с осмысленной историей коммитов, а не одним коммитом «done».

Не нужно
База данных (каталог можно держать в памяти), Docker, авторизация, фронтенд.

Про нейронки
Для НАПИСАНИЯ кода пользоваться можно и нужно чем угодно (Claude, ChatGPT, Cursor, DeepSeek - что есть под рукой). 

Сдача
Ссылка на git-репозиторий.