Четыре года я была волонтёром в приюте для животных. Это не про красивые фотографии с пушистыми котиками - это про ежедневный уход, уборку, лечение, адаптацию и работу с людьми. Самое тяжёлое - видеть стресс у «вернувшихся» животных. Ещё вчера у них был человек, дом, надежда, а сегодня снова клетка, шум и тревожное ожидание. Некоторые так и не находят семью. Самое страшное для животного - прожить жизнь и так и не получить собственного дома хотя бы на один день.
У меня дома живут четыре кота из приюта. Каждый из них когда-то просто подошёл ко мне и больше не ушёл - их настойчивость в любви и доверии оказались сильнее любых рациональных аргументов. Этот опыт сильно повлиял на моё восприятие проблемы: животные готовы доверять человеку гораздо быстрее, чем человек готов взять на себя ответственность.
Приюты делают колоссальную работу. Их главная задача - спасать, лечить, кормить и социализировать животных. У них нет бюджета на профессиональных фотографов, маркетинг или сложные цифровые системы. Часто животное представлено одной фотографией, сделанной на телефон, а у некоторых фото нет вовсе. В результате человек выбирает буквально «по картинке», не понимая характера, уровня активности и реальных потребностей конкретного животного. Выбор становится эмоциональным и импульсивным.
Когда животное возвращают, чаще всего звучат одни и те же фразы: «Мы не ожидали, что это создаст проблемы, у нас нет времени на их решение», «Период адаптации нам не подходит, нам нужно чтобы он/она сразу ходила в лоток/ласкалась/точила когти только об когтеточку». Иногда животных возвращают официально, иногда просто оставляют в коробке у дверей приюта, а иногда избавляются от них другими способами. При этом вины приютов в этой ситуации нет - у них физически нет ресурсов, чтобы проводить глубокую оценку каждого потенциального владельца. Именно тогда у меня возник вопрос: можно ли технологически снизить риск таких ситуаций? Можно ли помочь человеку сделать более осознанный выбор ещё до встречи с животным?
Так появился проект «Лапка в Лапку» - система интеллектуального подбора животных из приютов и оценки риска передачи в новую семью.
В большинстве приютов анкеты обрабатываются вручную. Волонтёр читает ответы, интуитивно оценивает человека и принимает решение. Такой подход работает, пока заявок немного, но с ростом количества животных и потенциальных владельцев субъективность начинает играть против системы. Один и тот же ответ разные люди интерпретируют по-разному, а противоречия в тексте не всегда очевидны при поверхностном чтении.
Есть ещё одна проблема, о которой редко говорят вслух, — спам и нецелевые заявки. Приюты получают не только осознанные анкеты от людей, готовых взять животное в семью, но и поток случайных сообщений: от импульсивных «хочу щенка прямо сейчас» до откровенных провокаций, неадекватных вопросов или массовых рассылок. Без фильтрации даже небольшой процент спама превращается в значительную нагрузку.
Анкета - это свободный текст. В нём могут скрываться нереалистичные ожидания, импульсивные формулировки и логические несоответствия. Человеку сложно системно анализировать десятки таких факторов одновременно. Мы решили попробовать формализовать этот процесс и дополнить волонтёрскую экспертизу машинной оценкой.
Текущая версия системы - это MVP, построенный вокруг мобильного приложения PetMatch App и backend на FastAPI. Приложение отвечает за пользовательский сценарий: поиск животных, заполнение анкеты, получение рекомендаций и запись на встречу. Backend управляет данными, взаимодействует с моделью скоринга и возвращает результат в приложение.
Данные о животных мы собираем через собственный парсер групп приютов во ВКонтакте. Описания крайне разнородны: свободный текст, эмоциональные формулировки, отсутствие структуры. Мы приводим их к нормализованному виду, извлекаем характеристики и сохраняем в базе. Изображения животных хранятся в S3-совместимом хранилище в Yandex Cloud.
Ключевой компонент MVP - модуль оценки риска, реализованный через API GigaChat. Мы сознательно начали с LLM, а не с собственной модели: это позволило быстро проверить гипотезу без создания размеченного датасета и сложной ML-инфраструктуры.
Пользователь заполняет анкету. Модель анализирует текст и возвращает структурированный результат, который преобразуется в числовой риск-скор. Это не «вердикт», а индикатор вероятности того, что передача животного может привести к его возврату.
Во-первых, выявляются логические противоречия. Например, человек пишет, что готов уделять животному много времени, но одновременно описывает рабочий график, при котором его почти не бывает дома. Такие несоответствия увеличивают итоговый скор.
Во-вторых, оценивается эмоциональный фон текста. Импульсивные формулировки, чрезмерная категоричность и признаки неосознанной мотивации влияют на результат. Мы не пытаемся «диагностировать» человека, но фиксируем поведенческие паттерны, которые статистически могут коррелировать с возвратами.
В-третьих, анализируется соответствие ожиданий пользователя реальным характеристикам выбранного животного. Если человек хочет спокойного и малоактивного питомца, но выбирает молодую энергичную собаку с высокой потребностью в нагрузке, система сигнализирует о потенциальном несоответствии и может предложить альтернативные варианты.
Дополнительный поведенческий сигнал - глубина и продолжительность взаимодействия с приложением. Более вдумчивое заполнение анкеты и изучение карточек животных косвенно указывает на осознанность выбора.
Упрощённо логика скоринга выглядит так:
RiskScore = w1 * contradiction_score + w2 * emotional_instability + w3 * expectation_mismatch - w4 * experience_factor - w5 * engagement_duration
Весовые коэффициенты калибруются эмпирически и будут уточняться по мере накопления данных.
Главная причина - отсутствие размеченного датасета. Исторические анкеты в приютах существуют, но они не структурированы для обучения и не связаны напрямую с формальными исходами. Кроме того, проект социальный и не генерирует выручку, поэтому ресурсы на полноценную ML-разработку ограничены.
Мы сознательно минимизировали сбор данных в приложении. Мы не храним персональные данные пользователей и не публикуем адреса и контакты приютов. Возможность встречи появляется только после прохождения анкеты и предварительной проверки. Это снижает нагрузку на приюты и защищает их от недобросовестных визитов.
Пока мы анализируем только текст и поведенческие сигналы внутри приложения. В перспективе архитектура допускает расширение на голосовые или видеоинтервью, но это отдельный этический и технический вызов.
Использование GigaChat позволило быстро собрать рабочий прототип и начать накопление анонимизированных данных. В дальнейшем мы планируем перейти к дообучению собственной модели риска, чтобы снизить зависимость от внешнего API и повысить интерпретируемость решений.
Мы не ориентируемся на количество скачиваний или регистраций. Для нас ключевые показатели - это количество успешных «приёмов в семью» в месяц, конверсия от просмотра карточки до реальной встречи и доля возвратов через 30 и 90 дней. Именно снижение возвратов является главным индикатором того, что скоринг действительно помогает.
Также мы отслеживаем количество активных приютов и пользователей, чтобы понимать масштаб системы и нагрузку на инфраструктуру.
Самая неожиданная сложность оказалась не технической. Проект социальный и не приносит дохода, но требует инфраструктуры, времени и постоянной работы с приютами. Поддержка базы из более чем 500 приютов - это не только разработка, но и организационная координация, подача заявок на гранты и поиск партнёров.
Инженерно задачи решаемы. Гораздо сложнее обеспечить устойчивость и развитие без коммерческой модели.
Следующий шаг - переход от LLM-MVP к собственной модели риска, обученной на накопленных анонимизированных данных и фактических исходах (успешный приём или возврат). Мы хотим повысить точность, снизить количество ложноположительных срабатываний и сделать скор более интерпретируемым.
Долгосрочная цель - международное масштабирование, чтобы человек мог воспользоваться интеллектуальным подбором животного в любой стране.
Проект находится в активной доработке. Буду благодарна за критику и советы: какие признаки Вы бы добавили в risk-модель? Как бы Вы строили систему калибровки скоринга? Какие архитектурные решения помогли бы сделать такую ML-систему устойчивой?
Также мы будем рады сотрудничеству с Вами, если Вы готовы помогать на волонтерской основе не менее 8 часов в неделю. Любой вклад - будь то разработка, ML, анализ данных или работа с приютами - ценен и помогает нам быстрее приблизиться к цели: чтобы как можно больше животных находили своих людей, а люди - своих питомцев.
Источник


