TalentBridge Lebanon
TalentBridge Lebanon
ИИ-агент для подбора карьеры для ливанских выпускников компьютерных наук. Загрузите резюме, и LLM-агент анализирует профиль, извлекает вакансии из встроенного корпуса вакансий по семантическому сходству, вычисляет детерминированный разрыв навыков для каждой вакансии, переранжирует с учётом ливанских и уровневых сигналов и составляет персонализированный план повышения квалификации на 4 недели — от начала до конца за ~15–20 секунд.
Живое демо: https://talent-bridge-lebanon.lovable.app
Результаты (эталонный запуск: 2026-08-20 15:51)
Метрика | Значение |
Среднее Precision@5 | 0,84 по 15 размеченным резюме |
Этап поиска | 467 мс на резюме (анализ резюме + эмбеддинг + векторный поиск) |
Полный запуск агента | ~15–20 секунд от начала до конца, включая шаги LLM |
Покрытие индекса | 180 из 180 вакансий встроено |
Зачем этот проект
Ливанские выпускники CS подают заявки вслепую: доски вакансий основаны на ключевых словах, не понимают переносимых навыков и не говорят, почему вас отклонили или что учить дальше. TalentBridge замыкает этот цикл с помощью агента с дополненной генерацией (RAG), который измерим — каждое изменение ранжирования проверяется на размеченном эталоне из 15 резюме с встроенным механизмом Precision@5.
Related MCP server: bach-jsearch
Набор данных
Корпус из 180 вакансий и размеченные эталонные резюме являются синтетическими, созданными с помощью ИИ. Названия должностей, уровни старшинства и комбинации навыков были смоделированы на основе реальных вакансий из Ливана и региона, чтобы распределение отражало реальный рынок, при этом названия компаний вымышлены. Данные были созданы по двум причинам: не существует публичного набора данных о ливанских вакансиях, который можно было бы использовать, а эталон требует правильной метки трека для каждой вакансии, которой нет у собранных объявлений.
Прямое ограничение заключается в том, что результаты демонстрируются на чистых, хорошо структурированных записях. Производительность на реальных объявлениях, которые более хаотичны и часто неполны, не измерялась.
Возможности
Агентный конвейер —
parse_cv→search_jobs→reflect_on_results→analyze_gap→build_plan, детерминированно оркестрируется с повторной попыткой на основе рефлексии.Семантический поиск — эмбеддинги 384 измерений по 180 вакансиям, точный косинусный поиск в Postgres (
pgvector).Детерминированная, защищённая от галлюцинаций оценка — совпадающие/отсутствующие навыки и готовность вычисляются в коде из
required_skillsбазы данных, а не моделью. Повествовательный текст выводится из этих точных наборов, поэтому текст никогда не может противоречить спискам.Переранжирование с приоритетом Ливана — итоговый балл =
0.35·семантика + 0.20·готовность + 0.25·местоположение + 0.15·старшинство + 0.05·домен, с многоуровневым соответствием местоположения (ливанский город 1.0 → удалённо 0.95 → MENA 0.75) и штрафом за завышенный уровень.Встроенная оценка —
/evalзапускает весь набор размеченных резюме и сообщает среднее Precision@5 и среднюю задержку поиска, с историей запусков в рамках сессии.Анализ PDF в браузере —
pdfjs-distизвлекает текст резюме на стороне клиента; ничего не сохраняется до начала сопоставления.MCP-сервер —
/mcpпредоставляетsearch_jobs,get_job,assess_fitиjob_index_stats, так что любой MCP-клиент (Claude, Cursor, …) может запрашивать корпус.Загружаемый отчёт — страница результатов экспортирует отчёт в Markdown, идентичный тому, что на экране.
Архитектура
Browser (React 19 + TanStack Start)
│ PDF text extraction (pdfjs-dist)
▼
Server functions (createServerFn, Cloudflare Workers runtime)
├─ parse_cv LLM → profile, skills (+inferred, cited), domains
├─ years/level code → merged work periods, Intern/Junior/Mid
├─ search_jobs embed query → match_jobs_vector() over pgvector
├─ reflect_on_results LLM → topical relevance check, max 1 retry (pooled results)
├─ analyze_gap code → matched/missing skills, readiness %
├─ rerank code → weighted blend (semantic/readiness/location/seniority/domain)
└─ build_plan LLM → 4-week plan grounded in the missing skills
▼
Postgres (Supabase + pgvector): jobs, candidates, agent_runs, eval_cvs, eval_resultsТехнологический стек
Слой | Выбор |
Фреймворк | TanStack Start v1 (React 19, Vite 7, SSR на Cloudflare Workers) |
Стили | Tailwind CSS v4 + shadcn/ui |
База данных | Postgres с |
LLM |
|
Эмбеддинги |
|
Взаимодействие агента | Сервер Model Context Protocol на |
Структура репозитория
src/routes/ file-based routes: / (run agent), /results, /admin, /eval, /mcp
src/lib/agent.server.ts the agent: parsing, retrieval, gap analysis, re-ranking, planning
src/lib/agent.config.ts single source of truth for models and prompt guardrails
src/lib/skill-match.ts canonical skill normalisation + shared matched/missing logic
src/lib/eval.server.ts Precision@5 benchmark harness across the labelled CV set
src/lib/mcp/ MCP server and its four tools
supabase/migrations/ full schema: tables, RLS, grants, match_jobs_vector()
data/ exported datasets (180 jobs; 15 labelled benchmark CVs + 2 demo profiles)Страницы
Маршрут | Назначение |
| Выберите эталонное резюме или загрузите своё, затем запустите агента. |
| Разобранный профиль, топ-5 совпадений с процентом совпадения, анализ разрыва для каждого совпадения, план на 4 недели, загрузка отчёта. Только для сессии — посетители никогда не видят чужой запуск. |
| Индекс вакансий: импорт CSV, покрытие эмбеддингов, проверка целостности корпуса. |
| Запускает агента по каждому размеченному резюме и сообщает среднее Precision@5 и среднюю задержку поиска. |
Оценка
Истинные метки хранятся в eval_cvs.relevant_job_ids. Для каждого резюме механизм запускает тот же самый конвейер, который получает посетитель (включая переранжирование), и вычисляет Precision@5 = |top5 ∩ relevant| / 5, затем усредняет по набору вместе с задержкой поиска для каждого резюме. Поскольку релевантность определяется треком и совместимым старшинством, изменения ранжирования проверяются, а не угадываются.
Запуск локально
git clone https://github.com/ak8x6/talent-bridge-lebanon.git
cd talent-bridge-lebanon
bun install
bun run dev # http://localhost:8080Если вы предпочитаете npm:
npm install
npm run dev # http://localhost:8080Переменные окружения (требуется .env, ни одна не закоммичена):
VITE_SUPABASE_URL=...
VITE_SUPABASE_PUBLISHABLE_KEY=...
LOVABLE_API_KEY=... # server-side only: LLM + embedding gatewayНастройка базы данных: примените supabase/migrations/*.sql по порядку, импортируйте data/jobs.csv через /admin, затем нажмите Generate embeddings. Загрузите data/eval_cvs.csv в eval_cvs, чтобы включить эталон.
Замечания по безопасности
Никаких секретов в клиентском коде; ключи шлюза читаются только внутри обработчиков серверных функций.
Безопасность на уровне строк и явные привилегии для каждой публичной таблицы.
Столбец
trackникогда не раскрывается через поиск, интерфейс или MCP-инструменты — это только метка оценки.Промпты запрещают вывод пола по именам; весь генерируемый текст гендерно нейтрален.
Лицензия
MIT © 2026 Ahmad Kassem — см. LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server that exposes job search data from multiple boards, enabling clients to query and manage job listings via natural language.7MIT

bach-jsearchofficial
AlicenseAqualityDmaintenanceMCP server for accessing Jsearch API to search jobs, get job details, and retrieve salary estimates.4MIT- AlicenseNot gradedqualityCmaintenanceMCP server for the WorkLink Partner API that enables searching live job vacancies and tenders in Syria.19MIT
Related MCP Connectors
GetJobzi MCP server for job search, application tracking, and career forecasting.
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
MCP server for AI access to Swagger by SmartBear.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ak8x6/talent-bridge-lebanon'
If you have feedback or need assistance with the MCP directory API, please join our Discord server