Aller au contenu

Senior AI Engineer & Responsable IA · Neoteem · Lyon

Raphaël Picard, Senior AI Engineer & Responsable IA à Lyon : J’industrialise l’IA agentique.

Je conçois et mets en production des assistants IA utiles au quotidien. Chez Neoteem, éditeur d’un ERP immobilier, 7 agents spécialisés assistent les gestionnaires : questions sur leurs données et sur l’aide du logiciel, comparaison de devis, rédaction. Ils lisent les données de l’ERP sans pouvoir les modifier, et aucun mail ne part, aucun document n’est supprimé sans validation humaine. Chaque version est testée avant sa mise en ligne, chaque coût est suivi : −33 % sur la facture des modèles. Et l’équipe est formée pour les faire vivre.

agents IA en production
7
contrôles humains avant toute action engageante
5
de coûts d’inférence en moins (context caching)
33 %
ans d’ingénierie logicielle
8+
  • LangGraph◆
  • Claude◆
  • Gemini◆
  • MCP◆
  • FastAPI◆
  • pgvector◆
  • Langfuse◆
  • DeepEval◆
  • Vertex AI◆
  • Cloud Run◆
  • Python◆
  • TypeScript◆
  • Hono◆
  • PostgreSQL◆
  • Next.js◆
  • React 19◆
  • Docker◆
  • Claude Code◆

Défilez pour décoller

II — Manifeste

De développeur full-stack à ingénieur IA.

En plus de huit ans d’ingénierie logicielle, j’ai livré des produits web à grande échelle : une plateforme e-commerce déployée dans plus de 100 pays, un MVP EdTech conçu de zéro, des outils métier pour la mobilité, où j’ai intégré mon premier service d’IA en production dès 2018. J’y ai appris ce qui fait tenir un logiciel : l’architecture, les tests, la rigueur de livraison.

Depuis novembre 2025, je suis Senior AI Engineer & Responsable IA chez Neoteem, éditeur d’un ERP pour les professionnels de l’immobilier. J’y ai mis en production sept agents LangGraph répartis dans NeoChat, NeoSupport et NeoAgent, réécrit de zéro en TypeScript la couche de données qui les alimente et fait adopter par la direction une architecture multi-chatbots spécialisés. J’encadre le pôle IA (3 à 4 personnes) et je forme les équipes, tech et non-tech.

Mon avantage : un profil hybride. Je parle architecture aux développeurs, coûts et usages aux dirigeants (chaque agent a son coût suivi), et prompts aux modèles.

Responsable IA : stratégie, équipe, adoption

  • Architecture multi-chatbots spécialisés proposée à la direction, puis adoptée en production
  • Plus de 6 notes de décision stratégiques : choix de langage, RAG ou base de connaissances, organisation du pôle IA
  • Encadrement direct de 3 à 4 personnes. Formation des équipes tech et non-tech (Claude Code, Claude Desktop, Cowork)
  • 01L’IA ne calcule jamais un chiffre

    Montants et soldes sont lus dans le logiciel par des outils testés. Le modèle explique, et dit « je ne sais pas » quand il ne sait pas.

  • 02Pas d’agent sans évaluation

    Chaque nouvelle version est rejouée sur un jeu de cas réels avant sa mise en ligne, puis suivie en production : un agent se mesure avant et après son déploiement.

  • 03L’architecture d’abord

    Hexagonale, frontières vérifiées en CI, contrats OpenAPI : l’IA mérite la même discipline que le reste du code.

  • 04L’humain garde la main

    Les données de l’ERP en lecture seule, une validation humaine avant tout envoi ou toute suppression : l’agent propose, l’humain décide.

III — Journal de quêtes

Parcours : 8+ ans d’ingénierie logicielle, dont une première intégration d’IA en production dès 2018.

Chaque quête accomplie a laissé une compétence. Sélectionnez-en une pour lire son journal.

Nov. 2025 — aujourd’hui

Senior AI Engineer & Responsable IA

Neoteem — ERP pour les professionnels de l’immobilier · CDI, télétravail

