Aller au contenu
NDNicolas Desjardins, retour à l'aperçu
CV
Nicolas Desjardins

Développeur en IA appliquée

Grand Montréal · français et anglais

NicolasDesjardins

Je conçois des outils d'IA qui lisent vos documents, répondent à partir de vos propres fichiers et vous montrent la source.

Plus de 8 ans à faire tourner des systèmes web en production pour New Roots Herbal Inc. Deux services d'IA en ligne, au code public.

  • 8+ans aux commandes de systèmes en production
  • 21/21factures de test lues sans erreur (7 oct. 2026)
  • 30+sites web migrés sans interruption

Voyez-le à l'œuvre

Une facture en désordre entre. Des données propres et vérifiées en sortent.

simulation en directpipeline d'extraction · simulé · 0 appel externe

Ce que je peux construire pour votre entreprise

Pas besoin de connaître le terme technique.

Décrivez le problème dans vos mots. Chaque carte montre ce que je construis pour le régler, le nom que lui donnent les spécialistes, et la preuve vérifiable sur ce site.

Projets IA

Des outils d'IA qui vérifient leur propre travail.

Deux services sont en ligne, au code public. Deux autres sont planifiés. Les chiffres marqués Mesuré ont été enregistrés lors de tests datés. Les chiffres marqués Cible sont des objectifs, pas des résultats.

  • Mesuré
  • Cible
En production, code ouvert01 / Phase 1 · Livré

Lecteur de factures

Service d'extraction de factures

Transforme les PDF, les numérisations et les courriels transférés en données de facture propres, prêtes pour votre logiciel comptable. Si un fournisseur d'IA est lent ou en panne, il passe tout seul à un autre, et chaque total est recalculé au cent près avant toute sortie.

Le problème réglé

Les équipes des comptes fournisseurs reçoivent leurs factures sous forme de sorties OCR brutes, de fils de courriels transférés, de reçus de caisse et de PDF en langue étrangère. Un appel LLM brut renvoie de la prose, des blocs de code délimités ou un objet JSON de la mauvaise forme, et une seule panne chez un fournisseur bloque toute la file d'entrée.

Métriques

  • 21 / 21

    entièrement corrects, modèle principal, banc d'essai daté

    mesuré
  • 10

    classes de défaillance de fournisseur couvertes hors ligne

    mesuré
  • 0

    appel réseau permis dans la suite de tests

    mesuré
  • 0,00 $

    de coût marginal par requête sur la chaîne par défaut

    mesuré
Comment ça marchepour les équipes techniques

En termes techniques

Un microservice FastAPI asynchrone qui transforme des documents désordonnés et non structurés en un enregistrement de facture garanti, validé par schéma. La résilience vient du routage entre modèles, pas entre fournisseurs. Un modèle principal gratuit bascule vers un second fournisseur en cas de limite de débit, de délai dépassé ou d'exception de schéma, à coût marginal nul.

Architecture

Les requêtes sont validées par Pydantic v2 avant tout appel de modèle. Le répartiteur parcourt une chaîne ordonnée de modèles avec décodage contraint par json_schema strict, à température 0. Chaque tentative s'exécute sous un délai d'expiration ferme et traduit les exceptions du SDK en une taxonomie d'erreurs unique. La sortie brute est débarrassée de ses délimiteurs de code et de ses préambules de raisonnement, analysée, puis normalisée par des validateurs qui recalculent les totaux de ligne au cent près et convertissent les symboles monétaires en codes ISO-4217. Le service veille aussi sur sa propre chaîne. Quand un modèle gratuit est retiré, il reteste le catalogue gratuit avec sept documents d'exemple et comble le vide selon une règle d'ordonnancement publiée.

Pile technique

  • Python 3.12
  • FastAPI
  • Pydantic v2
  • OpenRouter
  • httpx
  • Pytest
  • GitHub Actions
  • Render

Éléments de preuve

  • Dix classes de défaillance exercées hors ligne dans les tests de cascade, soit 429, 503, 404, délai dépassé, exception inattendue, JSON invalide, schéma non conforme, réponse vide, erreur amont intégrée à la réponse et sortie tronquée.
  • La suite de tests ne peut pas atteindre le réseau, par construction. Chaque chemin sortant est fermé dans conftest, et un test qui tente d'en emprunter un échoue immédiatement.
  • Instantané du banc d'essai daté du 7 octobre 2026. 3 passes de 7 documents par modèle, chaque appel enregistré en JSONL pour que les chiffres puissent être recalculés sans appeler de modèle.
  • Chaque chiffre de la page du projet est vérifié par un test contre les enregistrements. Une phrase qui ne découle pas des données fait échouer le build.
  • Côté journalisation, le modèle et la durée sont consignés, jamais le nom du fournisseur ni le numéro de facture au-dessus du niveau DEBUG.

