Project

General

Profile

Actions

Feature #67

closed
RA

Feature #21: Enhance Matching Results and AI Assistant with Company Enrichment and Market Insights

[GetYourJob assistant] Company-data + market-insights assistant enhancements

Feature #67: [GetYourJob assistant] Company-data + market-insights assistant enhancements

Added by Redmine Admin about 2 months ago. Updated about 2 months ago.

Status:
Shipped
Priority:
Normal
Assignee:
-
Start date:
06/11/2026
Due date:
% Done:

0%

Estimated time:
spec_ref:
build_status:
build_number:
ci_run_url:
scan_status:
scan_report_url:
deploy_status:
preprod_url:
https://github.com/omdev-tech/GetYourJob/pull/240
deployed_at:
branch:
feat/redmine-21-insights-ui
pr_url:
https://github.com/omdev-tech/GetYourJob/pull/239
security_key:
severity:
paused:

Description

**Surface:** GetYourJob AI assistant tool surfaces — MCP server (`GetYourJob/src/.../mcp/tools/`) AND in-app `AssistantToolExecutor.executeTool`, plus assistant prompt/behavior config.

## Description
Make the assistant proactively use company-enrichment data (#1) and market insights (#3) to guide recommendations.

- Expose company-enrichment data and the market-insights aggregates as assistant tools/context. NOTE: candidate/assistant tools exist twice (MCP server + in-app `AssistantToolExecutor`) — mirror changes in both surfaces.
- Behavior/prompt updates:
- Prioritize skills over locations in recommendations (e.g. "Learn Kubernetes (7,086 offers) before targeting Paris").
- Explain reasoning for suggestions (e.g. "I'm suggesting Paris because 60% of Frontend roles are there").
- Proactively mention company type when relevant (e.g. "This is an ESN, so missions may be shorter-term"; "This candidate prefers product companies, but this is an ESN").

Depends on #1 (company data) and #3 (market insights).

## Acceptance criteria
- [ ] Assistant can access company-enrichment data and market-insights aggregates via tools/context in BOTH the MCP server and in-app `AssistantToolExecutor`.
- [ ] Assistant prioritizes skills over locations in recommendations and explains its reasoning.
- [ ] Assistant proactively mentions company type when relevant.
- [ ] Behavior verified with representative prompts; no regression to existing assistant tool loop.

**Estimate:** M

RA Updated by Redmine Admin about 2 months ago Actions #1

  • Status changed from Submitted to In development

RA Updated by Redmine Admin about 2 months ago Actions #2

  • branch set to feat/redmine-21-insights-ui
  • pr_url set to https://github.com/omdev-tech/GetYourJob/pull/239

🏁 done dev — ready for QA

Améliorations assistant : données entreprise enrichies (#58) + tendances marché (#61/#63) exploitées proactivement. Les outils existent sur DEUX surfaces — `AssistantToolExecutor` (in-app) ET serveur MCP — donc les changements sont mirrorés sur les deux.

In-app `AssistantToolExecutor` :
- nouveau handler `get_company_data` (miroir du MCP `get_company_details`) : type société (ESN / employeur direct / …) + faits d'enrichissement présents (secteur, taille, siège, site, année, nb d'offres actives). Champs absents OMIS, jamais inventés.
- `get_market_insights` réécrit pour consommer l'agrégat canonique via le `computeMarketInsights` pur partagé (même shape que `/api/market-insights`) : top compétences demandées avec compteurs réels, tendances localisation, répartition modes de travail → support du raisonnement compétences-avant-localisation.

MCP `InsightsTools` : `get_market_insights` aligné sur le même agrégat (une seule shape sur les 3 surfaces : route API, in-app, MCP).

`AssistantToolRegistry` : définition `get_company_data` ajoutée ; `get_market_insights` (scope role/location, compteurs réels).

Prompt système (`SendAssistantMessageUseCase`) : mention proactive du type société (« Acme est une ESN… »), priorité compétences sur localisation avec raisonnement chiffré réel (« Apprends Kubernetes — 7 086 offres » ; « je suggère Paris car 60 % des rôles Frontend y sont »), renfort « aucune donnée inventée → donnée indisponible ».

Tests (vitest) : `get_company_data` (shape enrichissement présente-seulement + not-found), `get_market_insights` agrégat (compteurs réels, ranking localisation, modes, forwarding filtre, corpus vide → agrégats vides), assertions de comportement du prompt. Aucune régression sur la boucle d'outils existante (tests toolLoop + compensation verts).

Branche : `feat/redmine-21-insights-ui` · PR #239 (base `dev`) : https://github.com/omdev-tech/GetYourJob/pull/239
CI Jenkins (branch + pr-head) : verte. `npx tsc --noEmit` sur fichiers touchés : propre. `npm run build` : OK.

Reste « In development » (livré, prêt QA).

RA Updated by Redmine Admin about 2 months ago Actions #3

  • Status changed from In development to Preprod
  • preprod_url set to https://github.com/omdev-tech/GetYourJob/pull/240

Assistant : outils company-data + market-insights (miroir in-app + MCP) + prompt skills>localisation. Livré dans l'épopée #21 (PR #239). Promu vers preprod (PR #240).

RA Updated by Redmine Admin about 2 months ago Actions #4

  • Status changed from Preprod to Shipped

Livré en production avec l'épopée #21. Preprod → Shipped.

Actions

Also available in: PDF Atom