Objectifs accomplis

  • Plateforme d’IA générative : 3 applications Python (NeoChat, NeoSupport, NeoAgent) et un backend TypeScript, 7 agents spécialisés en production
  • Données métier servies en lecture seule par construction : 42 vues couvertes par 5 outils génériques, 5 points de contrôle humain
  • Qualité : plus de 7 000 tests, golden set de 64 cas rejoué 5 fois avec DeepEval, chaque conversation tracée dans Langfuse
  • Context caching : −33 % de coûts d’inférence
  • Couche de données de l’ERP réécrite de zéro en TypeScript (Bun, Hono, PostgreSQL), en remplacement de fonctions PostgreSQL historiques : 41 endpoints OpenAPI, 496 schémas Zod, mutation testing à 80 %
  • Base de connaissances de 989 notes branchée aux agents via 2 serveurs MCP maison
  • Architecture multi-chatbots spécialisés proposée à la direction et adoptée. Plus de 6 notes de décision stratégiques
  • Encadrement direct de 3 à 4 personnes. Formation des équipes tech et non-tech

Récompenses

PythonFastAPILangGraphGeminipgvectorLangfuseGCP

Senior AI Engineer & Responsable IA — Neoteem (Nov. 2025 — aujourd’hui)

ERP pour les professionnels de l’immobilier · CDI, télétravail

  • Plateforme d’IA générative : 3 applications Python (NeoChat, NeoSupport, NeoAgent) et un backend TypeScript, 7 agents spécialisés en production
  • Données métier servies en lecture seule par construction : 42 vues couvertes par 5 outils génériques, 5 points de contrôle humain
  • Qualité : plus de 7 000 tests, golden set de 64 cas rejoué 5 fois avec DeepEval, chaque conversation tracée dans Langfuse
  • Context caching : −33 % de coûts d’inférence
  • Couche de données de l’ERP réécrite de zéro en TypeScript (Bun, Hono, PostgreSQL), en remplacement de fonctions PostgreSQL historiques : 41 endpoints OpenAPI, 496 schémas Zod, mutation testing à 80 %
  • Base de connaissances de 989 notes branchée aux agents via 2 serveurs MCP maison
  • Architecture multi-chatbots spécialisés proposée à la direction et adoptée. Plus de 6 notes de décision stratégiques
  • Encadrement direct de 3 à 4 personnes. Formation des équipes tech et non-tech

Développeur Full-Stack & IA — Raphaël Picard EI (Déc. 2022 — Nov. 2025)

Indépendant · mission Royal Canin jusqu’en avril 2025, puis projets IA : agents, MCP, RAG

  • Agents autonomes et workflows multi-agents (LangGraph, CrewAI, OpenAI Agents SDK, AutoGen)
  • Premier serveur MCP et chatbot RAG personnel, automatisations n8n (Notion, Slack, Airtable)
  • API FastAPI et applications Next.js en Clean Architecture

Développeur Front-End Senior — Royal Canin · Ekino (Déc. 2022 — Avr. 2025)

Plateforme e-commerce internationale, plus de 100 pays · mission freelance via Raphaël Picard EI (pour Ekino)

  • Optimisation des parcours critiques B2B et B2C à l’échelle internationale
  • Migration complète JavaScript → TypeScript et refonte en React Hooks
  • Tests automatisés Jest & Testing Library pour fiabiliser les livraisons

Développeur Full-Stack — Schoolmouv (Mars 2022 — Déc. 2022)

Plateforme éducative interactive · CDI

  • MVP conçu de zéro, R&D technique et architecture hexagonale
  • Bibliothèque Storybook, API REST Express documentée Swagger
  • Encadrement technique de développeurs juniors

Développeur Full-Stack — Aixia Systèmes · Leasys Rent (Sept. 2018 — Mars 2022)

Mobilité automobile · CDI

  • PWA React intégrant l’API Google Vision pour analyser automatiquement des documents : ma première intégration d’IA en production
  • BFF GraphQL (Node.js, Apollo) devant les microservices, monorepo Lerna et CI/CD GitLab
  • Migration et sécurisation d’API Symfony 3 → 5

