AAYMA
RU
Войти

seelect

Веб-приложение на Laravel/Livewire для подбора до трёх event-подрядчиков с объяснениями.

Доведённый продукт
Команда «nxt» 22💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: nxt
Кейс HackAlem.ai: Креативные индустрии — Firebird
Стадия: Доведённый продукт

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

Суть

Веб-приложение на Laravel/Livewire для подбора до трёх event-подрядчиков с объяснениями. Параметры вводятся формой или в свободном NLP-чате на казахском или русском через Alem qwen3-8. Приложение задеплоено онлайн.

Как устроено

Форма или чат → ContractorCatalog (CSV) → ContractorMatcher с жёсткими фильтрами (город, категория, свободная дата, бюджет, формат, язык, часы) → три исхода: matched / no_category / no_matches. При matched строятся PHP-объяснения либо опциональное AI-ранжирование (AiContractorRanker) с проверкой цитат. Принцип: «сначала правила, потом речь модели», и занятость отсекается до любой LLM. Без ключа чат работает пошагово на чипах.

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

  • жёсткие фильтры до LLM
  • LLM-ранжирование с проверкой цитат
  • LLM-парсинг свободного запроса
  • детерминированный порядок выдачи

Особенности

LLM физически не может «дорисовать» свободную дату, потому что календарь режется в PHP до вызова модели. Интерфейс по умолчанию на казахском. Демо-видео с озвучкой, субтитрами и сценами собрано программно (hyperframes, build-video.mjs, GSAP).

Стек

PHP 8.4 · Laravel 13 · Livewire 4 · Vite · GitHub Actions

Модели

Alem qwen3-8 (OpenAI-compatible)


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

README

README.md

seelect

Онлайн-демо: https://seelect.reesang.dev

Умный подбор event-подрядчиков для Казахстана.
Хакатон-задача #79-lite.

Стек: Laravel 13 · Livewire 4 · PHP 8.4 · Alem qwen3-8 (опционально)
Данные: 66 профилей в storage/app/private/contractors.csv


Питч в двух минутах

Проблема

Организатор свадьбы, той или корпоратива в Алматы/Астане уже видит каталог. Боль не в том, чтобы «найти ещё ссылок», а в том, чтобы выбрать:

  • кто свободен в нужную дату (календарь густой, особенно в декабре);
  • кто влезает в бюджет;
  • кто берёт этот формат и язык;
  • и почему система предлагает именно этих троих.

Сейчас это ручной перебор: открыть профиль → сверить дату → сверить цену → надеяться, что формулировка «подходит» правда.

Инсайт

На агрегаторах ценность не в длине выдачи, а в доверии к shortlist. Если у каждой карточки есть проверяемая причина — заказчик быстрее идёт в контакт.

Решение

seelect принимает параметры мероприятия и возвращает до 3 карточек с объяснением: бюджет, формат, язык, длительность или смысл описания. Без общих фраз вроде «отличный выбор для вашего события».

Занятые на дату не попадают в выдачу. Если вариантов меньше трёх или их нет — система честно говорит почему: нет категории в городе / все заняты / бюджет / формат.

Заказчик может заполнить форму или написать своими словами в ИИ-чате (Alem). Дальше тот же строгий подбор.

Почему это не «ещё один фильтр»

Обычный каталогseelect
Длинный списокДо 3 понятных вариантов
«Сортировка по цене»Объяснение, почему именно этот профиль
Пустой экранТри явных исхода словами
Только формаФорма + живой NLP-чат
AI «угадывает» занятостьPHP режет календарь до любой модели

Что показать на демо

  1. Плотная категория (Ведущий, 23.09) → 3 разные карточки, прочитать объяснения вслух.
  2. Сменить дату на 24.09 → выдача меняется (календарь).
  3. Редкая категория (Флорист) → меньше трёх + метка synthetic.
  4. Бюджет 1 ₸ → пустой исход с причиной.
  5. (Опционально) Чат одной фразой на казахском/русском.

Куда расти

Заявки подрядчику, кабинеты и живые календари, пакеты «ведущий + фото + зал», white-label для агрегаторов, другие города и MICE.


Как запустить локально

Требования: PHP 8.4+, Composer, Node.js + npm.
База данных не нужна.