Pipeline de requête

  1. 01

    Ingestion

    ExtractRequest, 10 à 50k caractères, plafond de 1 Mo sur le corps, refusé avant lecture

  2. 02

    Durcissement

    Neutralisation des injections de prompt, middleware request-id, budget d'appels avec Retry-After

  3. 03

    Modèle principal

    json_schema strict, température 0, délai d'expiration ferme

  4. 04branche

    Fallback

    Autre fournisseur, déclenché seulement après un appel échoué

  5. 05

    Récupération

    Retrait des délimiteurs, suppression du préambule de raisonnement, décodage JSON

  6. 06

    Validation

    InvoiceData.model_validate, recalcul des totaux, ISO-4217

Démo en ligne, code ouvert02 / Phase 2 · Livré

Interrogez vos manuels

Moteur de recherche hybride et contextuel pour la conformité

Vos équipes posent une question sur vos procédures ou vos règlements et reçoivent une réponse qui cite le passage exact et la page d'où il vient. Quand les documents ne le disent pas, la réponse le dit.

Le problème réglé

Le RAG naïf découpe le texte au nombre de caractères et classe par similarité cosinus seulement. Il brouille les identifiants exacts comme 21 CFR Part 11 ou SOP-QA-017, coupe une clause du document dont elle provient et laisse le modèle libre de mal recopier un chiffre ou de citer une page qu'il n'a jamais vue. En contexte de conformité, ce n'est pas un problème de qualité, c'est un risque juridique.

Métriques

  • 6 / 6

    réponses à citations vérifiées sur les questions enregistrées

    mesuré
  • 1 / 1

    question hors corpus déclinée, sans deviner

    mesuré
  • 441 Mo

    de mémoire au pic, deux modèles locaux chargés, instance de 512 Mo

    mesuré
  • 0,00 $

    de coût marginal par question sur la pile gratuite

    mesuré
Comment ça marchepour les équipes techniques

En termes techniques

Un moteur de recherche pour procédures opératoires normalisées et manuels réglementaires, qui ne répond qu'en citant la source. La recherche vectorielle et la recherche par mots-clés s'exécutent dans une seule requête PostgreSQL et sont fusionnées, un cross-encoder retient les trois meilleurs passages, et chaque citation renvoyée par le modèle est vérifiée contre le document stocké avant que quiconque la voie. Quand les documents ne le disent pas, la réponse le dit. La démo publique fonctionne à coût nul sur des modèles gratuits.

Architecture

PyMuPDF extrait les blocs de mise en page de chaque page, puis un segmenteur structurel les regroupe le long des titres en segments de 400 jetons avec un chevauchement de 60 jetons. Suivant le patron Contextual Retrieval d'Anthropic, chaque segment est stocké avec un préambule de mise en situation, et son embedding comme sa colonne tsvector générée sont construits à partir de ce texte. Une seule requête SQL exécute une recherche cosinus pgvector sur un index HNSW (m=16, ef_construction=64) et une recherche plein texte sur un index GIN, puis fusionne les deux listes par Reciprocal Rank Fusion (k=60) dans une CTE. Un cross-encoder lit la question avec chacun des candidats fusionnés, jusqu'à 50, et en garde 3. Le modèle doit renvoyer un JSON strict contenant une réponse, un score de confiance et des citations textuelles, ou un verdict explicite de contexte insuffisant. Le serveur réancre chaque citation dans le texte stocké du segment, écarte ce qui ne correspond pas, tire les titres et les numéros de page de la base de données et refuse de livrer une réponse dont aucune citation ne survit. La génération passe par une chaîne ordonnée de modèles OpenRouter gratuits avec repli, et Claude, les embeddings OpenAI et Cohere Rerank v3.5 s'activent par simple paramètre.

Pile technique

  • Python 3.12
  • FastAPI
  • Pydantic v2
  • PostgreSQL
  • pgvector (HNSW)
  • tsvector (GIN)
  • Reciprocal Rank Fusion
  • fastembed (ONNX)
  • OpenRouter
  • PyMuPDF
  • Render

