KAZNA TECH / Решения / Продуктовым командам
LegalTech, FinTech, площадки, аналитика

Строить продукт на данных, а не на их добыче

Когда данные из государственных источников нужны в продукте, команда обычно сначала пишет сбор, а потом годами его чинит. Это работа без конца и без ценности для пользователя. Мы отдаём готовый слой данных, одинаковый для всех источников, с понятными обязательствами по доступности и свежести.

Ситуация

Полкоманды занято сбором, а не продуктом

Сбор данных выглядит как задача на пару недель, а превращается в постоянную. Источники меняются, форматы расходятся, что-то отваливается в выходные. Инженеры, которых нанимали делать продукт, дежурят у парсеров, а сроки по фичам едут.

Что даёт API

Слой данных перестаёт быть вашей зоной ответственности.

Один формат на всё

Источники отдаются одинаково: обработка пишется один раз.

Один токен

Новый источник не требует ни новой интеграции, ни нового договора.

Опубликованные обязательства

Доступность и лаг данных известны до договора и зафиксированы в нём.

История снимков

Состояние объекта на любую дату: можно строить динамику, а не только срез.

Оплата за сбор

Читать собранное бесплатно: кэшировать у себя ради экономии не нужно.

Предсказуемые ответы

Пока объект собирается, приходит статус, а не ошибка: ретраи не нужны.

Какие источники закрывают задачу

Ни один источник не отвечает на вопрос целиком. Ниже те, что нужны именно для этой работы.

ИсточникЧто даёт для задачи
Все источники каталогаРеестры, суды, производства, отчётность, закупки, проверки
Один методЗапрос по естественному идентификатору объекта
Один форматОдинаковая структура ответа и одинаковые статусы
Датированные снимкиИстория состояний для аналитики и отчётности
Собственный расчётГотовая оценка риска поверх собранных данных
Кредиты вместо запросовТариф не наказывает за частое чтение

Весь каталог: источники данных →

Как это выглядит в коде

Один и тот же код для любого источника: меняется только адрес метода.

# одинаковый вызов для всех источников каталога
def fetch(source, **params):
    r = requests.get(
        f"{API_BASE}/api/v3/{source}",
        params=params,
        headers={"Authorization": f"Bearer {TOKEN}"},
    ).json()
    # объект ещё собирается: статус, а не ошибка
    if r.get("status") in ("queued", "card-parsed"):
        return None
    return r["result"]

company = fetch("company", inn=inn)
cases = fetch("case", case=case_number)
finance = fetch("finance", inn=inn)

Возьмите готовый слой данных

Дадим тестовый доступ и базовый адрес: соберите прототип на реальных данных до всякого договора.

manager@kazna.tech