Feature #67
closedFeature #21: Enhance Matching Results and AI Assistant with Company Enrichment and Market Insights
[GetYourJob assistant] Company-data + market-insights assistant enhancements
0%
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
- Status changed from Submitted to In development
RA Updated by Redmine Admin about 2 months ago
- 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
RA Updated by Redmine Admin about 2 months ago
- Status changed from Preprod to Shipped
Livré en production avec l'épopée #21. Preprod → Shipped.