Éléments de preuve

  • Sept exécutions réelles enregistrées le 14 octobre 2026 et publiées telles que le service les a renvoyées. Elles montrent que le pipeline fonctionne, pas à quelle fréquence il a raison, et un test retrouve chaque citation enregistrée mot pour mot dans le PDF d'exemple, à la page citée.
  • Une citation ne peut pas être inventée. Elle est comparée au segment stocké, jamais au préambule généré, après normalisation Unicode et typographique, et le modèle ne fournit jamais de numéro de page.
  • La suite hermétique n'a besoin ni de réseau, ni de base de données, ni de clé API, et s'exécute avec ruff à chaque push. Des tests optionnels sur un vrai PostgreSQL vérifient que la fusion SQL concorde avec son jumeau Python à 1e-9 près et qu'EXPLAIN utilise l'index HNSW.
  • Tient dans une instance gratuite de 512 Mo. Trois changements de mémoire, dont la désactivation de l'arène mémoire d'ONNX Runtime, ont fait passer le service de 856 Mo à 441 Mo au pic, les deux modèles locaux chargés.
  • Démo verrouillée par conception pour l'Internet public. Le téléversement exige la clé de l'opérateur, les questions sont plafonnées par visiteur et par jour, et l'allocation gratuite du jour est lue chez OpenRouter même, si bien qu'un redémarrage ne peut pas l'effacer.
  • Sur les sept exécutions, la médiane est de 1,4 s pour la recherche (embedding, SQL, reclassement) et de 6,8 s de bout en bout, sur des modèles gratuits. La requête SQL elle-même prend environ 170 ms, et la génération représente l'essentiel du reste.

Pipeline de requête

  1. 01

    Ingestion

    Blocs PyMuPDF, segments de 400 jetons selon les titres, préambule contextuel

  2. 02

    Indexation

    pgvector HNSW et index GIN sur un tsvector généré, une seule table

  3. 03

    Recherche

    Cosinus dense et plein texte dans une seule requête SQL

  4. 04

    Fusion

    CTE de Reciprocal Rank Fusion, k=60, jusqu'à 50 candidats

  5. 05

    Reclassement

    Cross-encoder qui lit question et passage ensemble, en garde 3

  6. 06

    Vérification

    Réponse JSON stricte, citations réancrées dans le texte stocké, pages tirées de la base

Prochaines étapes planifiées

03 / Phase 3 · JalonLivraison, jours 61 à 90
En cours de réalisation

Agents d'opérations supervisés

Pipeline d'opérations multiagent autonome

Un assistant IA qui vérifie l'inventaire, rédige les fiches produits pour chaque canal de vente, vérifie chaque affirmation au regard de la réglementation et attend qu'une personne approuve tout ce qui est risqué.

  • LangGraph
  • Python
  • PostgreSQL Checkpointers
  • Structured Tool Calling
  • Claude Sonnet
  • +3 autres: GPT-4o-mini, FastAPI, Webhooks
  • 100%

    des mutations à haut risque soumises à un point de contrôle humain

    cible
  • Rejeu complet

    de l'état depuis n'importe quel point de contrôle

    cible
  • 2 niveaux

    de cascade de modèles selon la complexité de la tâche

    cible
04 / Phase 4 · Projet synthèseLivraison, jours 91 à 120
En cours de réalisation

Contrôle qualité de l'IA

Passerelle LLMOps de production et suite d'évaluation CI/CD

Un point de contrôle devant chaque appel à l'IA : il enregistre ce qui s'est passé et ce que ça a coûté, réutilise les réponses aux questions répétées et bloque un changement qui dégrade les réponses avant qu'il n'atteigne vos clients.

  • FastAPI Reverse Proxy
  • Redis Vector Similarity Cache
  • Langfuse Tracing
  • DeepEval
  • Ragas
  • +1 autres: GitHub Actions CI/CD
  • < 15 ms

    temps de réponse sur succès de cache

    cible
  • 0.96

    seuil cosinus pour la résolution par la cache

    cible
  • 5%

    plafond d'hallucination qui bloque une PR

    cible
  • ~65%

    de réduction du coût d'inférence grâce à la cache

    cible

Produit phare · Code source ouvert

NextBlock CMS: un CMS full-stack natif IA, construit de bout en bout.

Les générateurs par prompt vous remettent du code à héberger et à rapiécer. WordPress vous remet des plugins à surveiller. NextBlock transforme des blocs de contenu typés dans PostgreSQL en un site web qu'une équipe entière peut faire tourner: un éditeur de style Notion pour les rédacteurs, des React Server Components pour le site public et un serveur MCP pour que les agents de codage construisent des pages avec le protocole qu'ils parlent déjà.

Créateur, concepteur et développeur principal

Le CMS full-stack natif IA et à code source ouvert pour Next.js 16, Supabase et Tailwind CSS.