git clone <repo-url>
cd hack-6c43f963-nxt
composer install
cp .env.example .env
php artisan key:generate
npm install
npm run build
php artisan config:clear
php artisan serve

Откройте http://127.0.0.1:8000.

Минимум в .env:

APP_NAME=seelect
SESSION_DRIVER=file
CACHE_STORE=file
QUEUE_CONNECTION=sync
CONTRACTOR_AI_ENABLED=false

Не запускайте composer run setup — скрипт шаблона тянет миграции, они здесь не нужны.

Опционально: ИИ (Alem)

CONTRACTOR_AI_ENABLED=true
CONTRACTOR_AI_PROVIDER=openai-compatible
CONTRACTOR_AI_MODEL=qwen3-8
OPENAI_COMPATIBLE_URL=https://llm.alem.ai/v1
OPENAI_COMPATIBLE_API_KEY=ваш_ключ
CONTRACTOR_CACHE_STORE=file

После изменений: php artisan config:clear.

Без ключа всё работает: фильтры и объяснения на PHP, чат — пошагово с чипами.


Что умеет продукт

  1. Форма или ИИ-чат: город, дата, формат, категория, бюджет (+ язык и часы).
  2. PHP-фильтр: город, категория, свободная дата, бюджет, формат, язык, часы.
  3. До 3 карточек: имя, фото, категория, город, цена «от», объяснение.
  4. Три исхода: подобрали / нет категории в городе / кандидаты есть, но условия не проходят.
  5. Профиль и заявка на запись (демо-контакт поверх рекомендации).

Интерфейс: kk / ru, шрифт IBM Plex Sans.


Соответствие заданию

ТребованиеСтатус
Вход: город, дата, тип, категория, бюджет; опц. часы и языкда
Выход: ≤3 карточки с объяснениемда
Занятый на дату не в выдачеда
Меньше трёх — показать сколько есть и почемуда
Детерминизм: тот же запрос → тот же порядокда
Три исхода: matched / no_category / no_matchesда
Без общих маркетинговых фразда
Ответ за разумное времяда
Разные даты → разная выдачада
Synthetic / imputed помеченыда

Сценарии для проверки

CONTRACTOR_AI_ENABLED=false, язык и часы пустые.

СценарийПараметрыОжидание
Плотная категорияАлматы, Ведущий, свадьба, 23.09.2026, 1 500 000 ₸3 карточки: Мицури Канроджи, Эмилия, Сон Гоку
Другая датато же, 24.09.2026Кики (1 карточка)
Редкая категорияАлматы, Флорист, свадьба, 23.09.2026, 500 000 ₸Тони Тони Чоппер + Тихиро Огино (синтетический)
Нет категорииЗарубежье, Флорист, …«Пока нет в каталоге»
Не проходят условияАлматы, Флорист, …, бюджет 1 ₸«Нужны другие условия» + цена выше бюджета

Повтор того же запроса даёт тот же порядок.


Как устроено

Форма / NLP-чат
    → ContractorCatalog (CSV)
    → ContractorMatcher (жёсткие фильтры)
         → no_category | no_matches | matched
         → при matched: PHP-объяснения или AI-ранжирование + проверка цитат
    → карточки → подробнее / заявка

Идея пайплайна для жюри: сначала правила, потом речь модели. LLM не может «дорисовать» свободную дату.

ФайлНазначение
resources/views/pages/⚡contractor-finder.blade.phpэкран: форма, витрина, чат, результаты
app/Services/ContractorCatalog.phpчтение CSV
app/Services/ContractorMatcher.phpфильтры, статусы, объяснения
app/Services/AiContractorRanker.phpопциональный AI-порядок
app/Services/AiContractorConversation.phpNLP-чат (Alem)
app/Services/ContractorChatGuide.phpчат без AI (чипы)
storage/app/private/contractors.csvкаталог
public/images/contractors/фото профилей

Тесты

php artisan test --compact tests/Feature/Services tests/Feature/Livewire

Весь набор: php artisan test --compact.


Ссылки

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

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

