A fast, static, single page portfolio for a Senior Analytics Engineer and Data Platform Specialist. It answers four questions in under ten seconds: who I am, what I build, proof, and how to reach me.
Live: thierrylam.fr
One page, sticky anchor navigation, light and dark themes, built for speed and SEO. The visual identity is a well architected data platform expressed as a page: calm, precise, with a faint lineage graph as the signature, the same DAG that dbt and Airflow produce.
The work is shown in two layers. Case studies name the client and the impact. Projects are real work, anonymized and told as data stories, with charts and a method explained step by step.
- Single page, zero runtime JavaScript by default. Astro ships static HTML, so it loads fast and ranks well.
- Data driven content. Every fact lives in a typed data file or a markdown file. Editing the site is a one line change.
- A Projects content collection. Each project is one markdown file with its own page at
/projects/<slug>. It scales without touching the layout. - A featured data story. A B2B SaaS sales attainment analysis that shows how the reporting grain decides the answer, with five hand drawn SVG charts and a synthetic dataset.
- Company trust band. Real logos, most recent mission first, each linking to the company site.
- An interactive footprint map. 9 companies across 4 countries and 35 countries traveled, on an inline world map with hover tooltips (built from
@svg-maps/world, CC BY 4.0). - Bilingual. English at
/and French at/fr/, with a language switcher, localized SEO, andhreflang. The French content tracks the CV, and the CV downloads in either language regardless of the site language. - Light and dark themes with no flash on load, full keyboard focus, alt text on every image, and reduced motion respected.
- Deploys itself. Push to
mainand GitHub Actions builds and publishes to GitHub Pages.
Astro, Tailwind CSS, TypeScript, astro-icon (Lucide and Simple Icons), self hosted Fontsource fonts (Space Grotesk, Inter, JetBrains Mono), astro-seo, and a sitemap. Charts are hand coded SVG generated by a small Python script, no chart library.
Which salespeople missed their target? A B2B SaaS sales team beat plan overall, yet three reps quietly missed their number. The piece rebuilds five raw CRM exports into a tested, reproducible warehouse and finds the misses by reporting at the grain where targets actually live. The data is synthetic and mirrors a real engagement. Read it at /projects/b2b-saas-sales-attainment.
You need Node 20 or newer.
npm install # install dependencies
npm run dev # dev server at http://localhost:4321
npm run build # production build into dist/
npm run preview # serve the built site locallyGenerated assets (the CV PDFs, the social image, the project charts and the world map) are pre built and committed under public/, so the npm commands above are all you need.
public/ static assets: the CV, the photo, company logos, project charts
src/
data/ typed content: identity, skills, case studies, demos, timeline
content/ the Projects collection (one markdown file per project)
components/ one focused component per section
layouts/ the HTML shell, head, SEO, theme
pages/ the homepage and the project detail route
styles/ the global styles and the data story prose
Hosted on GitHub Pages through GitHub Actions. The repository is named thierrytrietlam.github.io, so the site serves at the root. Every push to main rebuilds and redeploys.
Thierry Triet LAM, Senior Analytics Engineer, Paris. LinkedIn · GitHub · thierrylam.aifr@gmail.com
