Le site utilise des statistiques minimales, hébergées dans l’UE, uniquement pour les pages anonymes et les Web Vitals. Elles ne créent pas de profils, n’enregistrent pas les sessions, ne capturent pas automatiquement les interactions et ne stockent ni cookie ni données analytiques dans le stockage local. Les URL sont envoyées sans paramètres ni fragments, et la collecte des adresses IP est désactivée dans les réglages du projet.
Vous pouvez désactiver les statistiques anonymes. Cela enregistre uniquement votre préférence de refus dans ce navigateur ; aucune donnée analytique n’est envoyée après le refus.
Le choix du thème est également conservé dans ce navigateur. Les commandes et recherches du terminal sont traitées localement ; les termes recherchés ne sont pas enregistrés dans les URL ni dans le stockage persistant.
L’exploration d’un poste transmet l’URL soumise, y compris ses paramètres, à Jina Reader. Le texte téléchargé, le PDF ou le texte collé est envoyé à Requesty puis à OpenAI pour extraire les exigences. Une demande de comparaison par exigence, avec jusqu’à six demandes en parallèle, envoie l’exigence, les récits publics de Florent et ses articles de blog publiés aux mêmes prestataires pour comparer les expériences. Changer de langue peut demander une nouvelle comparaison. Les annonces et résultats ne sont pas transmis aux statistiques. L’extraction terminée, l’URL source et les comparaisons sont conservées dans le stockage de session de cet onglet pour permettre le rechargement ; le PDF original n’y est pas conservé. Vous pouvez les effacer depuis la comparaison. La conservation par les prestataires dépend de leurs politiques et de la configuration du compte ; une absence de conservation n’est pas garantie. Cloudflare limite les demandes avec un pseudonyme de l’adresse IP, calculé avec une clé secrète et renouvelé chaque jour ; le site ne journalise pas cette adresse. Les personnes partageant une connexion peuvent partager cette limite.
Les offres avec une comparaison terminée sont conservées sur Cloudflare jusqu’à une demande de suppression. Les offres enregistrées avant la fin de la comparaison sont supprimées après 24 heures si aucun résultat n’aboutit. Toute personne disposant du lien fondé sur le contenu peut les lire ; ces liens ne sont pas privés. Les résultats sont actualisés après 28 jours sans visite, ou sur demande explicite. Les pages de comparaison enregistrées sont exclues des statistiques. Les fichiers PDF téléversés et les conversations ne sont pas conservés avec les comparaisons. Contactez Florent avec le lien de la comparaison pour demander sa suppression.
La conversation du CV utilise l’assistant IA de Florent. Sur la page de l’offre, les informations extraites et les résultats de comparaison disponibles sont aussi transmis via Requesty au modèle de réponse et au contrôle thématique TypeSafe à chaque question. Les conversations de cette page restent en mémoire et disparaissent au rechargement. Chaque question, les passages sélectionnés, l’historique de la conversation, les récits publics et les articles de blog publiés sont envoyés à Requesty puis à OpenAI pour produire une réponse. Le site ne conserve pas les conversations sur son serveur et ne les transmet pas aux statistiques. Le navigateur conserve la conversation dans le stockage de session de l’onglet, séparément pour chaque langue, jusqu’à la fermeture de l’onglet ou au démarrage d’une nouvelle conversation lorsque la limite est atteinte. Une mise à jour des connaissances réinitialise cet historique. Si ce stockage est indisponible, la conversation disparaît au rechargement. La conservation chez Requesty et OpenAI dépend de leurs politiques et de la configuration du compte ; une absence de conservation n’est pas garantie. Des limites de débit utilisent le même mécanisme de pseudonyme quotidien de l’adresse IP que l’exploration de postes. Les questions, passages sélectionnés et échanges précédents sont aussi envoyés via Requesty à TypeSafe (Jev) pour vérifier le sujet, sans les récits publics. Ce contrôle et la réponse démarrent en parallèle. La conservation chez TypeSafe dépend aussi de ses politiques. Cloudflare conserve temporairement un compteur de refus, des échéances et un verrou de requête sous un pseudonyme IP calculé avec une clé secrète, sans adresse brute ni contenu. Les pénalités expirent après 30 minutes sans refus ; une requête active peut prolonger la conservation jusqu’à son expiration. Les connexions partagées partagent le délai. Le navigateur conserve séparément l’échéance du délai dans son stockage local, partagée entre onglets, même après le démarrage d’une nouvelle conversation.
Lorsque la transcription en direct est activée, un flux ElevenLabs Scribe distinct traite aussi le son du microphone et entraîne une consommation supplémentaire. Nous demandons la désactivation des journaux, mais la conservation par Scribe dépend des conditions du compte fournisseur et reste distincte des réglages de l’agent. Les conversations vocales facultatives transmettent votre audio, les passages sélectionnés et les connaissances publiées du CV et les articles de blog publiés à ElevenLabs, qui gère la voix et les réponses. Sur la page de l’offre, les informations extraites et les résultats de comparaison disponibles sont aussi transmis à ElevenLabs au démarrage de l’appel et lorsque ce contexte change pendant l’appel. Le contexte initial de l’offre, le passage sélectionné et l’historique repris figurent dans la configuration temporaire de l’agent jusqu’à son nettoyage. L’enregistrement audio est désactivé et la conservation des conversations est réglée sur zéro jour ; cela ne garantit pas une absence totale de traitement ou de conservation par le fournisseur. Dès que la voix est utilisée, toute la conversation reste en mémoire dans la page et disparaît au rechargement. Le changement de mode transmet les messages précédents et les passages sélectionnés à ElevenLabs pour la voix, ou via Requesty au modèle de texte et au contrôle thématique pour les réponses écrites. Un cookie de navigateur partage un quota quotidien de 20 minutes entre les onglets ; effacer les cookies ou changer de navigateur le réinitialise. Des compteurs temporaires côté serveur conservent l’usage pseudonymisé et les identifiants d’appel du fournisseur, sans transcription. Chaque appel dure au maximum cinq minutes. Les conversations uniquement écrites conservent leur historique de session dans l’onglet.
~ ❯ cat PRESENTATION.md
# Introduction
Curieux, j’aime comprendre comment les choses fonctionnent et partager mes découvertes. Ce site rassemble mes projets et les idées que j’aimerais partager avec vous.
Je suis développeur full-stack, avec un intérêt particulier pour l’intelligence artificielle et, plus largement, pour la manière dont nous pouvons construire des machines utiles et intelligentes.
~ ❯ ls
~/CV.md
# Expérience et CV
CV de Florent Martineau : expérience en ingénierie logicielle, récits de projets et comparaison avec un poste, accompagnée de réponses préparées.
C’est l’invalidation du cache de nos modèles mentaux qui m’importe le plus. C’est là que je vois vraiment le retard.
Aide_
Commandes
ls
Afficher les fichiers du dossier actuel.
sitemap
Afficher toute l’arborescence.
cd ~/blog
Changer de répertoire courant.
cd ..
Remonter au dossier parent.
cd ~
Revenir au dossier d’accueil.
cat ~/CV.md
Afficher un fichier dans le terminal.
open ~/CV.md
Ouvrir un fichier comme page web.
whoami
Afficher le nom d’utilisateur.
search data pipelines
Trouver les fichiers contenant tous vos mots, dans tous les dossiers. La recherche porte sur les titres, chemins et contenus.
clear
Effacer l’affichage en conservant le dossier et l’historique des commandes.
theme light|dark|system
Choisir un thème ou suivre celui de l’appareil.
lang en|fr|eo
Changer la langue de la page. Utiliser help lang pour voir les langues disponibles.
pwd
Afficher le chemin du dossier actuel.
help / ?
Afficher cette aide.
Clavier
Enter
Exécuter la commande.
Tab
Compléter une commande ou un chemin. Sur une ligne vide, insérer help.
↑ / ↓
Parcourir les commandes précédentes. Descendre après la dernière restaure le brouillon.
Escape
Fermer le terminal en conservant l’historique et le brouillon.
~ est votre répertoire personnel. Utilisez un chemin relatif ou commençant par ~/. Tapez help <commande> pour connaître son utilisation.
Florent Martineau Ingénieur logiciel full-stack Je construis des systèmes d’IA, de la démo à la production. Mon parcours réunit la construction de produits data et d’agents vocaux, l’analytique et l’enseignement de SQL. LiveKit · SST · Next.js · tRPC · React Query · SQL · dbt · Stitch · BigQuery · Tableau · Échanges clients Sorbonne Université · Première année de licence à distance (L1-EAD), en cours · Sept. 2026 - Présent
Électronique, physique et mathématiques.
EDHEC Business School · Master in Management · 2013 - 2017
5e sur environ 800 élèves en deuxième année à Lille.
Mémoire sur les limites de la décision fondée sur les données, noté 17/20.
Développement de Querubylder, un outil Ruby pour générer des requêtes SQL à partir des données et des filtres sélectionnés.
IIM Ahmedabad · Échange universitaire dans le cadre du Master in Management à l’EDHEC · Automne 2016 Guided Energy Founding Engineer, premier salarié Juil. 2023 - Présent Développement d’un prototype pour Sixt permettant de planifier la recharge des véhicules électriques avant leur location, de l’infrastructure serverless sur AWS à l’interface web utilisée par les équipes en agence.
Résolution des problèmes de saturation de la base de données, qui recevait les données d’environ 10 000 véhicules et de centaines de chargeurs, en regroupant les écritures grâce à une file d’attente SQS.
Développement d’un agent IA pour suivre les transports, relancer les transporteurs et récupérer les preuves de livraison, puis amélioration avec l’équipe. Environ 50 % des preuves de livraison collectées automatiquement, avec des variations selon les clients.
Automatisation de l’import des données clients, permettant à l’équipe Customer Success de réaliser les intégrations sans intervention d’un développeur. Une fois les exemples attendus préparés, l’agent génère et teste les transformations SQL en environ 10 minutes.
Création d’outils pour faire évoluer les instructions des agents IA : suivi des versions des prompts, revue des modifications, tests avant déploiement et retour possible à une version précédente. Freelance Data Engineer Oct. 2022 - Juin 2023 PepsiCo — Création d’un suivi consolidé des dépenses AWS et Snowflake, de la collecte des données au tableau de bord, pour permettre à chaque équipe de suivre son budget. Identification de pistes de réduction des coûts en rapprochant les ressources utilisées des besoins réels.
OpenClassrooms — Fiabilisation des indicateurs du parcours apprenant, qui présentaient parfois plus de 10 % d’écart entre tableaux de bord. Construction d’une source de données commune avec dbt et validation avec les équipes métier pour alimenter les analyses jusqu’au Comex.
ManoMano — Accompagnement des équipes marketing en SQL pendant 4 mois, à partir de leurs propres analyses : résolution des difficultés rencontrées et explications pas à pas pour développer leur autonomie. Datanow CTO et cofondateur Mars 2022 - Sept. 2022 Participation à 150 entretiens utilisateurs, dont 80 % auprès de personnes issues de mon réseau, pour comprendre leurs besoins et orienter l’offre vers une stack data clé en main.
Participation aux appels commerciaux et à la stratégie de lancement de l’offre (go-to-market). L’entreprise a acquis 4 premiers clients, pour plus de 1 000 € de revenus mensuels récurrents.
Construction et déploiement des solutions data pour ces clients, de la connexion des sources aux tableaux de bord. Automatisation de l’infrastructure sur Google Cloud et adaptation des traitements aux besoins métier.
Développement d’un prototype d’interface visuelle pour transformer les données sans écrire de SQL, avec un développeur frontend. Génération des requêtes fonctionnelle, mais outil encore interne au moment du départ. Ankorstore Senior Data Analyst Avr. 2021 - Févr. 2022 Mise en place des premières bases de l’analyse de données chez Ankorstore, avec dbt et des tableaux de bord pour suivre les principaux indicateurs de l’entreprise.
Rapprochement de dizaines de milliers de transactions Stripe avec les commandes du site pour préparer le reporting comptable. Résolution des écarts avec la finance et création de tests pour fiabiliser les calculs.
Réalisation d’analyses pour les reportings investisseurs et la préparation des levées de fonds : évolution des achats après la première commande, volume d’affaires et coûts des avantages commerciaux. ManoMano Senior Data Analyst Août 2017 - Mars 2021 Identification d’un potentiel estimé à 150 M€ de volume d’affaires supplémentaire par an : analyse présentée au CODIR et utilisée pour orienter la feuille de route commerciale.
Conception et animation du parcours SQL « Data Ninja », puis accompagnement de 2 formateurs, au sein d’un dispositif ayant formé environ 400 collaborateurs.
Développement du reporting de référence pour le pilotage de l’entreprise : indicateurs définis avec les métiers, utilisés chaque semaine par le CODIR ; migration des traitements vers Airflow.
Création d’un système d’alertes métier avec calcul des indicateurs chaque minute, permettant de repérer des parcours utilisateurs défaillants.
Contribution au recrutement de l’équipe Data Analyst, soit environ 6 personnes : conception des tests SQL et conduite des entretiens techniques. Encadrement de 2 stagiaires et accompagnement des profils juniors. Amazon Business Analyst, stage Févr. 2017 - Août 2017 Étude de faisabilité de la livraison en véhicules électriques pour répondre aux restrictions de circulation : analyse des contraintes, simulations des coûts et recommandations utilisées par la direction.
Automatisation de la répartition des besoins en véhicules et des emails aux transporteurs avec Excel/VBA, avec un gain estimé de plusieurs heures par jour pour une analyste.
Prospection téléphonique de centaines d’entreprises de transport et évaluation de leur capacité à répondre aux besoins d’Amazon, avant transmission des contacts qualifiés au responsable des négociations. eBay / Marktplaats Product Analyst, stage Déc. 2015 - Juil. 2016 Création d’un tableau de bord centralisant les résultats des A/B tests, avec Tableau et BigQuery. Accès aux résultats en quelques secondes, contre plusieurs heures de préparation manuelle auparavant — un ordre de grandeur estimé.
Réalisation d’analyses pour les équipes produit et mise à disposition de résultats comparables entre tests pour faciliter leur interprétation et les décisions produit.
Dossier d’accueil. Choisissez un fichier ou un dossier ci-dessus.