C'est le projet qui compile tout le reste de cette page dans une seule base de code: conception de schéma relationnel et sécurité au niveau des lignes, un éditeur que des gens non techniques utilisent vraiment, du commerce où circule de l'argent réel, du routage de modèles avec solutions de repli, un serveur MCP aux outils typés, une CLI, un pipeline de publication pour huit paquets et un parcours de déploiement qui ne demande à l'utilisateur rien d'autre qu'un compte administrateur.

C'est aussi là que la thèse de l'IA appliquée est mise à l'épreuve auprès d'utilisateurs réels. Cortex AI ne greffe pas un robot conversationnel sur un CMS. Les agents modifient le contenu par des arguments d'outils Zod stricts, les outils de mutation demandent confirmation avant de s'exécuter, les brouillons sont préparés de façon non destructive et les clés sont chiffrées au repos.

version
v0.21.3
licence
Noyau AGPL-3.0-or-later, modules premium à code source disponible
depuis
Première publication npm en octobre 2025. Dépôt public en janvier 2026.
npm create nextblock@latest

Réinitialisé toutes les 15 minutes. Accès démo: demo@nextblock.dev / password

Chaque chiffre est public et daté. Rien ici n'est estimé.

  • 200k+

    lignes de TypeScript

    Décompte des lignes du dépôt, instantané de juin 2026: 115 944 lignes de code TS et 88 666 lignes TSX

  • 8

    paquets npm à une seule version

    create-nextblock et @nextblock-cms/{ui, utils, db, editor, sdk, ecom, cortex} en 0.21.3

  • 191

    versions de la CLI depuis oct. 2025

    Historique des versions de create-nextblock sur le registre npm

  • 11.5k

    téléchargements de la CLI en 30 jours

    Décomptes de téléchargements npm, du 8 septembre au 7 octobre 2026

  • 100 / 100

    Lighthouse, les quatre catégories

    Build de production: 0,3 s FCP, 0,8 s LCP, 0 ms TBT, 0 CLS

  • 146

    fichiers de tests Vitest

    Arborescence du dépôt, octobre 2026

  • 56

    outils MCP exposés aux agents

    Fiche du serveur MCP en ligne sur cms.nextblock.dev, 9 octobre 2026

  • 620+

    commits

    GitHub, branche master, octobre 2026

  • Des blocs comme données, pas comme code

    Moteur de contenu

    Chaque bloc est une ligne JSONB dans PostgreSQL. Les pages se publient directement depuis la base de données, sans rebuild, et les éditeurs peuvent définir de nouveaux types de blocs à l'exécution.

    • Éditeur Tiptap de style Notion avec commandes slash, glisser-déposer et IA intégrée dans chaque bloc de texte, publié sous @nextblock-cms/editor.
    • 13 types de blocs intégrés, dont des sections multicolonnes imbriquées, des formulaires, des grilles de produits, le panier et le passage à la caisse.
  • Le schéma est la source de vérité

    Modèle de données et de sécurité

    Postgres Supabase avec une couche de sécurité au niveau des lignes consolidée, des migrations en avant seulement et des secrets chiffrés avant d'atteindre une ligne.

    • Trois rôles (ADMIN, WRITER, USER) appliqués par un déclencheur de base de données qui promeut la première inscription au rang d'administrateur, de sorte que chaque installation compte exactement un administrateur garanti.
    • RLS sans avertissement dans Supabase Advisor: une politique permissive par rôle et par commande, appels auth enveloppés dans (select ...) pour n'être évalués qu'une fois par instruction, déclencheurs SECURITY DEFINER révoqués pour anon et authenticated.
  • Les agents comme éditeurs de plein droit

    Cortex AI et le serveur MCP

    Le CMS est un serveur MCP. Claude Code, Cursor, Codex ou tout autre client peut lire le schéma et écrire des pages par Streamable HTTP avec un jeton bearer à portée limitée.

    • 56 outils sur la fiche du serveur en ligne, de create_page_layout et publish_content_draft à describe_database_schema et translate_content_bulk. Inscrit au registre MCP officiel sous dev.nextblock/nextblock; chaque site sert /llms.txt et /.well-known/mcp/server-card.json.
    • Les outils de mutation renvoient d'abord une phrase de confirmation et ne s'exécutent qu'après l'accord de l'utilisateur. Les annotations d'outils déclarent les indices destructive, idempotent et read-only.
  • De l'argent réel, des cas limites réels

    Commerce Pro

    Un module premium avec deux fournisseurs de paiement, tarification multidevise, soldes planifiées, zones d'expédition, taxes, inventaire et commandes, verrouillé par activation de paquet.

    • Les produits physiques passent à la caisse par Stripe, les produits numériques par Freemius; les paniers mixtes sont rejetés au niveau de l'API.
    • Multidevise avec prix par devise, rafraîchissement des taux de change et cinq modes d'arrondi, dont le prix psychologique.
  • Zéro variable d'environnement

    Distribution et expérience développeur

    Un clic sur Vercel, une commande en local, ou laissez un agent de codage faire l'installation. Les mises à jour fusionnent l'amont sans casser les modifications locales.

    • Déploiement Vercel en un clic: l'intégration Supabase Marketplace provisionne la base de données et injecte les clés avant le premier build. L'utilisateur ne remplit rien d'autre qu'un compte administrateur.
    • Le mode Docker autohébergé démarre Postgres, GoTrue, PostgREST, Kong, MinIO et l'application en une commande, sans aucun compte infonuagique.
  • 100 / 100, pas un plugin

    La performance par défaut

    Des scores Lighthouse parfaits sur le build de production parce que les valeurs par défaut sont les bonnes: rendu côté serveur, AVIF/WebP avec cache d'un an, CSS critique intégré en ligne, imports élagués par tree-shaking.

    Rapport Lighthouse de NextBlock CMS affichant 100 en Performance, Accessibilité, Bonnes pratiques et SEO
    Build de production. 0,3 s de First Contentful Paint, 0,8 s de Largest Contentful Paint, 0 ms de Total Blocking Time, 0 de Cumulative Layout Shift.
    • Les routes publiques de pages, d'articles et de produits sont des React Server Components; les composants client sont réservés au panier, au passage à la caisse, aux formulaires et au tableau de bord du CMS.
    • 0,3 s de First Contentful Paint, 0,8 s de Largest Contentful Paint, 0 ms de Total Blocking Time, 0 de Cumulative Layout Shift.

