The site uses privacy-minimal, EU-hosted analytics for anonymous page views and Web Vitals only. It does not create profiles, record sessions, autocapture interactions, or store analytics cookies or analytics data in local storage. URLs are sent without query strings or fragments, and IP capture is disabled in the project settings.
You can disable anonymous analytics. This stores only your opt-out preference in this browser; no analytics data is sent after opting out.
Your theme preference is also saved in this browser. Terminal commands and searches are processed locally; search terms are not saved in URLs or persistent storage.
Exploring a role sends the submitted URL, including its query parameters, to Jina Reader. Downloaded text, the PDF, or pasted text is sent to Requesty and then OpenAI to extract requirements. One comparison request per requirement, with up to six running in parallel, sends the requirement, Florent’s public accounts and his published blog articles to the same providers to compare experience. Switching language may request another comparison. Postings and results are not sent to analytics. Completed extraction, the source URL and comparisons are kept in this tab’s session storage for reloads; the original PDF is not stored there. You can clear them from the comparison. Provider retention depends on their policies and account configuration; zero retention is not guaranteed. Cloudflare limits requests using a secret-keyed IP pseudonym that changes daily; the site does not log the address. People sharing a connection may share the limit.
Completed job descriptions and comparisons are stored on Cloudflare until deletion is requested. Descriptions saved before a comparison finishes expire after 24 hours if no result completes. Anyone with their content-hash link can read them; these links are not private. Saved results refresh after 28 days without a visit, or on an explicit refresh. Saved comparison pages are excluded from analytics. Uploaded PDF files and conversations are not retained with comparisons. Contact Florent with the comparison URL to request deletion.
The résumé conversation uses Florent’s AI assistant. On the job page, extracted job details and available comparison results also go through Requesty to the answer model and TypeSafe topic check with each question. Job-page conversations stay in page memory and clear on reload. Each question, selected passages, conversation history, public accounts and published blog articles are sent through Requesty to OpenAI to generate an answer. The site does not store conversations on its server or send them to analytics. The browser keeps the conversation in the tab’s session storage, separately for each language, until the tab closes or you start a new conversation after reaching its limit. Knowledge updates reset this history. If storage is unavailable, reloading clears the conversation. Retention at Requesty and OpenAI depends on their policies and account configuration; zero retention is not guaranteed. Rate limits use the same daily IP pseudonym mechanism as job exploration. Questions, selected passages and previous exchanges also go through Requesty to TypeSafe (Jev) to check the topic, without the public accounts. Checking and answering start in parallel. TypeSafe retention also depends on its policies. Cloudflare temporarily stores a refusal count, deadlines and a request lease under a secret-keyed IP pseudonym, without the raw address or message content. Penalties expire after 30 minutes without a refusal; an active request can extend storage until its lease expires. Shared connections share the cooldown. The browser separately keeps the cooldown expiry in local storage, shared across tabs, even after starting a new conversation.
When live captions are enabled, a separate ElevenLabs Scribe stream also processes microphone audio and incurs additional usage. We request disabled logging, but Scribe retention depends on the account’s provider terms and is separate from the agent’s retention settings. Optional voice conversations send microphone audio, selected passages and the published résumé knowledge and blog articles to ElevenLabs, which handles speech and replies. On the job page, extracted job details and available comparison results are also sent to ElevenLabs when a call starts and when that context changes during the call. The initial job context, selected passage and resumed history are held in the temporary call-agent configuration until cleanup. Saved audio is disabled and conversation retention is configured to zero days; this does not guarantee zero provider processing or retention. Once voice is used, the entire conversation stays in page memory and is cleared on reload. Switching modes sends prior messages and selected passages to ElevenLabs for voice, or through Requesty to the text model and topic guardrail for typed replies. A browser cookie shares a 20-minute daily allowance across tabs; clearing cookies or changing browsers resets it. Short-lived server counters store pseudonymous usage and provider call identifiers, not transcripts. Calls last at most five minutes. Text-only conversations retain their existing tab-session history.
~ ❯ cat INTRO.md
# Introduction
I’m curious: I love understanding how things work and sharing my discoveries. This site brings together my projects and the ideas I would like to share with you.
I’m a full-stack developer with a particular interest in artificial intelligence and, more broadly, in how we can build useful, intelligent machines.
~ ❯ ls
~/RESUME.md
# Experience & résumé
Florent Martineau’s résumé: software engineering experience, project accounts, and a curated role comparison with prepared answers.
It’s the cache invalidation of mental models that I care the most about. That’s where I really see the lag.
Help_
Commands
ls
List files in this folder.
sitemap
Show the whole file tree.
cd ~/blog
Change the current directory.
cd ..
Go up one folder.
cd ~
Return to the home folder.
cat ~/RESUME.md
Print a file in the terminal.
open ~/RESUME.md
Open a file as a webpage.
whoami
Print the user name.
search data pipelines
Find files containing all your words, across every folder. Searches titles, paths and content.
clear
Clear the output. Keep your folder and command history.
theme light|dark|system
Choose a theme, or follow your device.
lang en|fr|eo
Switch the page language. Run help lang to see the available languages.
pwd
Show the current folder.
help / ?
Show this reference.
Keyboard
Enter
Run your command.
Tab
Complete a command or path. On an empty line, insert help.
↑ / ↓
Recall commands. Down past the latest restores your draft.
Escape
Close the terminal. Keep the transcript and draft.
~ is your home directory. Use relative paths or paths starting with ~/. Run help <command> for usage.
Florent Martineau Full-stack software engineer I build AI systems, from demo to production. Experience building voice-agent and data products, leading analytics work, and teaching SQL. LiveKit · SST · Next.js · tRPC · React Query · SQL · dbt · Stitch · BigQuery · Tableau · Customer conversations Sorbonne Université · First-year distance-learning licence program (L1-EAD), in progress · Sep 2026 - Now
Electronics, physics and mathematics.
EDHEC Business School · Master in Management · 2013 - 2017
Ranked 5th out of around 800 students in the second year in Lille.
Thesis on the limits of data-driven decision-making, graded 17/20.
Developed Querubylder, a Ruby tool for generating SQL queries from selected data and filters.
IIM Ahmedabad · University exchange as part of the Master in Management at EDHEC · Fall 2016 Guided Energy Founding Engineer, first employee Jul 2023 - Now Developed a prototype for Sixt to schedule electric vehicle charging before rental, from serverless infrastructure on AWS to the web interface used by branch teams.
Resolved database saturation issues caused by incoming data from approximately 10,000 vehicles and hundreds of chargers by batching writes using an SQS queue.
Developed an AI agent to track shipments, follow up with carriers and retrieve proofs of delivery, then improved it with the team. Approximately 50% of proofs of delivery collected automatically, with variations across clients.
Automated client data imports, enabling the Customer Success team to carry out integrations without developer intervention. Once the expected examples have been prepared, the agent generates and tests SQL transformations in approximately 10 minutes.
Created tools to evolve AI agent instructions: prompt version tracking, change review, testing before deployment and the ability to revert to a previous version. Freelance Data Engineer Oct 2022 - Jun 2023 PepsiCo — Created consolidated tracking of AWS and Snowflake spending, from data collection to the dashboard, to enable each team to monitor its budget. Identified potential cost reductions by comparing resources used with actual needs.
OpenClassrooms — Improved the reliability of learner journey metrics, which sometimes showed discrepancies of more than 10% between dashboards. Built a shared data source with dbt and validated it with business teams to support analyses up to Executive Committee level.
ManoMano — Coached marketing teams in SQL for 4 months using their own analyses: resolving difficulties encountered and providing step-by-step explanations to develop their autonomy. Datanow CTO and co-founder Mar 2022 - Sep 2022 Participated in 150 user interviews, 80% of which were with people from my network, to understand their needs and steer the offering toward a turnkey data stack.
Participated in sales calls and the offering’s launch strategy (go-to-market). The company acquired its first 4 clients, generating more than €1,000 in monthly recurring revenue.
Built and deployed data solutions for these clients, from connecting sources to dashboards. Automated infrastructure on Google Cloud and adapted processing to business needs.
Developed a visual interface prototype for transforming data without writing SQL, alongside a frontend developer. Query generation was functional, but the tool was still internal at the time of departure. Ankorstore Senior Data Analyst Apr 2021 - Feb 2022 Established the initial foundations for data analysis at Ankorstore, using dbt and dashboards to track the company’s key metrics.
Reconciled tens of thousands of Stripe transactions with website orders to prepare accounting reports. Resolved discrepancies with finance and created tests to make calculations more reliable.
Conducted analyses for investor reporting and fundraising preparation: purchasing trends after the first order, business volume and the costs of commercial incentives. ManoMano Senior Data Analyst Aug 2017 - Mar 2021 Identification of an estimated potential €150 million in additional annual business volume: analysis presented to the executive committee and used to guide the commercial roadmap.
Design and delivery of the “Data Ninja” SQL learning programme, followed by support for 2 trainers, as part of an initiative that trained approximately 400 employees.
Development of the reference reporting used to steer the company: metrics defined with business teams and used weekly by the executive committee; migration of processing workflows to Airflow.
Creation of a business alerting system with metrics calculated every minute, enabling the identification of malfunctioning user journeys.
Contribution to recruitment for the Data Analyst team, approximately 6 people: design of SQL tests and conduct of technical interviews. Supervision of 2 interns and support for junior staff. Amazon Business Analyst, internship Feb 2017 - Aug 2017 Feasibility study of delivery using electric vehicles to address traffic restrictions: analysis of constraints, cost simulations and recommendations used by management.
Automation of vehicle requirement allocation and emails to carriers using Excel/VBA, with estimated savings of several hours per day for one analyst.
Telephone prospecting of hundreds of transport companies and assessment of their ability to meet Amazon’s needs, before passing qualified contacts to the manager responsible for negotiations. eBay / Marktplaats Product Analyst, internship Dec 2015 - Jul 2016 Creation of a dashboard centralizing A/B test results, using Tableau and BigQuery. Access to results in a few seconds, compared with several hours of manual preparation previously — an estimated order of magnitude.
Conducting analyses for product teams and making comparable results available across tests to facilitate interpretation and product decisions.