Skip to main content
Glama
ak8x6

TalentBridge Lebanon

by ak8x6

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_cvsearch_jobsreflect_on_resultsanalyze_gapbuild_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 с pgvector (Supabase / Lovable Cloud)

LLM

google/gemini-2.5-flash (+ gemini-2.5-pro для шагов, требующих рассуждений) через Lovable AI Gateway

Эмбеддинги

openai/text-embedding-3-small, 384 измерения

Взаимодействие агента

Сервер Model Context Protocol на /mcp

Структура репозитория

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)

Страницы

Маршрут

Назначение

/

Выберите эталонное резюме или загрузите своё, затем запустите агента.

/results

Разобранный профиль, топ-5 совпадений с процентом совпадения, анализ разрыва для каждого совпадения, план на 4 недели, загрузка отчёта. Только для сессии — посетители никогда не видят чужой запуск.

/admin

Индекс вакансий: импорт CSV, покрытие эмбеддингов, проверка целостности корпуса.

/eval

Запускает агента по каждому размеченному резюме и сообщает среднее 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.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server that exposes job search data from multiple boards, enabling clients to query and manage job listings via natural language.
    7
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for accessing Jsearch API to search jobs, get job details, and retrieve salary estimates.
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for the WorkLink Partner API that enables searching live job vacancies and tenders in Syria.
    19
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    GetJobzi MCP server for job search, application tracking, and career forecasting.

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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