# Adrien Poirson > Adrien Poirson is a senior full-stack engineer in Vancouver with over twelve years on the front end of data products: analytics dashboards, reporting tools and data explorers, built in React and TypeScript. Adrien Poirson is a full-stack engineer at PolicyReporter, based in Vancouver, Canada. Works in English and French, remote since 2018, with a Master in Information Systems and Software Development from UT1 Capitole, France. Contact: https://adrien-poirson.dev/contact/ · LinkedIn: https://www.linkedin.com/in/adrienpoirson · GitHub: https://github.com/adrien-poirson ## Pages - [Home](https://adrien-poirson.dev/): introduction, what Adrien builds, selected work and working with AI. - [Work](https://adrien-poirson.dev/work/): every role, newest first, and personal projects. - [About](https://adrien-poirson.dev/about/): background and principles. - [Blog](https://adrien-poirson.dev/blog/): articles, published on Medium. - [Contact](https://adrien-poirson.dev/contact/): how to get in touch. - [Resume](https://adrien-poirson.dev/resume/): the resume, with a PDF to download at https://adrien-poirson.dev/ResumeAdrienPoirson.pdf. ## What Adrien builds ### Dashboards and data visualization Analytics dashboards, reporting tools and data explorers for legal, contact-centre and research platforms. Tables with millions of rows that still feel instant, charts that answer a question, and a pivot table built from scratch when no library would do. ### Web applications Customer-facing products and internal tools in React and TypeScript, from the first component to the deploy pipeline, with the back end and the database when the project needs them. ### Design systems and component libraries Shared UI libraries that keep a product consistent and a team fast. I have built or maintained one at nearly every company I have worked for. ### Performance and modernisation Legacy code brought up to date and slow pages made quick: virtualization, smarter data fetching, class components turned into hooks, Java and GWT replaced with React. ## Experience Newest first. ### PolicyReporter — Full-stack engineer Present · Vancouver, BC (remote) · https://www.policyreporter.com/ Leading the front end of a healthcare coverage-policy platform. PolicyReporter tracks healthcare coverage policy: a great deal of structured data, and people who need the right part of it fast. I co-lead the front end’s technical direction: we set the code standards and decide the stack, which libraries we adopt, keep or retire. Stack: React, PHP, Amazon Quick Suite, Component library - Created from scratch, and maintain, the component library 30 engineers build with. No bug reported against it, and feedback addressed as it comes in. - Re-implementing legacy PHP pages in modern React. - Dashboards with Amazon Quick Suite, through custom integration code because its SDK was too recent for our PHP version, with automatic user provisioning. ### CS Disco — Software architect, reporting Jan 2022 – Aug 2024 · Austin, Texas (remote) · https://csdisco.com/ A reporting product for legal teams, built from the ground up. DISCO uses AI, cloud computing and data analytics to change how law is practised. A friend already worked there, and the mission made the decision easy. I joined to build Organization Metrics, a reporting product that shows customers how their whole organisation uses the platform, and I built it from the ground up: the architecture, the library choices and most of the code, with one back-end engineer alongside. Starting from scratch meant I could use what I thought was right: TypeScript, React with hooks, GraphQL for data, and virtualization so the tables stay quick however much data comes back. The hard part was never the features. It was keeping a page that can show a year of activity across a large firm feel instant. Stack: TypeScript, React, GraphQL, react-window, react-aria - Two views, data usage and events, with interactive tables, advanced filtering and sorting, search with highlighted results, and export to CSV and DOC. - A new video player on the HTML5 video element, driven by a small imperative API so it could evolve without breaking changes. - Contributions to the in-house UI library built on react-aria, and older pages moved from class components to hooks, with slow screens made fast through virtualization and better data fetching. More: [Organization Metrics in the DISCO help centre](https://support.csdisco.com/hc/en-us/articles/43618862278925-Organization-Metrics) ### Global Relay — Front-end engineer, UI library Sep 2021 – Dec 2021 · Vancouver, BC (remote) · https://www.globalrelay.com/ A short contract on the component library of a compliance platform. It came between two longer roles. I extended the component library of a large compliance and archiving platform and moved legacy screens onto it, so that the product looked and behaved the same everywhere and the team had one set of components to maintain. Stack: Component library, Legacy refactoring ### Calabrio — Principal front-end developer, Data Explorer Oct 2017 – Sep 2021 · Vancouver, BC (remote) · https://www.calabrio.com/ Data Explorer, a BI tool rebuilt in React, with a pivot table built from scratch. Calabrio makes workforce-optimisation software for contact centres, and joining them fulfilled a long-held ambition to work for an American company. I was hired as the principal front-end developer to modernise Data Explorer, their BI tool: replace the Java and GWT codebase with a React front end and reach feature parity. I designed the architecture and chose the libraries, and as more developers joined I led the team for several months, setting coding standards, reviewing code and mentoring. The hardest problem was the pivot table. Nothing off the shelf could be customised far enough, so I built it from scratch on react-virtualized. It ingests a tree of data and renders cells and their children on the fly while keeping the hierarchy intact, with search, filtering, drill-down and inline interactions on top, and it stays responsive with millions of data points. It pushed everything I knew about front-end performance. Stack: React 16, Victory, react-virtualized, styled-components, ImmutableJS, Material UI - Customisable dashboards with many chart types, tables and reporting, built with React 16, Victory, react-virtualized, styled-components and ImmutableJS. - A custom component library on Material UI and styled-components, used across the product. - Code standards, library choices, code reviews and mentoring as the team grew. ### Cumul8 — Front-end engineer Jan 2016 – Nov 2017 · Vancouver, BC Real-time dashboards for a data analytics and IoT platform. Cumul8 was a data analytics and IoT platform that helped companies monitor, analyse and act on their data. This is where front-end development clicked for me. I worked alongside people who shared what they knew freely, grew faster than anywhere before or since, and built my first real-time dashboards and interactive charts. Stack: React 15, React Native, Victory, ImmutableJS, react-virtualized - The platform front end in React 15, Victory, ImmutableJS and react-virtualized. - A library of reusable React components that kept the product consistent and the team quick. - A React Native app that brought key features and an alert system to mobile. ### Thinkingbox — Front-end developer Jul 2015 – Nov 2015 · Vancouver, BC · https://thinkingbox.com/ Mobile-first marketing sites in React for film releases. My first job in Canada, for releases among them The Gift and Secret in Their Eyes. Short deadlines, a lot of motion, and an education in making things work on every phone. Stack: React, Mobile-first ### JCOMMOPS — Software developer Apr 2014 – Sep 2014 · France · https://www.ocean-ops.org/ A data management application for ocean-observation programmes. Where it started, at the end of my master’s, for the international programmes coordinated by JCOMMOPS, now OceanOPS. A desktop-like interface with custom widgets, dashboards and charts, and a map widget for exploring and downloading geospatial data. My first dashboards, and the first time I saw how much a clear interface changes what people can do with their data. Stack: Dashboards, Charts, Geospatial maps ## Personal projects ### Second brain Ongoing My notes, my agents and my apps, on a server I own, encrypted wherever they travel. Everything I learn and plan lives in one Obsidian vault of plain Markdown, and it left iCloud for hardware I own. Self-hosted LiveSync encrypts each note on my MacBook or iPhone before it syncs, near instantly, through a CouchDB on the server, and a headless client there writes the vault out as plain files. Those get a Git commit every 15 minutes, and the history is in a nightly restic backup to Backblaze B2, encrypted before upload and restore-tested. The rule: my notes only leave the house end-to-end encrypted. The server is a headless Ubuntu box under my desk with no port open to the internet: everything reaches it over Tailscale. Hermes, an open-source agent, runs on it around the clock and I message it on Telegram; Claude Code reaches the same files over SSH. Both read and write the vault under house rules in an AGENTS.md, and Hermes keeps the server running from a setup guide that is itself a note in the vault. A dashboard shows every service, its health, what the models cost and the last backup. Stack: Obsidian, Self-hosted LiveSync, CouchDB, Git, restic + Backblaze B2, Ubuntu server, Docker, Tailscale, Hermes agent, Claude Code, Telegram, Homepage ### ScrollUp Ongoing A quarter of an hour a day of machine learning, taught from my own sources. The problem: I wanted to close a specific skill gap, the fundamentals of machine learning on top of my software engineering, and no course or feed fit. So I built the dashboard I open every morning: two tabs, Learn and Practice, with streaks, XP and levels so that coming back is satisfying. It has no fixed subjects. What it teaches comes from the sources I give it: book chapters through Marker, newsletters through Crawl4AI, videos through yt-dlp and Whisper, into a Markdown vault that is also my notes. An agent turns those raw sources into lessons and exercises, every item cites its page or URL, and the app indexes and serves the vault. Stack: React, Vite, TypeScript, Fastify, PostgreSQL, Drizzle, Markdown vault, Claude Code agent, Marker, Crawl4AI, yt-dlp + Whisper ### My Personal Journal 2024 – ongoing · https://www.my-personal-journal.com A private online journal, encrypted end to end. Every entry is encrypted on your device before it is saved, so nobody else can read it, not even the server. Rich text, photos encrypted the same way, tags, links between entries, search, and a book you bind in the cover and font you like. It started in the summer of 2024 out of a long habit of writing things down, and it has been built the same way since the first commit: specs in Markdown, tests first, every change through a pipeline. Stack: TypeScript, React, styled-components, Firebase, Cloud Functions, Playwright, GitHub Actions ### Trade Seeds 2019 – 2021 A trading plan I wrote every morning and checked every evening. During two years of day trading I needed discipline more than data. Each morning I picked a handful of stocks and planned the trades; each evening I compared the plan to what I had done. The name comes from the idea that a planned trade is a seed: it only grows if you leave it alone. It kept me honest, and it taught me more about my own decisions than any chart. Stack: React, Python (Flask), MongoDB, REST API, Self-hosted ## Working with AI I do not use AI as autocomplete. Agents do real work for me every day, on my laptop and on a server under my desk, and I keep everything that matters in plain files I can read. ### Two agents, one set of skills Claude Code on the laptop, for the code. Hermes, an open-source agent, on my home server for the chores: health checks, daily and weekly reports, backups, a watch on what the models cost. Both read the same skills from one Git repository, so I write a procedure once and either agent can run it. ### Frontier models and open ones Claude for anything that touches code. The agent that runs all day uses pay-per-token models through OpenRouter, with a monthly cap on the key and a daily report of what it spent, usually around twenty cents. Those cloud models can still read my notes, so next is an RTX 3090 in the server, for a local model that keeps them in the house. ### A second brain in Markdown What I know lives in one vault of plain Markdown notes with wikilinks, open in Obsidian. It syncs end-to-end encrypted to the server, gets a Git commit every fifteen minutes, and only leaves the house encrypted. Agents read and write it several times a day under house rules: nothing deleted, moved or rewritten unless I ask, and the history is off limits. The vault is the source of truth; any database on top is a rebuildable index. ### Pipelines that feed it Videos through yt-dlp and Whisper into transcripts, PDFs into Markdown, newsletters into notes, all landing in the vault’s inbox, where an agent turns them into lessons and exercises for the next morning. Nothing gets summarised by a model without the source kept next to it. ## Articles - [Two RCEs, Two SQL Injections and a 94% Full Disk: Rescuing a Non-Profit’s Legacy PHP Server](https://medium.com/@adrien.poirson/two-rces-two-sql-injections-and-a-94-full-disk-rescuing-a-non-profits-legacy-php-server-079e6e2ef31b) (Oct 27, 2026): Patching, auditing and cleaning up a kiteboarding association’s server in a day, without an emergency migration - [Building a Production-Ready CI/CD Pipeline: From Code to Production in Three Environments](https://medium.com/@adrien.poirson/building-a-production-ready-ci-cd-pipeline-from-code-to-production-in-three-environments-c99b20d570fd) (Jan 29, 2026): How I automated deployments across preview, staging, and production environments for my personal journal application ## Skills - Languages: TypeScript, JavaScript, HTML, CSS, Python, PHP - Front end: React, React Native, Next.js, Astro, Redux, TanStack, GraphQL, styled-components, Tailwind CSS, Storybook - Data and visualization: Victory, react-virtualized, react-window, Amazon Quick Suite, Custom charts and pivot tables, Real-time dashboards - Testing: React Testing Library, Playwright, Cypress, Jest - Back end and data: Node.js, Python (Flask), REST APIs, PostgreSQL, MongoDB, Firebase - DevOps and tooling: Git, GitHub Actions, Docker, Webpack, Vite, Netlify, Vercel, Firebase Hosting and Storage, DigitalOcean, AWS console, Ubuntu server administration over SSH (installs, updates, maintenance), Tailscale, DNS and email domain setup - Process and delivery: Use cases, User stories, Written scope, Agile, Kanban, TDD, Automated tests, Code review, CI/CD pipelines, Docker Compose, Managed cloud services, Error tracking, Logs, Uptime checks - Design: Figma, Design systems - AI: Claude Code, Hermes agent, Agent skills and prompting, OpenRouter and open-weight models, Ollama, Whisper, Markdown vaults