AAYMA
RU
Войти

irikteu.

Веб-приложение, которое по 7 параметрам мероприятия подбирает до трёх специалистов или площадок, показывает «почему подходит» с дословной цитатой и…

Рабочий MVP
Команда «Works Somehow» 7💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: Works Somehow
Кейс HackAlem.ai: Креативные индустрии — Firebird
Стадия: Рабочий MVP

Задача кейса: «#79-lite»: подобрать до 3 подрядчиков для мероприятия и объяснить выбор

Суть

Веб-приложение, которое по 7 параметрам мероприятия подбирает до трёх специалистов или площадок, показывает «почему подходит» с дословной цитатой и причины отсева.

Как устроено

Запрос → проверка ввода → город+категория → 5 фильтров (дата, бюджет, тип события, язык, длительность) → детерминированная сортировка → топ-3 с объяснениями и цитатами из профиля. Логика реализована на JS (podbor/js/core/matcher.js), есть Python-версия event-match (matching.py, server.py). Дополнительно: сравнение подборок на разные даты, проверка повторяемости, 5 демо-сценариев.

Ключевые решения

  • hard filtering
  • deterministic sorting
  • evidence quotes
  • сравнение дат

Особенности

Кнопки «Сравнить с другой датой» и «Проверить повторяемость» показывают, как занятость влияет на результат и что выдача детерминирована. Есть казахская версия интерфейса (index-kk.html) и внимание к доступности (aria-live, prefers-reduced-motion).

Стек

JavaScript · HTML · CSS · Python


Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-57125816-works-somehow.

README

README.md

irikteu. — подбор специалистов и площадок для мероприятий

Выбери параметры → получи до 3 подходящих вариантов → пойми, почему они подходят.

Веб-приложение, которое по параметрам мероприятия подбирает до трёх специалистов или площадок из каталога и объясняет каждый выбор фактами из исходных данных.

HackAlem 2026


Проблема

Организатор свадьбы, тоя или корпоратива тратит часы на поиск ведущего, фотографа или зала. Он листает десятки профилей и только потом узнаёт, что специалист занят, выходит за бюджет или не работает с таким форматом. Обычный каталог показывает длинный список, но не объясняет, почему вариант подходит и почему другие отсеяны.

Решение

irikteu. превращает каталог в короткий и понятный ответ:

  • показывает не больше трёх подходящих профилей;
  • к каждому даёт объяснение «Почему подходит»;
  • прикладывает дословную цитату из каталога, чтобы любое утверждение можно было проверить;
  • для отсеянных кандидатов показывает точную причину отказа.

Цены, даты и характеристики берутся только из каталога. Приложение ничего не придумывает.


Основные возможности

Подбор по 7 параметрам

ПараметрОбязательный
Городда
Дата мероприятия (23.09.2026 – 31.12.2026)да
Тип мероприятияда
Категория специалиста или площадкида
Бюджет, тенгеда
Язык работынет
Продолжительность, часынет

Карточка профиля

Каждая из трёх карточек содержит:

  • имя (анонимизированное) и категорию;
  • город;
  • начальную цену в формате «От … тенге», а не итоговую стоимость;
  • блок «Почему подходит»: особенность из описания профиля и все пройденные проверки;
  • языки работы и лимит часов на площадке;
  • признаки происхождения данных: synthetic, city_imputed, price_imputed;
  • подтверждение из каталога: дословную цитату из описания профиля.

Прозрачные причины отказа

Под результатами показано, сколько кандидатов не прошло отбор и почему:

  • заняты в выбранную дату;
  • начальная цена выше бюджета;
  • не принимают этот тип события;
  • выбранный язык не указан;
  • превышен лимит длительности.

Можно раскрыть полный список исключённых профилей с причиной для каждого. Если в городе вообще нет выбранной категории, приложение прямо об этом говорит и объясняет, что изменение даты или бюджета здесь не поможет.

Сравнение дат

Одной кнопкой можно сравнить подборку на выбранную дату и на другой день. Все остальные параметры остаются прежними, поэтому сразу видно, как занятость влияет на результат.

Проверка повторяемости

Кнопка «Проверить повторяемость» заново выполняет тот же запрос и подтверждает, что профили, их порядок и объяснения полностью совпадают.

Готовые сценарии для демонстрации

Пять кнопок «Проверьте на примере» показывают все типы ответа системы (город Алматы, свадьба, 23.09.2026 и бюджет 2 000 000 тенге, если не указано иное):