rawitjan 21Beibarys 4serikalisherbil 3Beibarys 1

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

  • 2026-09-23 17:59Update check-result.json in seelect demo to reflect new binary contentrawitjan
  • 2026-09-23 17:59Update seelect demo video generation to include scene IDs and transitionsrawitjan
  • 2026-09-23 17:57Remove outdated snapshot images from seelect demorawitjan
  • 2026-09-23 17:57Revise seelect demo HTML and storyboard for enhanced content and structurerawitjan
  • 2026-09-23 17:55Update snapshot images in seelect demo for enhanced visual contentrawitjan
  • 2026-09-23 17:50Enhance seelect demo with new audio source and UI adjustmentsrawitjan
  • 2026-09-23 17:48Add registry items to hyperframes.json for new component integrationrawitjan
  • 2026-09-23 17:40Enhance contractor finder with improved AI chat features and UI updatesrawitjan
Все коммиты (29)
  • 2026-09-23 17:34Refactor CSS and update README for improved branding and functionalityrawitjan
  • 2026-09-23 17:26Revise README.md to enhance project clarity and detailrawitjan
  • 2026-09-23 17:23Update branding and enhance contractor finder functionalityrawitjan
  • 2026-09-23 17:17Merge branch 'main' of https://github.com/BAITC-Hacks/hack-6c43f963-nxtrawitjan
  • 2026-09-23 17:14Update contractor finder with AI chat enhancements and UI improvementsrawitjan
  • 2026-09-23 16:50Enhance contractor finder with AI chat integration and showcase featurerawitjan
  • 2026-09-23 16:17Load finder design as a dedicated Vite stylesheet entryrawitjan
  • 2026-09-23 16:13Redesign contractor finder with editorial layout and responsive recommendationsrawitjan
  • 2026-09-23 15:51Add Kazakh-first localization with persistent Russian language switchrawitjan
  • 2026-09-23 15:40Build event contractor finder MVP with validated AI ranking and fallbackrawitjan
  • 2026-09-23 15:37Add contractor finder Livewire page and integration READMEserikalisherbil
  • 2026-09-23 15:30Add deterministic contractor recommendationsBeibarys
  • 2026-09-23 15:21Add normalized contractor CSV catalogBeibarys
  • 2026-09-23 15:15Add normalized CSV contractor catalog and testsrawitjan
  • 2026-09-23 14:47gghghhghgserikalisherbil
  • 2026-09-23 14:37Add additional text to README.mdBeibarys
  • 2026-09-23 14:34Add placeholder text to README.mdBeibarys
  • 2026-09-23 14:21Add README.md fileBeibarys
  • 2026-09-23 14:13Add console and web routes, implement settings and authentication testsrawitjan
  • 2026-09-23 14:05Обновить описание выбранного кейса в READMErawitjan
  • 2026-09-23 13:57Add selected case details to READMEserikalisherbil