Pile technologique

  • Next.js 16
  • React 19 Server Components
  • TypeScript
  • Supabase (Postgres, GoTrue, Storage)
  • Tailwind CSS v4
  • Tiptap 3
  • Nx 23
  • Vitest
  • Zod 4
  • Vercel AI SDK
  • OpenRouter
  • Model Context Protocol
  • Stripe
  • Freemius
  • Cloudflare R2 / MinIO
  • Docker
  • Vercel
  • GitHub Actions

Chronologie

  1. Oct. 2025

    Première version de create-nextblock sur npm

  2. Janv. 2026

    Dépôt public sous nextblock-cms

  3. Sept. 2026

    v0.21.3 sur les huit paquets

  4. Oct. 2026

    Fiche du serveur MCP en ligne, flux de publication au registre en place

Ce que ce projet démontre

Architecture de bases de données
Migrations en avant seulement, base de référence condensée, RLS avec politiques validées par l'Advisor, tables de révisions et de brouillons, et stockage de blocs JSONB avec contraintes CHECK.
Ingénierie en IA appliquée
Un serveur MCP avec outils de mutation soumis à confirmation, appels d'outils typés, diffusion SSE, routage de modèles avec repli vers des modèles gratuits et stockage chiffré des clés.
Expérience produit et développeur
Un parcours de déploiement sans variables d'environnement, une CLI à 191 versions, une commande de mise à jour par fusion à trois voies et un bac à sable qui se réinitialise toutes les 15 minutes.
Paiements et surfaces de conformité
Passage à la caisse Stripe et Freemius, webhooks, arrondi multidevise, soldes planifiées, taxes et zones d'expédition.
Ingénierie de la performance
100 / 100 à Lighthouse sur le build de production, avec rendu côté serveur, optimisation des images et CSS critique par défaut.
Gouvernance de projet à code source ouvert
Noyau AGPL, fichiers CONTRIBUTING, SECURITY et code de conduite, guides pour agents dans .agent/skills, et huit paquets publiés de concert.

Travail web en production

Des sites web et des boutiques en ligne depuis 2004.

Avant les modèles de fondation, il y avait des boutiques en ligne, des systèmes de contenu et des pages de campagne qui devaient fonctionner le jour du lancement. Une sélection, regroupée par usage. Le travail accompli en emploi est attribué à l'employeur; tout le reste est indépendant.

Travail en emploi
Réalisé comme développeur web principal chez New Roots Herbal Inc. Ces propriétés web appartiennent à l'entreprise.
Indépendant
Produits personnels, mandats clients et expérimentations. Les miens, du début à la fin.
Capture d'écran de newrootsherbal.com: refonte complète de la plateforme
PlateformeTravail en emploiLangues EN / FR