Hauts faits

Certifications IA et diplômes.

  • Claude Code in ActionAnthropic Academy
  • Claude with the Anthropic APIAnthropic Academy
  • Introduction to Agent SkillsAnthropic Academy
  • Introduction to Model Context ProtocolAnthropic Academy
  • AI Agents FundamentalsHugging Face / Google
  • Concepteur développeur web, titre RNCP de niveau 6 (bac + 4)O’clock

Ce qu’en disent mes coéquipiers

Extraits de recommandations LinkedIn (mission Royal Canin).

IV — Le Portail

Un pied dans le code, l’autre dans les agents.

Je n’ai pas quitté le développement pour l’IA : je l’ai emporté avec moi. Plus de huit ans d’architecture, de tests et de production, c’est exactement ce qui manque à la plupart des projets d’IA générative.

  1. 2018

    Première intégration d’IA en production : l’API Google Vision analyse des documents dans une PWA React.

  2. Mars 2025

    Projets d’IA appliquée en indépendant : systèmes multi-agents et premier serveur MCP, publiés en open source.

  3. Nov. 2025

    Responsable IA chez Neoteem : le code devient le socle, les agents deviennent le métier.

Continuez : traversée vers le Nexus ↓

V — Arbre de talents

Expertise IA : agents, RAG, sécurité et LLMOps.

Six domaines pratiqués au quotidien, chacun avec sa preuve. Sélectionnez-en un pour le détail.

Agents IA

Des agents spécialisés, chacun avec son périmètre d’outils et ses points de contrôle humain — en production, pas en démo.

  • Moteur ReAct déclaratif : un agent se déclare (état, prompt, outils, interruptions) et son graphe LangGraph en est dérivé
  • Chaque outil est un module autonome : fonction typée, schémas Pydantic, consignes de prompt propres
  • Données en catalogue : 42 vues métier couvertes par 5 outils génériques, choisies par similarité sémantique
  • 5 points de contrôle humain (interruptions LangGraph) : homonymes, destinataire, rédaction, aperçu avant envoi, suppression
  • Invariants vérifiés avant chaque appel d’outil. Jeu d’outils fixe qui échoue bruyamment

Technologies : LangGraph, ReAct, Gemini, Claude

VI — Noyau d’orchestration

Anatomie d’un agent IA en production.

L’architecture de NeoChat, en production : cliquez sur un composant pour voir son rôle, et suivez une question type traverser le système.

Gestionnairequestion métierAgent ReActLangGraph · GeminiCatalogue sémantiqueoutil · pgvector HNSWContrôle humain5 points de contrôlePasserelle IAHono · Zod · OpenAPIVues métier42 vues SQLTraces & évalsLangfuse · DeepEval

Agent ReAct

Un moteur déclaratif : l’agent est décrit (état, prompt, outils, interruptions), son graphe LangGraph en est dérivé. 5 outils de données et 8 outils mail et documents, toujours chargés. Des invariants sont vérifiés avant chaque appel d’outil, et un outil manquant fait échouer l’agent explicitement.

trace · NeoChat · exemple
  1. 00.000infoquestion="Quels sont les impayés de Mme Martin ?" · identité ← jeton vérifié
  2. 00.940llmraisonnement → appel resoudre_nom("Martin")
  3. 00.941routeinvariants vérifiés avant l’appel d’outil ✓
  4. 01.180toolresoudre_nom → 2 homonymes
  5. 01.182hitlinterruption LangGraph → « Laquelle ? » [lot 12 · lot 31]
  6. 07.905hitlreprise → Mme Martin, lot 12
  7. 08.770llmappel rechercher_catalogue("impayés locataire")
  8. 08.960toolcatalogue (pgvector) → vue « impayés »
  9. 09.880llmappel lire_vue(impayés, filtre=locataire, tri=échéance, limite=50)
  10. 10.140toollire_vue → 3 lignes · liste complète (aucun curseur suivant) [SELECT seul]
  11. 11.020llmréponse en streaming SSE : montants lus dans la vue, aucun calcul par le modèle
  12. 12.310oktrace Langfuse : 4 appels LLM, 3 outils · coût et latence par agent