Структура репозитория (336 файлов)
.codex/config.toml
.editorconfig
.env.example
.gitattributes
.github/dependabot.yml
.github/workflows/tests.yml
.gitignore
.htaccess
.npmrc
README.md
app/Actions/Fortify/CreateNewUser.php
app/Actions/Fortify/ResetUserPassword.php
app/Concerns/PasswordValidationRules.php
app/Concerns/ProfileValidationRules.php
app/Http/Controllers/Controller.php
app/Http/Middleware/SetLocale.php
app/Livewire/Actions/Logout.php
app/Models/User.php
app/Providers/AppServiceProvider.php
app/Providers/FortifyServiceProvider.php
app/Services/AiContractorChatParser.php
app/Services/AiContractorConversation.php
app/Services/AiContractorRanker.php
app/Services/ContractorCatalog.php
app/Services/ContractorChatGuide.php
app/Services/ContractorMatcher.php
app/Support/ShowcaseCatalog.php
artisan
bootstrap/app.php
bootstrap/cache/.gitignore
bootstrap/providers.php
composer.json
composer.lock
config/ai.php
config/app.php
config/auth.php
config/cache.php
config/contractors.php
config/database.php
config/filesystems.php
config/fortify.php
config/logging.php
config/mail.php
config/queue.php
config/services.php
config/session.php
database/.gitignore
database/factories/UserFactory.php
database/migrations/0001_01_01_000000_create_users_table.php
database/migrations/0001_01_01_000001_create_cache_table.php
database/migrations/0001_01_01_000002_create_jobs_table.php
database/migrations/2024_01_01_000000_create_passkeys_table.php
database/migrations/2025_08_14_170933_add_two_factor_columns_to_users_table.php
database/seeders/DatabaseSeeder.php
package-lock.json
package.json
phpstan.neon
phpunit.xml
pint.json
public/.htaccess
public/apple-touch-icon.png
public/favicon.ico
public/favicon.svg
public/fonts/inter-medium.ttf
public/fonts/inter-regular.ttf
public/fonts/space-grotesk-medium.ttf
public/images/contractors/portrait-01.jpg
public/images/contractors/portrait-02.jpg
public/images/contractors/portrait-03.jpg
public/images/contractors/portrait-04.jpg
public/images/contractors/portrait-05.jpg
public/images/contractors/portrait-06.jpg
public/images/contractors/portrait-07.jpg
public/images/contractors/portrait-08.jpg
public/images/contractors/portrait-09.jpg
public/images/contractors/portrait-10.jpg
public/images/firebird-glyph.svg
public/images/showcase/showcase-band.jpg
public/images/showcase/showcase-florist.jpg
public/images/showcase/showcase-hall.jpg
public/images/showcase/showcase-host.jpg
public/images/showcase/showcase-photo.jpg
public/images/showcase/showcase-wedding.jpg
public/index.php
public/robots.txt
resources/css/app.css
resources/css/finder.css
resources/js/app.js
resources/js/passkeys.js
resources/lang/kk.json
resources/lang/ru.json
resources/videos/seelect-demo/.hyperframes/caption-skin.html
resources/videos/seelect-demo/AGENTS.md
resources/videos/seelect-demo/BRIEF.md
resources/videos/seelect-demo/CLAUDE.md
resources/videos/seelect-demo/SCRIPT.md
resources/videos/seelect-demo/STORYBOARD.md
resources/videos/seelect-demo/assets/audio/concat.txt
resources/videos/seelect-demo/assets/audio/music-source.wav
resources/videos/seelect-demo/assets/audio/music.wav
resources/videos/seelect-demo/assets/audio/narration.wav
resources/videos/seelect-demo/assets/audio/raw-1.wav
resources/videos/seelect-demo/assets/audio/raw-10.wav
resources/videos/seelect-demo/assets/audio/raw-2.wav
resources/videos/seelect-demo/assets/audio/raw-3.wav
resources/videos/seelect-demo/assets/audio/raw-4.wav
resources/videos/seelect-demo/assets/audio/raw-5.wav
resources/videos/seelect-demo/assets/audio/raw-6.wav
resources/videos/seelect-demo/assets/audio/raw-7.wav
resources/videos/seelect-demo/assets/audio/raw-8.wav
resources/videos/seelect-demo/assets/audio/raw-9.wav
resources/videos/seelect-demo/assets/audio/voice-1.wav
resources/videos/seelect-demo/assets/audio/voice-10.wav
resources/videos/seelect-demo/assets/audio/voice-2.wav
resources/videos/seelect-demo/assets/audio/voice-3.wav
resources/videos/seelect-demo/assets/audio/voice-4.wav
resources/videos/seelect-demo/assets/audio/voice-5.wav
resources/videos/seelect-demo/assets/audio/voice-6.wav
resources/videos/seelect-demo/assets/audio/voice-7.wav
resources/videos/seelect-demo/assets/audio/voice-8.wav
resources/videos/seelect-demo/assets/audio/voice-9.wav
resources/videos/seelect-demo/assets/brand-mark.svg
resources/videos/seelect-demo/assets/chat.png
resources/videos/seelect-demo/assets/date.png
resources/videos/seelect-demo/assets/empty.png
resources/videos/seelect-demo/assets/fonts/IBMPlexSans-Regular.woff2
resources/videos/seelect-demo/assets/fonts/IBMPlexSans.ttf
resources/videos/seelect-demo/assets/form.png
resources/videos/seelect-demo/assets/gsap.min.js
resources/videos/seelect-demo/assets/hero.png
resources/videos/seelect-demo/assets/media-manifest.json
resources/videos/seelect-demo/assets/profile.png
resources/videos/seelect-demo/assets/results.png
resources/videos/seelect-demo/assets/video.css
resources/videos/seelect-demo/assets/wedding.jpg
resources/videos/seelect-demo/audio-sources.json
resources/videos/seelect-demo/build-audio.mjs
resources/videos/seelect-demo/build-video.mjs
resources/videos/seelect-demo/captions.json
resources/videos/seelect-demo/captions.ru.srt
resources/videos/seelect-demo/captions.ru.vtt
resources/videos/seelect-demo/capture/.cursorrules
resources/videos/seelect-demo/capture/AGENTS.md
resources/videos/seelect-demo/capture/CLAUDE.md
resources/videos/seelect-demo/capture/assets/fonts/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxQKYbSB4ZhRNU.woff2
resources/videos/seelect-demo/capture/assets/fonts/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxRKYbSB4ZhRNU.woff2
resources/videos/seelect-demo/capture/assets/fonts/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxTKYbSB4ZhRNU.woff2
resources/videos/seelect-demo/capture/assets/fonts/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxaKYbSB4ZhRNU.woff2
resources/videos/seelect-demo/capture/assets/fonts/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxdKYbSB4ZhRNU.woff2
resources/videos/seelect-demo/capture/assets/fonts/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxeKYbSB4Zh.woff2
resources/videos/seelect-demo/capture/assets/svgs/contact-sheet.jpg
resources/videos/seelect-demo/capture/assets/svgs/logo-aa7a6bc3.svg
resources/videos/seelect-demo/capture/assets/svgs/logo-db703159.svg
resources/videos/seelect-demo/capture/assets/svgs/svg-cb8a76e6.svg
resources/videos/seelect-demo/capture/assets/svgs/svg-df7721a6.svg
resources/videos/seelect-demo/capture/extracted/animations.json
resources/videos/seelect-demo/capture/extracted/asset-descriptions.md
resources/videos/seelect-demo/capture/extracted/design-styles.json
resources/videos/seelect-demo/capture/extracted/fonts-manifest.json
resources/videos/seelect-demo/capture/extracted/icons-manifest.json
resources/videos/seelect-demo/capture/extracted/page.html
resources/videos/seelect-demo/capture/extracted/response.json
resources/videos/seelect-demo/capture/extracted/tokens.json
resources/videos/seelect-demo/capture/extracted/visible-text.txt
resources/videos/seelect-demo/capture/meta.json
resources/videos/seelect-demo/capture/screenshots/contact-sheet.jpg
resources/videos/seelect-demo/capture/screenshots/full-page.png
resources/videos/seelect-demo/capture/screenshots/scroll-000.png
resources/videos/seelect-demo/capture/screenshots/scroll-023.png
resources/videos/seelect-demo/capture/screenshots/scroll-047.png
resources/videos/seelect-demo/capture/screenshots/scroll-070.png
resources/videos/seelect-demo/capture/screenshots/scroll-093.png
resources/videos/seelect-demo/capture/screenshots/scroll-100.png
resources/videos/seelect-demo/capture/states/chat/gsap.min.js
resources/videos/seelect-demo/capture/states/chat/index.html
resources/videos/seelect-demo/capture/states/chat/snapshots/contact-sheet.jpg
resources/videos/seelect-demo/capture/states/chat/snapshots/frame-00-at-1s.png
resources/videos/seelect-demo/capture/states/date/gsap.min.js
resources/videos/seelect-demo/capture/states/date/index.html
resources/videos/seelect-demo/capture/states/date/snapshots/contact-sheet.jpg
resources/videos/seelect-demo/capture/states/date/snapshots/frame-00-at-1s.png
resources/videos/seelect-demo/capture/states/empty/gsap.min.js
resources/videos/seelect-demo/capture/states/empty/index.html
resources/videos/seelect-demo/capture/states/empty/snapshots/contact-sheet.jpg
resources/videos/seelect-demo/capture/states/empty/snapshots/frame-00-at-1s.png
resources/videos/seelect-demo/capture/states/form/gsap.min.js
resources/videos/seelect-demo/capture/states/form/index.html
resources/videos/seelect-demo/capture/states/form/snapshots/contact-sheet.jpg
resources/videos/seelect-demo/capture/states/form/snapshots/frame-00-at-1s.png
resources/videos/seelect-demo/capture/states/hero/gsap.min.js
resources/videos/seelect-demo/capture/states/hero/index.html
resources/videos/seelect-demo/capture/states/hero/snapshots/contact-sheet.jpg
resources/videos/seelect-demo/capture/states/hero/snapshots/frame-00-at-1s.png
resources/videos/seelect-demo/capture/states/profile/gsap.min.js
resources/videos/seelect-demo/capture/states/profile/index.html
resources/videos/seelect-demo/capture/states/profile/snapshots/contact-sheet.jpg
resources/videos/seelect-demo/capture/states/profile/snapshots/frame-00-at-1s.png
resources/videos/seelect-demo/capture/states/results/gsap.min.js
resources/videos/seelect-demo/capture/states/results/index.html
resources/videos/seelect-demo/capture/states/results/snapshots/contact-sheet.jpg
resources/videos/seelect-demo/capture/states/results/snapshots/frame-00-at-1s.png
resources/videos/seelect-demo/catalog-motion.json
resources/videos/seelect-demo/check-result.json
resources/videos/seelect-demo/compositions/components/line-by-line-slide.html
resources/videos/seelect-demo/compositions/frames/01.html
resources/videos/seelect-demo/compositions/frames/02.html
resources/videos/seelect-demo/compositions/frames/03.html
resources/videos/seelect-demo/compositions/frames/04.html
resources/videos/seelect-demo/compositions/frames/05.html
resources/videos/seelect-demo/compositions/frames/06.html
resources/videos/seelect-demo/compositions/frames/07.html
resources/videos/seelect-demo/compositions/frames/08.html
resources/videos/seelect-demo/compositions/frames/09.html
resources/videos/seelect-demo/compositions/frames/10.html
resources/videos/seelect-demo/export-screens.php
resources/videos/seelect-demo/frame.md
resources/videos/seelect-demo/hyperframes.json
resources/videos/seelect-demo/hyperframes.lock.json
resources/videos/seelect-demo/index.html
resources/videos/seelect-demo/lint-result.json
resources/videos/seelect-demo/meta.json
resources/videos/seelect-demo/package.json
resources/videos/seelect-demo/scenes.json
resources/videos/seelect-demo/snapshots/contact-sheet-1.jpg
resources/videos/seelect-demo/snapshots/contact-sheet-2.jpg
resources/videos/seelect-demo/snapshots/final/contact-sheet-1.jpg
resources/videos/seelect-demo/snapshots/final/contact-sheet-2.jpg
resources/videos/seelect-demo/snapshots/final/contact-sheet-3.jpg
resources/videos/seelect-demo/snapshots/final/frame-00-at-7.9s.png
resources/videos/seelect-demo/snapshots/final/frame-01-at-8.2s.png
resources/videos/seelect-demo/snapshots/final/frame-02-at-13.9s.png
resources/videos/seelect-demo/snapshots/final/frame-03-at-14.2s.png
resources/videos/seelect-demo/snapshots/final/frame-04-at-23.9s.png
resources/videos/seelect-demo/snapshots/final/frame-05-at-24.2s.png
resources/videos/seelect-demo/snapshots/final/frame-06-at-33.9s.png
resources/videos/seelect-demo/snapshots/final/frame-07-at-34.2s.png
resources/videos/seelect-demo/snapshots/final/frame-08-at-41.9s.png
resources/videos/seelect-demo/snapshots/final/frame-09-at-42.2s.png
resources/videos/seelect-demo/snapshots/final/frame-10-at-48.9s.png
resources/videos/seelect-demo/snapshots/final/frame-11-at-49.2s.png
resources/videos/seelect-demo/snapshots/final/frame-12-at-59.9s.png
resources/videos/seelect-demo/snapshots/final/frame-13-at-60.2s.png
resources/videos/seelect-demo/snapshots/final/frame-14-at-68.9s.png
resources/videos/seelect-demo/snapshots/final/frame-15-at-69.2s.png
resources/videos/seelect-demo/snapshots/final/frame-16-at-76.9s.png
resources/videos/seelect-demo/snapshots/final/frame-17-at-77.2s.png
resources/videos/seelect-demo/snapshots/final/frame-18-at-12.5s.png
resources/videos/seelect-demo/snapshots/final/frame-19-at-31.5s.png
resources/videos/seelect-demo/snapshots/final/frame-20-at-67.5s.png
resources/videos/seelect-demo/snapshots/final/frame-21-at-83s.png
resources/videos/seelect-demo/snapshots/frame-00-at-4s.png
resources/videos/seelect-demo/snapshots/frame-01-at-11s.png
resources/videos/seelect-demo/snapshots/frame-02-at-19s.png
resources/videos/seelect-demo/snapshots/frame-03-at-29s.png
resources/videos/seelect-demo/snapshots/frame-04-at-38s.png
resources/videos/seelect-demo/snapshots/frame-05-at-45.5s.png
resources/videos/seelect-demo/snapshots/frame-06-at-54s.png
resources/videos/seelect-demo/snapshots/frame-07-at-64.5s.png
resources/videos/seelect-demo/snapshots/frame-08-at-73s.png
resources/videos/seelect-demo/snapshots/frame-09-at-82s.png
resources/views/components/app-logo-icon.blade.php
resources/views/components/app-logo.blade.php
resources/views/components/auth-header.blade.php
resources/views/components/auth-session-status.blade.php
resources/views/components/desktop-user-menu.blade.php
resources/views/components/passkey-registration.blade.php
resources/views/components/passkey-verify.blade.php
resources/views/components/placeholder-pattern.blade.php
resources/views/dashboard.blade.php
resources/views/flux/icon/book-open-text.blade.php
resources/views/flux/icon/chevrons-up-down.blade.php
resources/views/flux/icon/folder-git-2.blade.php
resources/views/flux/icon/layout-grid.blade.php
resources/views/flux/navlist/group.blade.php
resources/views/layouts/app.blade.php
resources/views/layouts/app/header.blade.php
resources/views/layouts/app/sidebar.blade.php
resources/views/layouts/auth.blade.php
resources/views/layouts/auth/card.blade.php
resources/views/layouts/auth/simple.blade.php
resources/views/layouts/auth/split.blade.php
resources/views/layouts/finder.blade.php
resources/views/pages/auth/confirm-password.blade.php
resources/views/pages/auth/forgot-password.blade.php
resources/views/pages/auth/login.blade.php
resources/views/pages/auth/register.blade.php
resources/views/pages/auth/reset-password.blade.php
resources/views/pages/auth/two-factor-challenge.blade.php
resources/views/pages/auth/verify-email.blade.php
resources/views/pages/settings/layout.blade.php
resources/views/pages/settings/two-factor/⚡recovery-codes.blade.php
resources/views/pages/settings/⚡appearance.blade.php
resources/views/pages/settings/⚡delete-user-form.blade.php
resources/views/pages/settings/⚡delete-user-modal.blade.php
resources/views/pages/settings/⚡profile.blade.php
resources/views/pages/settings/⚡security.blade.php
resources/views/pages/settings/⚡two-factor-setup-modal.blade.php
resources/views/pages/⚡contractor-finder.blade.php
resources/views/partials/head.blade.php
resources/views/partials/settings-heading.blade.php
resources/views/welcome.blade.php
routes/console.php
routes/settings.php
routes/web.php
skills-lock.json
storage/app/.gitignore
storage/app/private/.gitignore
storage/app/private/contractors.csv
storage/app/public/.gitignore
storage/framework/.gitignore
storage/framework/cache/.gitignore
storage/framework/cache/data/.gitignore
storage/framework/sessions/.gitignore
storage/framework/testing/.gitignore
storage/framework/views/.gitignore
storage/logs/.gitignore
tests/Feature/Auth/AuthenticationTest.php
tests/Feature/Auth/EmailVerificationTest.php
tests/Feature/Auth/PasswordConfirmationTest.php
tests/Feature/Auth/PasswordResetTest.php
tests/Feature/Auth/RegistrationTest.php
tests/Feature/Auth/TwoFactorChallengeTest.php
tests/Feature/DashboardTest.php
tests/Feature/ExampleTest.php
tests/Feature/Livewire/ContractorChatTest.php
tests/Feature/Livewire/ContractorFinderLocaleTest.php
tests/Feature/Livewire/ContractorFinderTest.php
tests/Feature/Services/AiContractorRankerTest.php
tests/Feature/Services/ContractorCatalogTest.php
tests/Feature/Services/ContractorMatcherTest.php
tests/Feature/Settings/ProfileUpdateTest.php
tests/Feature/Settings/SecurityTest.php
tests/Pest.php
tests/TestCase.php
tests/Unit/ExampleTest.php
vite.config.js
Ветки (3)

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

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

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