СценарийЗапросЧто покажет система
Популярная категорияВедущий10 кандидатов, 4 прошли, показаны 3 самых доступных
Редкая услугаФлорист, 12 ч2 кандидата, оба подходят
Все занятыФлорист, 12 ч, 25.09.20260 результатов: оба заняты в эту дату
Категории нетДекоратор, Астанав городе нет такой категории
Маленький бюджетВедущий, 10 000 тенге0 результатов: у всех 10 цена выше бюджета

Как работает алгоритм

Запрос → проверка ввода → город + категория → 5 фильтров → сортировка → топ-3 + объяснения Качество кода:

  • любой текст выводится через textContent, что защищает от XSS;
  • для доступности используются aria-live, aria-busy, aria-expanded, семантические теги и видимый фокус;
  • при настройке prefers-reduced-motion анимации отключаются;
  • вёрстка адаптивна от телефона до широкого экрана.

Сценарий показа (2 минуты)

  1. Нажать «Популярная категория». Система находит 10 ведущих в Алматы, 4 прошли все условия, показаны 3 самых доступных. Открыть «Почему подходит» и цитату из каталога.
  2. Нажать «Сравнить с другой датой» и выбрать 24.09.2026. Подходящих становится 2 вместо 4, потому что часть ведущих занята.
  3. Нажать «Все заняты». Результатов 0, и система объясняет причину: оба флориста заняты 25.09.
  4. Нажать «Маленький бюджет». Все 10 кандидатов отсеяны, причина указана для каждого.
  5. Нажать «Проверить повторяемость». Результат совпадает полностью.

Ограничения

Это локальный MVP. Сейчас в нём нет регистрации, бронирования, оплаты, переписки со специалистом и подключения к внешней базе данных. Для задачи хакатона это не нужно: цель проекта — показать быстрый и прозрачный подбор из заданного каталога.

  • Указана начальная цена, а не итоговая стоимость.
  • Если занятость не отмечена, это ещё не подтверждённое бронирование.

Итог

irikteu. превращает длинный каталог в три понятных варианта. У каждого есть объяснение, подтверждение из данных и причины, по которым остальные кандидаты не подошли. Алгоритм детерминированный, не зависит от внешних API и готов к демонстрации без установки.

Звёзды
⭐ 0
Форки
0
Язык
HTML
Последний push
в прошлом месяце
Коммиты
9
Авторы
4
Файлы
33
Ветки
1

Авторы коммитов

Kyrmyzy 3Ayaulym 2Гүлсезім 2Гукаш 2

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

  • 2026-09-23 17:58Обновить README с описанием приложения и его функцийAyaulym
  • 2026-09-23 17:57Revise README for improved project descriptionAyaulym
  • 2026-09-23 17:53logic: іріктеу логикасы, интерфейс және тесттерГүлсезім
  • 2026-09-23 17:51Fix formatting in README.md for consistencyKyrmyzy
  • 2026-09-23 17:45README.md for project overview and structureKyrmyzy
  • 2026-09-23 17:40design: бет, стильдер және анимацияларГүлсезім
  • 2026-09-23 16:08ReadMeKyrmyzy
  • 2026-09-23 15:17README конфликтісі шешілдіГукаш
Все коммиты (9)
  • 2026-09-23 15:11Өз файлдарымды қостымГукаш
Структура репозитория (33 файлов)
.gitignore
HackAlem_AI_Хакатон_задача_умный_подбор_подрядчиков.docx
README.md
event-match/.gitignore
event-match/catalog.py
event-match/examples.py
event-match/matching.py
event-match/profile_facts.json
event-match/server.py
event-match/tests/test_http.py
event-match/tests/test_matching.py
hackathon dataset anonymized .csv
hackathon dataset preview.html
index-kk.html
index.before-fix.html.bak
index.html
podbor/README.md
podbor/css/app-refine.css
podbor/css/app.css
podbor/css/theme-images.css
podbor/css/theme.css
podbor/data/catalog.js
podbor/index.html
podbor/js/app.js
podbor/js/core/format.js
podbor/js/core/matcher.js
podbor/js/core/validation.js
podbor/js/fx/effects.js
podbor/js/ui/compare-view.js
podbor/js/ui/demos.js
podbor/js/ui/dom.js
podbor/js/ui/results-view.js
podbor/tests/matcher.test.js

Обсуждение 0 комментариев

Войдите, чтобы комментировать

Пока нет комментариев — будьте первым.