Trace illustrative — données fictives, architecture réelle.

VI bis — Bestiaire

Ce qui casse un agent en production, et comment je l’en empêche.

19 pannes réelles, chacune avec sa parade. Dans le monde 3D, ce sont les bugs à corriger. Ici, la fiche complète.

  • HallucinationLe modèle invente une réponse plausible mais fausse : un chiffre, une loi ou une procédure qui n’existe pas.

    Bornée, pas vaincue : les chiffres viennent de vues et de rapports SQL, jamais du modèle. Chaque passage est étendu à sa page complète, la Faithfulness est mesurée avant chaque release, et l’agent préfère « je ne sais pas » ou un signalement de manque dans la doc à une réponse inventée.

  • RégressionUn changement de prompt ou de modèle améliore un cas… et en casse dix autres sans que personne ne le voie.

    Bloquée : plus de 7 000 fonctions de test, CI sur chaque PR, et un golden set de 64 cas rejoué 5 fois avec DeepEval avant chaque release.

  • Donnée invalideUne donnée mal formée traverse l’API et fait planter un écran ou un agent, loin de sa cause.

    Arrêtée à la frontière : contrats OpenAPI, schémas Zod et Pydantic, client HTTP de l’IA généré depuis le contrat du backend.

  • Dette techniqueChaque raccourci rend le suivant plus coûteux : le code devient fragile et les livraisons ralentissent.

    Contenue : architecture hexagonale aux frontières vérifiées en CI, détection de duplication et de code mort, mutation testing à 80 % sur chaque PR.

  • Contexte obèseOn renvoie au modèle les mêmes milliers de tokens à chaque appel : lent et cher.

    Dégonflé : context caching (−33 % de coûts d’inférence) et condensés courts des résultats d’outils pour les tours suivants.

  • Golden set biaiséOn retouche le prompt jusqu’à passer les 64 cas de test… et l’agent échoue sur les vraies questions.

    Évité : les traces de production et les retours utilisateurs révèlent ce que le golden set ne couvre pas.

  • Boucle infinieUn agent rappelle le même outil en boucle sans jamais conclure, en brûlant des tokens.

    Cassée : jeu d’outils fixe, invariants vérifiés avant chaque appel d’outil, délais bornés. DeepEval vérifie que l’agent appelle les bons outils.

  • Test LLM instableLe même cas passe puis échoue : le modèle n’est pas déterministe, et la CI crie au loup.

    Apprivoisé : chaque cas du golden set est rejoué 5 fois pour séparer une vraie régression de la variance. Le contrôle des outils appelés reste déterministe.

  • Liste tronquéeL’agent lit 50 lignes et répond comme s’il avait tout vu : « vous avez 50 impayés ».

    Corrigée : pagination par curseur opaque que le modèle ne voit jamais. Une liste incomplète n’est jamais présentée comme complète.

  • Échec silencieuxLa recherche tombe en panne et l’assistant répond « rien trouvé » : l’utilisateur croit qu’il n’y a rien.

    Démasqué : une panne n’est jamais déguisée en « rien trouvé », et un outil manquant fait échouer l’agent explicitement.

  • SQL sauvageOn laisse le modèle écrire son SQL : une jointure de trop, un DELETE, la table d’un autre client.

    Impossible ici : 5 outils génériques sur 42 vues, colonnes validées, opérateurs en liste fermée, paramètres liés, SELECT uniquement, une base par client.

  • Prompt injectionUn texte malveillant caché dans un document ou un message détourne l’agent : « ignore tes consignes et… ».

    Contenue par construction, pas par le prompt : identité tirée du jeton vérifié, jeu d’outils fixe, invariants avant chaque appel, passerelle en lecture seule, aucun envoi ni suppression sans validation humaine. Une injection réussie ne peut ni écrire dans l’ERP, ni envoyer ou supprimer quoi que ce soit sans validation humaine, ni changer d’identité, ni toucher la base d’un autre client. L’aperçu avant envoi bloque aussi l’exfiltration par mail.

  • LatenceUne question traverse plusieurs appels de LLM : sans précaution, l’utilisateur fixe un écran vide.

    Réduite : streaming SSE, raccourci pour les salutations et cache dans le support, délais bornés côté passerelle.

  • Coût explosifSans suivi, la facture d’inférence grimpe en silence jusqu’à la fin du mois.

    Maîtrisé : coût et latence suivis par application et par agent dans Langfuse, cache dans le support, context caching (−33 %).

  • Dérive du modèleLes réponses se dégradent doucement avec le temps : nouvelles données, nouveau modèle, nouveaux usages.

    Surveillée : chaque changement de prompt ou de modèle rejoue le golden set (64 cas × 5) avec DeepEval. En production, traces Langfuse et retours utilisateurs révèlent ce que les tests n’ont pas vu.

  • Fuite de clé APIUne clé secrète se retrouve dans le code ou un log, puis sur Internet.

    Colmatée : détection de secrets en CI sur chaque PR et hooks qui bloquent avant le commit.

  • Action irréversibleSur une mauvaise lecture, l’agent envoie le mail au mauvais destinataire ou supprime le mauvais document.

    Bloquée : choix du destinataire, aperçu avant envoi, confirmation avant suppression — l’agent propose, l’humain décide.

  • Token perduLa conversation dépasse la fenêtre de contexte : l’agent oublie les consignes du début.

    Retrouvé : prompt système, résumé de la conversation et condensés des résultats d’outils gardent l’essentiel dans la fenêtre.

  • Agent perduUn agent généraliste à qui l’on confie tout se trompe d’outil et de tâche.

    Retrouvé : des agents spécialisés, chacun avec son graphe LangGraph et ses outils — l’architecture multi-chatbots proposée à la direction et adoptée en production.

