Modified

20 June 2026

ROADMAP — f.bouchet.me

A prioritized backlog for the academic website. Work through it incrementally with Claude Code. This file is not meant to be auto-loaded every session (unlike CLAUDE.md); point Claude Code at it on demand: “Read ROADMAP.md and let’s do the §2 items.”

How to read the scores

Field Values Meaning
Priority P1 / P2 / P3 P1 = correctness/credibility, do soon · P2 = worthwhile · P3 = nice-to-have / someday
Effort S / M / L S ≤ 30 min · M = 1–3 h · L = half-day+ or blocked on your content
Needs your content or a judgment call; Claude Code can’t just do it alone

Status snapshot (from a live audit): Home, About, Publications, Teaching, CV have real content. Projects holds only the two demo pages; Notes is empty. The single most visible defect is a bare GitHub link site-wide (§1).

1 · Correctness & placeholders

Task Pri Effort Notes
Fix the bare https://github.com/ link in navbar, footer, and home links P1 S ✓ done — set to github.com/fbouchet in _quarto.yml (navbar + footer) and index.qmd.
Add descriptive alt text to the home headshot P1 S ✓ done — image-alt: "Portrait of François Bouchet" in index.qmd.
Replace placeholder assets/img/headshot.png with a real photo P2 S ★
Replace placeholder assets/img/favicon.png P2 S ★
Replace placeholder repo/submodule URLs in the two demo project pages P2 S ✓ done — MADD → github.com/melinaverger/MADD; peer-recommender placeholder removed (no repo yet).
Fill or drop the DBLP id link on the home page P3 S ✓ done — added dblp.org/pid/57/7255.html to home links.
Confirm the public email P3 S ✓ done — changed to francois.bouchet@lip6.fr.

2 · Publications quality (your strongest page — tighten it)

Task Pri Effort Notes
Fix duplicate/mispasted title in references.bib P1 S ✓ done — harley_can_2015 title corrected; make pubs re-run.
Scan .bib for encoding artifacts P2 S ✓ done — fixed 7 artifacts: fi ligature (×2), ⬚→ff (×2), U+00B4 apostrophe (×2), ℡→{TEL} in booktitle.
Enrich open-access links from HAL P2 M Several entries have no DOI/link. Match by DOI/title against cv.hal.science/fbouchet and add full-text URLs — ideally as a step in build_publications.py so it’s reproducible.
Add a “Selected publications” highlight P2 M ★ High value for your audience (committees/students scan, don’t read 166). Surface a curated handful on Home or atop Publications. You choose which.
Per-entry “Cite (BibTeX)” toggle and/or a “Download .bib” button P3 M
Client-side search/filter by year/type/keyword P3 M
Year sub-headings / anchors within each type P3 S ✓ done — build_publications.py emits ### YYYY before each year group; toc-depth: 2 in publications.qmd keeps them out of the sidebar TOC.

3 · Projects — replace demos with real content

Task Pri Effort Notes
Decide the fate of the two exemplar pages P2 S Either promote madd-fairness / peer-recommender to real entries (fill real URLs), or remove them and keep the patterns documented only in CLAUDE.md.
Add 2–4 real projects, each as pattern (a) or (b) P2 L ★ The main content gap.
Add project card thumbnails to projects/img/ P3 S ★

4 · Discoverability / SEO

Task Pri Effort Notes
Audit per-page description front matter and social-card meta P2 S–M Add Open Graph / Twitter cards via open-graph: and twitter-card: in _quarto.yml; couldn’t confirm presence from the rendered HTML, so verify first.
Add a 1200×630 social preview image P3 S So shared links render a card.
Add JSON-LD structured data P3 M Person on Home/About; optionally ScholarlyArticle on Publications, for richer indexing.
Confirm sitemap.xml / robots.txt are emitted; submit to Search Console P3 S Quarto generates a sitemap when site-url is set (it is).
Decide on privacy-friendly analytics (Plausible / GoatCounter) or none P3 S ★

5 · Notes / blog

Task Pri Effort Notes
Seed 1–2 real posts so the section isn’t empty P3 M ★ Even short: a paper summary, a tooling note.
Emit and link an RSS feed from the listing P3 S Quarto listings support feed: true.

6 · Accessibility & UX polish

Task Pri Effort Notes
Add a custom 404 page P3 S
Verify WCAG AA contrast for the academic blue #1a4f8a P3 S On both light/dark backgrounds.
Show a “last updated” stamp on content pages P3 S ✓ done — date-modified: last-modified + date-format: "D MMMM YYYY" added globally to _quarto.yml; shows “Modified: DD Month YYYY” in title block on all pages (uses OS mtime).
Add an HTML highlights block above the CV PDF embed P3 M ★ Better for SEO/screen readers; the CV page already self-flags this.

7 · Maintenance & automation (protect future-you)

Task Pri Effort Notes
Wire make pubs-check into .githooks/pre-push P2 S Block a push when _publications.md is stale.
Add a link checker across the 166 entries P2 M e.g. lychee locally or in CI — catches dead DOIs/HAL links.
Add a git-ignored CLAUDE.local.md with each project’s venv path P2 S For make render-project; CLAUDE.md already suggests this.
Optional CI “render check” (build only, replay freeze, no deploy) P3 M Catches breakage on push without reconstructing project envs.
Add a pre-deploy guard in deploy-ovh.sh P3 S ✓ done — checks index.html exists and ≥ 5 HTML files; also fixed wrong /f.bouchet.me comment (no leading /).

Where this list could live (alternatives)

This ROADMAP.md is the lowest-friction option and plays well with Claude Code. Two alternatives if you outgrow it: GitHub Issues + a Project board (better for linking commits to tasks and tracking status, but more overhead and needs the repo set up for it), or a # TODO section appended to CLAUDE.md (loaded every session, but it bloats the context window — not recommended for a list this long).