newrootsherbal.com: refonte complète de la plateforme

Reconstruction complète de la présence web d'un fabricant de produits de santé naturels établi depuis 40 ans, sur Laravel 13: un CMS PHP sur mesure et une boutique en ligne, tous deux écrits à partir de zéro pour remplacer des dépendances tierces héritées.

  • Système de gestion de contenu sur mesure pour les produits, les pages et les campagnes, conçu pour l'équipe marketing qui l'utilise chaque jour.
  • Boutique en ligne avec catalogue, panier et passage à la caisse, ainsi que les outils de gestion interne qui la font tourner.
  • Localisateur de magasins bâti sur l'API Google Maps et système d'inventaire en temps réel avec synchronisation de base de données sans aucune défaillance.
  • Migration sans interruption de service vers une infrastructure correctement dimensionnée, réduisant les coûts d'hébergement de plus de 40 %.
  • Laravel 13
  • PHP
  • MySQL
  • Blade
  • JavaScript
  • Google Maps API
  • Linux VPS
Visiter newrootsherbal.com (s'ouvre dans un nouvel onglet)

Microsites de campagne et d'éducation

Dix-huit pages d'atterrissage pour les gammes de produits et les thèmes de santé de New Roots Herbal: des microsites Next.js autonomes sur leurs propres sous-domaines, plus des pages servies par la plateforme Laravel. Chacune est un entonnoir mesuré, conçu pour être lancé vite et convertir.

18 pages en ligne

Travail indépendant

Produits personnels, mandats clients et expérimentations. Les miens, du début à la fin.

  • Capture d'écran de Ryūgū: Dix nuits vers le palais du Dragon
    PersonnelIndépendant

    Ryūgū: Dix nuits vers le palais du Dragon

    Un compagnon de voyage par chapitres pour un périple de onze jours autour du Japon et de Jeju: l'itinéraire, les légendes de dragons derrière chaque port, un programme jour par jour, l'étiquette, des phrases et du vocabulaire. Conçu d'abord comme une expérience de lecture.

    • Next.js
    • React
  • Capture d'écran de Traducteur de Thieves' Cant
    PersonnelIndépendantLangues EN / FR

    Traducteur de Thieves' Cant

    Le compagnon du roublard de D&D 5e: traduisez l'anglais ou le français en Thieves' Cant, avec un dictionnaire, des symboles de guilde et des signes de vagabonds. Prototypé avec v0, terminé à la main.

    • Next.js
    • React
    • v0
  • Capture d'écran de Civalgo Punch
    ExpérimentationIndépendant

    Civalgo Punch

    Un système de pointage à l'arrivée et au départ en temps réel pour les travailleurs de chantier: un portail pour les travailleurs et un tableau de bord superviseur qui montre qui est sur le chantier en ce moment. Un exercice technique, gardé en ligne pour la démonstration.

    • Next.js
    • React
    • Vercel
  • Capture d'écran de Guide des hooks React
    ExpérimentationIndépendant

    Guide des hooks React

    Une référence interactive pour chaque hook React, de useState à useImperativeHandle, avec des exemples en direct et un sélecteur de thème. Un bac à sable pédagogique, gardé en ligne pour la démonstration.

    • Next.js
    • React
    • Vercel
  • Capture d'écran de MusiqueSD
    Site clientIndépendantLangues FR / EN

    MusiqueSD

    Site vitrine bilingue pour un studio d'enregistrement montréalais qui fait aussi de l'animation DJ et d'événements, de la location d'équipement et des cours de musique en ligne, avec un parcours de demande de soumission et une galerie.

    • Next.js
    • React
  • Capture d'écran de PcSquad
    Entreprise personnelleIndépendantLangues FR / ENFondée en 2012

    PcSquad

    Ma première entreprise : un atelier régional de réparation d'ordinateurs et de création de sites web que j'ai fondé et dirigé comme propriétaire et PDG de 2012 à 2018, au service des particuliers et des PME des environs des Coteaux. Le site est toujours en ligne, bilingue, tel quel.

    • HTML
    • CSS
    • JavaScript
    • PHP

Compétences et outils

Avec quoi je travaille, et à quel point.

Près de deux cents outils, et chacun a un rôle dans un système réel, des années de consultation en 2012 jusqu'au travail actuel en IA appliquée. Survolez ou touchez une tuile pour voir où elle est utilisée et jusqu'où va l'expérience.

Toutes les catégories, groupées par domaine.

195 outils

IA appliquée et orchestration de LLM

13

Modèles frontières et ouverts

9

Recherche, vecteurs et données

11

Langages et balisage

21

Frameworks et web moderne

23

Infrastructure et systèmes

31

LLMOps et évaluation

5

Outils de développement et codage IA

21

Design et médias

19

Marketing, analytique et paiements

11

Productivité et collaboration

15

Soutien TI et sécurité

16

Parcours et évolution de carrière

Huit ans de fiabilité en production, rehaussés par l'ingénierie de l'IA appliquée.

Le plus difficile en IA d'entreprise, ce n'est pas l'appel au modèle. C'est le pipeline de données qui l'alimente, le schéma qui le contraint, le repli qui le rattrape et la télémétrie qui prouve que ça a fonctionné. C'est le travail que je fais depuis 2018, désormais orienté vers les modèles de fondation.

  1. Fondateur
    Oct. 2025 à aujourd'huiGrand Montréal, QC
    En poste

    Créateur et développeur principal

    NextBlock CMS (open source)

    Conception et développement d'un CMS open source natif IA pour Next.js 16 et Supabase, organisé en monorepo Nx: schéma de base de données et sécurité au niveau des lignes, éditeur de blocs, commerce, serveur MCP, CLI et pipeline de publication de huit paquets npm.

    • Architecture du modèle de contenu: chaque bloc est une ligne JSONB dans PostgreSQL, les types de blocs personnalisés sont des données (champs typés et schéma de mise en page protégés par des contraintes CHECK), et les pages se publient sans reconstruction.
    • Livraison de Cortex AI: un serveur MCP sur Streamable HTTP avec jetons bearer à portée limitée et 56 outils, mutations soumises à confirmation, appels d'outils typés avec Zod et diffusion SSE, routage OpenRouter avec repli vers des modèles gratuits, et stockage chiffré en AES-256-GCM des clés fournies par l'utilisateur.
    • Mise en place du parcours de déploiement sans aucune variable d'environnement: l'intégration Supabase de Vercel provisionne la base de données, les migrations unidirectionnelles s'appliquent lors de la première compilation, et l'assistant de configuration offre un repli à l'exécution.
    • Maintenance de 8 paquets npm publiés sous une version unique (0.21.3), de 146 fichiers de tests Vitest et d'une GitHub Action de synchronisation quotidienne avec l'amont. La CLI compte 191 versions publiées et 11,5 k téléchargements dans les 30 jours précédant le 7 octobre 2026.
    • Score Lighthouse de 100/100 dans les quatre catégories sur la version de production: LCP de 0,8 s, Total Blocking Time de 0 ms, Cumulative Layout Shift de 0.
    • Next.js 16
    • React Server Components
    • TypeScript
    • Supabase
    • PostgreSQL
    • Tailwind CSS v4
    • Tiptap
    • Nx
    • Vitest
    • Vercel AI SDK
    • MCP
    • Stripe
    • Docker
  2. Emploi
    Nov. 2018 à aujourd'huiVaudreuil-Dorion, QC
    En poste

    Développeur web principal et intégration de l'IA appliquée

    New Roots Herbal Inc.

    Responsable de la fiabilité en production, de l'architecture des données et de l'infrastructure de l'ensemble du parc numérique de l'entreprise, et chef de file de l'intégration de l'IA générative dans les opérations quotidiennes.

    • Architecture et déploiement d'un pipeline interne d'actifs générés par IA multimodèle (Claude, OpenAI Codex et Gemini), ramenant le délai de production des actifs du catalogue de produits de plusieurs semaines à 40 minutes par SKU: un gain de 10x en débit de production.
    • Conception d'architectures d'ingestion de données à haute disponibilité, avec consolidation des bases de données relationnelles et déploiement d'une recherche hybride (indexation lexicale creuse et vectorielle dense) sous validation Pydantic stricte, éliminant des dépendances envers des fournisseurs tiers hérités et économisant plus de 90 000 $ en licences logicielles.
    • Direction de la modernisation de l'infrastructure de plus de 30 propriétés numériques en production, avec des migrations de serveurs sans interruption de service et une réduction de plus de 40 % des coûts d'infrastructure infonuagique.
    • Conception de la télémétrie, du suivi d'attribution et d'entonnoirs de déploiement automatisé rapide, générant plus de 300 000 $ de revenus additionnels en une seule campagne de 30 jours.
    • Développement de microservices d'affaires sur mesure, dont un localisateur de magasins interne et un système de gestion des stocks en temps réel avec synchronisation de bases de données sans défaillance.
    • Laravel
    • PHP
    • MySQL
    • PostgreSQL
    • Node.js
    • Angular
    • React
    • Linux VPS
    • cPanel/WHM
    • Claude
    • Codex
    • Gemini
    • Pydantic
  3. Fondateur
    2012 à 2018Les Coteaux, QC

    Fondateur technique

    PcSquad

    Fondation et exploitation d'une firme-conseil régionale en solutions TI et en infrastructure web.

    • Gestion des livrables clients sur tout leur cycle de vie: cadrage, développement logiciel sur mesure, déploiement et soutien continu.
    • Administration de systèmes, configuration de réseaux et diagnostics matériels pour des petites et moyennes entreprises.
    • Responsable des volets financier, juridique et marketing de l'entreprise, y compris le référencement (SEO) et l'acquisition payante.
    • PHP
    • JavaScript
    • WordPress
    • Windows Server
    • Linux
    • Networking
    • Hardware Diagnostics
  4. Service militaire
    2013 à 2016BFC Valcartier, QC

    Vétéran des Forces armées

    Génie électrique et mécanique royal canadien (GEMRC)

    Discipline militaire, diagnostics électromécaniques, maintenance de systèmes de précision et exécution posée dans des conditions critiques.

    • Diagnostic et réparation de systèmes d'armes, de pièces d'artillerie et d'équipement électromécanique selon des tolérances rigoureuses.
    • Formation en soudure, en systèmes électriques, en hydraulique et en premiers soins. C'est là que j'ai appris à suivre une liste de vérification quand ça compte le plus.

Pince-sans-rire, franc, les pieds sur terre

À propos de moi: la vraie couche humaine

Nicolas Desjardins
Vraie photo. Pas générée. Légèrement compressée.

Je construis pour le web depuis 2004. En années techno, ça veut dire que j'ai survécu aux mises en page en tableaux, aux intros Flash, à la renaissance de PHP, aux guerres de frameworks JavaScript et maintenant à la ruée vers l'or de l'IA.

Je prends l'architecture, la validation de schémas et la fiabilité des bases de données très au sérieux. Moi-même? Pas tellement.

  • Je construis pour le web depuis 2004
  • En affaires depuis 2012
  • En production chez New Roots Herbal depuis 2018

La vérité sans fard

Ces chiffres sont présentés hors contexte pour que j'aie l'air bon. La transparence des données compte, alors voici la méthodologie derrière chacun.

  • 20

    Années d'études

    Calculées de la maternelle à l'université, parce que la transparence des données compte.

  • En direct

     

    Heures de soutien

    Comptées en 24/7 depuis l'ouverture de PcSquad en 2012. Le compteur tourne en direct. Moi aussi, la plupart du temps.

  • 0,00 %

    Tolérance aux hallucinations en production

    Mesurée au moment de la fusion. Le pipeline CI s'en charge pour que je n'aie pas à le faire.

  • 68,6 %

    des statistiques sur le web sont inventées

    Y compris celle-ci. Tout ce qui précède a une source.

Tests en conditions réelles

Si un modèle d'IA n'arrive pas à lire une facture ou hallucine des calculs de taxes, il n'est pas fusionné. Point final.

En dehors des fenêtres de terminal

  • Stratège de table

    D&D et Magic: The Gathering, format Commander. Je construis mes decks comme je construis mes systèmes: la redondance d'abord.

  • Fumeur de brisket au BBQ

    Quatorze heures à 107 °C. À basse température, lentement, et consigné dans un tableur.

  • Tacticien aux échecs

    Préfère les longues parties positionnelles aux feux d'artifice tactiques. Comme en production.

  • Passionné de matériel et de double démarrage

    Debian pour le travail, Windows pour les jeux, et un tiroir plein de câbles SATA dont j'aurai certainement besoin un jour.

Contact

Vous recrutez, ou le travail s'accumule? Parlons-en.

Poste permanent, contrat ou placement par votre agence : tout est bienvenu. Si les factures, les documents ou les courriels de clients s'accumulent, décrivez le problème dans vos mots et je vous dirai ce qu'il faudrait.

Ouvert aux postes permanents, contrats et mandats d'agence · Montréal, hybride ou à distance (Canada et É.-U.)

Postes visés : développeur en IA appliquée, Forward Deployed Engineer (FDE), solutions IA et développeur full-stack senior axé sur l'IA.

Pour les équipes techniques : la validation de schéma, les budgets de latence et les modes de défaillance sont des exigences, pas des détails.

Canaux directs

Envoyer un message

Tous les champs sauf l'entreprise sont requis.

Minimum 20 caractères0 / 4 000

Réponse en moins d'un jour ouvrable.