VII — Inventaire

Agents en production et labo open source.

D’abord les agents qui tournent chaque jour chez Neoteem, puis mon labo personnel, open source sur GitHub. Ouvrez un objet pour l’inspecter.

  • Légendaire · Assistant conversationnel · Neoteem

    NeoChat

    En production

    L’assistant du logiciel de gestion immobilière : un gestionnaire pose une question sur ses données, ses mails ou ses documents. L’agent cherche la réponse et peut agir pour lui, sous son contrôle.

    ▸ Inspecter l’objet
    • Moteur ReAct déclaratif : un agent se déclare, son graphe LangGraph en est dérivé
    • Les données comme un catalogue : 42 vues métier couvertes par 5 outils génériques, choisies par similarité sémantique
    • Passerelle en lecture seule par construction : vues autorisées, colonnes validées, paramètres liés
    • 5 points de contrôle humain (interruptions LangGraph) : aucun mail ne part sans validation
    • Pagination par curseur opaque : jamais de liste tronquée présentée comme complète

    LangGraphGeminiFastAPIpgvectorHonoLangfuse

    ● en production
  • Épique · Agent de support · Neoteem

    NeoSupport

    En production

    Il répond aux questions d’usage du logiciel à partir de sa documentation, demande une précision quand la question est ambiguë et signale les manques de la doc au lieu d’inventer.

    ▸ Inspecter l’objet
    • Graphe RAG conditionnel : relances réécrites, orientation métier, raccourci pour les salutations, cache
    • Recherche hybride plein texte + sémantique fusionnée en Reciprocal Rank Fusion, passages étendus à la page complète
    • Classement qui ordonne sans exclure. Service SSE déployé à part. Retours utilisateurs collectés
    • Une panne de recherche n’est jamais présentée comme « rien trouvé »

    LangGraphpgvectorGeminiFastAPI

    ● en production
  • Épique · Agents métier · Neoteem

    NeoAgent

    En production

    Des assistants intégrés aux écrans du logiciel pour les tâches qui prennent du temps aux gestionnaires : comparer des devis, reformuler un texte, rédiger une annonce immobilière, préparer un modèle de document. Chacun est un graphe LangGraph dédié, servi par une API REST.

    ▸ Inspecter l’objet
    • Comparateur de devis : lit les PDF, les confronte à des référentiels publics, attribue un score et signale les incohérences (extraction multimodale, Map-Reduce)
    • Reformulation en quatre modes, annonces immobilières en huit styles
    • Modèles de documents avec un garde-fou contre les variables de fusion inconnues

    LangGraphFastAPIGemini

    ● en production
  • Rare · App MCP · système expert

    wow-forever

    400+ fichiers de tests

    Un assistant expert pour World of Warcraft: Forever, où l’IA ne calcule jamais : chaque chiffre est lu dans les données du jeu, calculé par un moteur testé et livré avec sa provenance et son niveau de certitude.

    ▸ Inspecter l’objet
    • Serveur MCP de 8 outils + plugin Claude Code (8 skills, 2 agents)
    • Garde-fou automatique : tout chiffre qui ne vient pas d’un outil est signalé
    • Compatible Claude Desktop, Codex, Gemini CLI et Cursor
    • Veille quotidienne des versions en CI, 400+ fichiers de tests

    PythonuvMCPClaude CodeLua

    GitHub ↗
  • Rare · Méta-framework Claude Code

    claude-forge

    Serveur MCP · 22 outils

    Mon studio R&D : il conseille, génère de la configuration Claude Code conforme et capitalise chaque leçon dans un vault interrogeable par MCP.

    ▸ Inspecter l’objet
    • Serveur MCP de connaissances : FastMCP + SQLite FTS5, 22 outils
    • Hooks bloquants, doctrine vivante avec validation humaine typée
    • Contournement documenté des MCP non chargés dans les sub-agents

    PythonFastMCPSQLite FTS5Claude Code

    GitHub ↗
  • Rare · CLI open source · MIT

    agentsdir

    v1.0.0 · pas encore sur npm

    Installe dans n’importe quel dépôt l’architecture AGENTS.md + .agents/ lue par Codex, Cursor et opencode, et la projette vers Claude Code. La commande `check` échoue en CI dès qu’une projection diverge.

    ▸ Inspecter l’objet
    • init, add, sync, check, doctor : tout est vérifiable en CI
    • Tests unitaires + end-to-end Ubuntu et Windows
    • Durcissement sécurité : path traversal, symlinks, injections

    TypeScriptNode 22Vitest

    GitHub ↗
  • Rare · Serveur MCP

    mcp-server-documentation

    13 ★

    Une recherche unifiée dans la documentation de LangChain, LangGraph, Next.js, Tailwind ou FastMCP, directement accessible aux agents.

    ▸ Inspecter l’objet
    • Résolution intelligente des noms de librairies
    • Requêtes asynchrones et récupération parallèle

    PythonFastMCPasyncio

    GitHub ↗
  • Rare · RAG applicatif

    job-booster

    Génère e-mails, messages LinkedIn et lettres de motivation en croisant une offre avec le profil du candidat.

    ▸ Inspecter l’objet
    • Recherche vectorielle Qdrant + reranker BGE
    • Multi-LLM : Anthropic, OpenAI, Gemini
    • Traces Langfuse, architecture hexagonale

    FastAPINext.jsLangChainQdrant

    GitHub ↗
  • Rare · Multi-agents

    coder-crew

    Quatre agents — lead, backend, frontend, tests — qui conçoivent, codent et testent une application Python ensemble.

    ▸ Inspecter l’objet
    • Un LLM choisi par rôle
    • Monitoring des coûts et sessions avec AgentOps

    CrewAIClaudeGPT-4oGradio

    GitHub ↗

VIII — Balise de contact

Un poste IA à pourvoir ? Parlons production, pas POC.

Poste de Senior AI Engineer ou de Responsable IA à Lyon ou en télétravail, projet d’agents LLM ou de RAG, équipe à former à Claude Code : écrivez-moi.

Activez la balise pour m’écrire.