From 05139d720ad4b7669aa1eb5666db791191145970 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 3 Oct 2026 17:09:47 +0000 Subject: [PATCH 1/7] [cv] Print stylesheet for a 2-page A4 CV, more bold and italic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Printing or saving the site as PDF from the browser gave 5 pages at the Minima screen size. A print stylesheet in style.scss now sets A4 at 9pt, drops the nav menu and footer, keeps the name and job title as the heading, and tightens headings and lists, so the page prints on two A4 sides with room for growth under three. The CV text gets more emphasis: bold on the key methods, artifacts and numbers (agents over biological databases, diffusion transformers, 6 PhD students, 100+ models, £50k, €5M, 40+ researchers), italic on the caveats and author positions. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JFVYogXC9MgS2EuFBvrZog --- assets/css/style.scss | 31 +++++++++++++++++++- index.md | 66 +++++++++++++++++++++---------------------- 2 files changed, 63 insertions(+), 34 deletions(-) diff --git a/assets/css/style.scss b/assets/css/style.scss index 1929696..c4f6ddd 100644 --- a/assets/css/style.scss +++ b/assets/css/style.scss @@ -23,4 +23,33 @@ article p { .post-content p, .page-content p { margin-bottom: 1.2em; -} \ No newline at end of file +} +/* Print: a compact A4 CV when the page is printed or saved as PDF from the browser */ +@page { size: A4; margin: 10mm 13mm; } + +@media print { + html { font-size: 9pt; } + body { font-size: 9pt; line-height: 1.27; color: #111; background: #fff; } + .wrapper { max-width: none; padding: 0; margin: 0; } + + /* header becomes the name and job title; nav menu and footer go */ + .site-header { border: 0; min-height: 0; margin-bottom: 2mm; } + .site-title { float: none; display: block; font-size: 17pt; font-weight: 700; + line-height: 1.2; color: #111; letter-spacing: 0; } + .site-nav { float: none; position: static; border: 0; background: none; line-height: 1.3; } + .site-nav label, .site-nav .nav-trigger { display: none; } + .site-nav .trigger { display: block; } + .site-nav .page-link { display: block; font-size: 10.5pt; color: #444; margin: 0; } + .site-footer { display: none; } + + .page-content { padding: 0; } + .page-content p, .page-content li { text-align: left; } + h2 { font-size: 11pt; font-weight: 700; margin: 3mm 0 1.2mm; padding-bottom: .5mm; + border-bottom: 1px solid #999; text-transform: uppercase; letter-spacing: .05em; + break-after: avoid; } + p { margin: 0 0 1.4mm; } + ul, ol { margin: 0 0 1.6mm 4mm; } + li { margin: 0 0 .4mm; break-inside: avoid; } + p + ul, p + ol { margin-top: -.4mm; } + a { color: inherit; text-decoration: none; } +} diff --git a/index.md b/index.md index 5f9a7d1..3481aa9 100644 --- a/index.md +++ b/index.md @@ -7,78 +7,78 @@ London, UK • [linkedin.com/in/ctr26](https://linkedin.com/in/ctr26) • [githu Generative and agentic models for biology • LLM post-training • out-of-distribution modelling • virtual cells ## Summary -I build generative models that generalise to unseen biology, with the aim of building the first virtual cell. I apply machine learning to biological data, from light-sheet microscopy and terabyte-scale image archives to single-cell transcriptomics and knowledge graphs, and have published in *Nature Biotechnology*, *NeurIPS*, and *Nature Methods*. I write the research code and the infrastructure under it, from tools other labs use to agents grounded in real biological databases and training and inference on cloud and HPC. +I build generative models that generalise to unseen biology, with the aim of building the **first virtual cell**. I apply machine learning to biological data, from *light-sheet microscopy* and *terabyte-scale image archives* to *single-cell transcriptomics* and *knowledge graphs*, and have published in *Nature Biotechnology*, *NeurIPS*, and *Nature Methods*. I write **the research code and the infrastructure under it**, from tools other labs use to agents grounded in real biological databases and training and inference on cloud and HPC. ## Experience **Senior Machine Learning Scientist, Valence Labs @ Recursion Pharmaceuticals** London, UK • Oct 2024 – present -- Build agents that use real biological databases as tools; they decode within Ensembl, HGNC, and ChEMBL vocabularies, check their tool calls against structured resources, and are grounded by retrieval and verifier ensembles. The gene–gene hypotheses they produce are explainable and draw on several sources. -- Co-authored **TxPert** (*Nature Biotechnology*, 2026), a state-of-the-art transcriptomic perturbation predictor conditioned on multiple biological knowledge graphs; I owned benchmark task design, data curation, and the out-of-distribution ablations. -- Post-train multimodal LLMs over knowledge graphs, literature, and omics, and use reinforcement learning to align agent behaviour with verifiable biological objectives. -- Train large diffusion transformers to generate perturbational biology that generalises to perturbations, cell types, and combinations the model has never seen, rather than interpolating between ones it has. -- Model single-cell and bulk RNA-seq jointly with high-content phenotypic imaging, since each modality pins down what the other leaves open. -- Design active learning strategies that choose the next experiment under a fixed budget, closing the loop between model uncertainty and what the wet lab can run. -- Lead the engineering on a large scientific project; I set technical direction and engineering standards across ML and biology, scale training and inference across GPUs in the cloud, and encourage the code review, reproducibility, and shared tooling that carry research prototypes into production. -- Work on evaluation strategy and error analysis for proteome-scale binding-affinity screening. -- Organise the Virtual Cell Journal Club, which brings the ML and wet-lab teams together. +- Build **agents that use real biological databases as tools**; they decode within Ensembl, HGNC, and ChEMBL vocabularies, check their tool calls against structured resources, and are grounded by retrieval and verifier ensembles. The gene–gene hypotheses they produce are *explainable* and draw on several sources. +- Co-authored **TxPert** (*Nature Biotechnology*, 2026), a *state-of-the-art* transcriptomic perturbation predictor conditioned on multiple biological knowledge graphs; I owned **benchmark task design**, **data curation**, and the **out-of-distribution ablations**. +- **Post-train multimodal LLMs** over knowledge graphs, literature, and omics, and use **reinforcement learning** to align agent behaviour with verifiable biological objectives. +- Train **large diffusion transformers** to generate perturbational biology that generalises to perturbations, cell types, and combinations the model has never seen, *rather than interpolating between ones it has*. +- Model **single-cell and bulk RNA-seq** jointly with **high-content phenotypic imaging**, since *each modality pins down what the other leaves open*. +- Design **active learning** strategies that choose the next experiment under a *fixed budget*, closing the loop between model uncertainty and what the wet lab can run. +- **Lead the engineering** on a large scientific project; I set technical direction and engineering standards across ML and biology, scale training and inference across **GPUs in the cloud**, and encourage the code review, reproducibility, and shared tooling that carry research prototypes into production. +- Work on **evaluation strategy and error analysis** for *proteome-scale* binding-affinity screening. +- Organise the **Virtual Cell Journal Club**, which brings the ML and wet-lab teams together. **Senior Research Associate and AI Engineering Lead, EMBL-EBI (Uhlmann Group and Bio-Image Archive)** Cambridge, UK • Dec 2022 – Oct 2024 -- Supervised 6 PhD students, and set the lab's coding standards, CI, and peer review. -- Created **[bioimage_embed](https://github.com/uhlmanngroup/bioimage_embed)** and co-authored **ShapeEmbed** (*NeurIPS* 2025), which learn contour and morphology representations without labels; both ship as production Python used by other labs. -- Designed scalable pipelines that process terabytes of microscopy across HPC and cloud, with containerised workflows and automated experiment tracking. +- Supervised **6 PhD students**, and set the lab's *coding standards, CI, and peer review*. +- Created **[bioimage_embed](https://github.com/uhlmanngroup/bioimage_embed)** and co-authored **ShapeEmbed** (*NeurIPS* 2025), which learn contour and morphology representations without labels; both ship as *production Python used by other labs*. +- Designed scalable pipelines that process **terabytes of microscopy** across HPC and cloud, with containerised workflows and automated experiment tracking. *Part-time and consulting roles held alongside EMBL-EBI, 2022 – 2024* **AI/ML Founding Engineer (part-time), Amun AI AB** Stockholm, Sweden • 2022 – 2024 -- Built a Kubernetes (GKE) model-serving platform on NVIDIA Triton and KServe, with auth, monitoring, and autoscaling, serving 100+ models to 30+ daily users. +- Built a Kubernetes (GKE) model-serving platform on NVIDIA Triton and KServe, with auth, monitoring, and autoscaling, serving **100+ models** to **30+ daily users**. **AI/ML Engineering Consultant (part-time), DeepMirror** Cambridge and London, UK • 2022 – 2024 -- Shipped **MouseMindMapper**, a brain-histology segmentation product that brings in £50k of revenue a year, and owned it end to end, from data and training to packaging and docs. -- Wrote a high-performance C++ cheminformatics fingerprinting library for production. +- Shipped **MouseMindMapper**, a brain-histology segmentation product that brings in **£50k of revenue a year**, and owned it *end to end*, from data and training to packaging and docs. +- Wrote a *high-performance* **C++ cheminformatics fingerprinting library** for production. **Data Scientist, Brazma Group, EMBL-EBI** Cambridge, UK • Dec 2019 – Dec 2023 -- Co-authored the successful €5M **AI4LIFE** grant for federated bioimage AI infrastructure, and contributed to its platform architecture and model-sharing strategy. -- Drove large-scale AI microscopy analyses in the Image Data Resource, and worked with Google Cloud on representation learning. -- Taught an annual deep learning course to 40+ researchers, from PhD students to PIs. +- Co-authored the successful **€5M AI4LIFE grant** for federated bioimage AI infrastructure, and contributed to its platform architecture and model-sharing strategy. +- Drove large-scale AI microscopy analyses in the **Image Data Resource**, and worked with *Google Cloud* on representation learning. +- Taught an annual deep learning course to **40+ researchers**, from PhD students to PIs. **Software Engineer (COVID-19 response), European Nucleotide Archive, EMBL-EBI** Cambridge, UK • Mar 2020 – Sept 2020 -- Built CI/CD for the **COVID-19 Data Portal**, which let it publish global data daily, and scaled NGS alignment and ETL in Nextflow and Kubernetes as volumes surged. +- Built CI/CD for the **COVID-19 Data Portal**, which let it *publish global data daily*, and scaled NGS alignment and ETL in Nextflow and Kubernetes as volumes surged. **Computational Microscopist, National Physical Laboratory** London, UK • 2018 – Dec 2019 -- Developed new 3D organoid segmentation methods for cancer research, and consulted for MSquared on advanced imaging. +- Developed new **3D organoid segmentation** methods for cancer research, and consulted for MSquared on advanced imaging. ## Education **PhD, Engineering, University of Cambridge** • 2014 – 2018 (EPSRC PES-CDT) -Thesis on light-sheet microscopy for tracking particles in large specimens -- Designed and built a new light-sheet microscope with automated acquisition, and wrote algorithms for particle tracking, signal optimisation, and micrometre-scale tomography. Supervised two MRes students and one BSc student. +*Thesis on light-sheet microscopy for tracking particles in large specimens* +- Designed and built a **new light-sheet microscope** with automated acquisition, and wrote algorithms for particle tracking, signal optimisation, and micrometre-scale tomography. Supervised two MRes students and one BSc student. -**MRes, Photonics, University of Cambridge and UCL** • 2013 – 2014 • structured illumination microscopy reconstruction -**MSci, Physics (First-Class Honours), Nottingham Trent University** • 2009 – 2013 • top physics graduate +**MRes, Photonics, University of Cambridge and UCL** • 2013 – 2014 • *structured illumination microscopy reconstruction* +**MSci, Physics (First-Class Honours), Nottingham Trent University** • 2009 – 2013 • *top physics graduate* ## Selected Publications -1. **TxPert**. Out-of-distribution transcriptomic perturbation prediction over biological knowledge graphs. *Nature Biotechnology* (2026), co-author. [doi:10.1038/s41587-026-03113-4](https://doi.org/10.1038/s41587-026-03113-4) -2. **ShapeEmbed**. Self-supervised learning of 2D contour representations. *NeurIPS* (2025), second author. [poster](https://neurips.cc/virtual/2025/poster/116558) -3. **MIFA**. Metadata and accessibility standards for reusable AI training datasets in bioimaging. *Nature Methods* (2025), co-author. [doi:10.1038/s41592-025-02835-8](https://doi.org/10.1038/s41592-025-02835-8) -4. **DL4MicEverywhere**. Reproducible, containerised deep learning for microscopy. *Nature Methods* (2024), co-author. [doi:10.1038/s41592-024-02295-6](https://doi.org/10.1038/s41592-024-02295-6) -5. **CIR4MICS**. Synthetic ground truth for benchmarking image-analysis methods. *Bioinformatics* (2023), co-author. [doi:10.1093/bioinformatics/btad587](https://doi.org/10.1093/bioinformatics/btad587) -6. **The COVID-19 Data Portal**. Rapid open data sharing for SARS-CoV-2 research. *Nucleic Acids Research* 49(W1) (2021), co-author. [doi:10.1093/nar/gkab417](https://doi.org/10.1093/nar/gkab417) +1. **TxPert**. Out-of-distribution transcriptomic perturbation prediction over biological knowledge graphs. *Nature Biotechnology* (2026), *co-author*. [doi:10.1038/s41587-026-03113-4](https://doi.org/10.1038/s41587-026-03113-4) +2. **ShapeEmbed**. Self-supervised learning of 2D contour representations. *NeurIPS* (2025), *second author*. [poster](https://neurips.cc/virtual/2025/poster/116558) +3. **MIFA**. Metadata and accessibility standards for reusable AI training datasets in bioimaging. *Nature Methods* (2025), *co-author*. [doi:10.1038/s41592-025-02835-8](https://doi.org/10.1038/s41592-025-02835-8) +4. **DL4MicEverywhere**. Reproducible, containerised deep learning for microscopy. *Nature Methods* (2024), *co-author*. [doi:10.1038/s41592-024-02295-6](https://doi.org/10.1038/s41592-024-02295-6) +5. **CIR4MICS**. Synthetic ground truth for benchmarking image-analysis methods. *Bioinformatics* (2023), *co-author*. [doi:10.1093/bioinformatics/btad587](https://doi.org/10.1093/bioinformatics/btad587) +6. **The COVID-19 Data Portal**. Rapid open data sharing for SARS-CoV-2 research. *Nucleic Acids Research* 49(W1) (2021), *co-author*. [doi:10.1093/nar/gkab417](https://doi.org/10.1093/nar/gkab417) 7. **mmSIM**. Open toolbox for structured illumination microscopy. *Phil. Trans. R. Soc. A* (2021), *first author*. [doi:10.1098/rsta.2020.0353](https://doi.org/10.1098/rsta.2020.0353) 8. **Frame-localisation OPT**. Reconstruction for optical projection tomography. *Scientific Reports* (2021), *first author*. [doi:10.1038/s41598-021-83454-z](https://doi.org/10.1038/s41598-021-83454-z) The full list is on [Google Scholar](https://scholar.google.com/citations?user=XVt7BYQAAAAJ&hl=en). ## Patents -- **Virtual Cell Foundation Model**, patent pending, 2025 (Recursion) -- **TxPert, transcriptomic perturbation prediction**, patent pending, 2025 (Recursion) +- **Virtual Cell Foundation Model**, *patent pending*, 2025 (Recursion) +- **TxPert, transcriptomic perturbation prediction**, *patent pending*, 2025 (Recursion) ## Skills From e76dfbdc2479c98b966b1157f7a7a73ac27f7800 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 3 Oct 2026 17:14:25 +0000 Subject: [PATCH 2/7] [cv] Load the print stylesheet from assets/main.scss The Minima layout links only /assets/main.css, so rules added to assets/css/style.scss compile to a file no page loads. The print rules move to an assets/main.scss that overrides the theme's and imports minima first, so they ship in the stylesheet the page uses. style.scss goes back to how it was. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JFVYogXC9MgS2EuFBvrZog --- assets/css/style.scss | 31 +------------------------------ assets/main.scss | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 30 deletions(-) create mode 100644 assets/main.scss diff --git a/assets/css/style.scss b/assets/css/style.scss index c4f6ddd..1929696 100644 --- a/assets/css/style.scss +++ b/assets/css/style.scss @@ -23,33 +23,4 @@ article p { .post-content p, .page-content p { margin-bottom: 1.2em; -} -/* Print: a compact A4 CV when the page is printed or saved as PDF from the browser */ -@page { size: A4; margin: 10mm 13mm; } - -@media print { - html { font-size: 9pt; } - body { font-size: 9pt; line-height: 1.27; color: #111; background: #fff; } - .wrapper { max-width: none; padding: 0; margin: 0; } - - /* header becomes the name and job title; nav menu and footer go */ - .site-header { border: 0; min-height: 0; margin-bottom: 2mm; } - .site-title { float: none; display: block; font-size: 17pt; font-weight: 700; - line-height: 1.2; color: #111; letter-spacing: 0; } - .site-nav { float: none; position: static; border: 0; background: none; line-height: 1.3; } - .site-nav label, .site-nav .nav-trigger { display: none; } - .site-nav .trigger { display: block; } - .site-nav .page-link { display: block; font-size: 10.5pt; color: #444; margin: 0; } - .site-footer { display: none; } - - .page-content { padding: 0; } - .page-content p, .page-content li { text-align: left; } - h2 { font-size: 11pt; font-weight: 700; margin: 3mm 0 1.2mm; padding-bottom: .5mm; - border-bottom: 1px solid #999; text-transform: uppercase; letter-spacing: .05em; - break-after: avoid; } - p { margin: 0 0 1.4mm; } - ul, ol { margin: 0 0 1.6mm 4mm; } - li { margin: 0 0 .4mm; break-inside: avoid; } - p + ul, p + ol { margin-top: -.4mm; } - a { color: inherit; text-decoration: none; } -} +} \ No newline at end of file diff --git a/assets/main.scss b/assets/main.scss new file mode 100644 index 0000000..f38c527 --- /dev/null +++ b/assets/main.scss @@ -0,0 +1,35 @@ +--- +# Overrides the Minima theme's main.scss so the print rules load on every page +--- + +@import "minima"; + +/* Print: a compact A4 CV when the page is printed or saved as PDF from the browser */ +@page { size: A4; margin: 10mm 13mm; } + +@media print { + html { font-size: 9pt; } + body { font-size: 9pt; line-height: 1.27; color: #111; background: #fff; } + .wrapper { max-width: none; padding: 0; margin: 0; } + + /* header becomes the name and job title; nav menu and footer go */ + .site-header { border: 0; min-height: 0; margin-bottom: 2mm; } + .site-title { float: none; display: block; font-size: 17pt; font-weight: 700; + line-height: 1.2; color: #111; letter-spacing: 0; } + .site-nav { float: none; position: static; border: 0; background: none; line-height: 1.3; } + .site-nav label, .site-nav .nav-trigger { display: none; } + .site-nav .trigger { display: block; } + .site-nav .page-link { display: block; font-size: 10.5pt; color: #444; margin: 0; } + .site-footer { display: none; } + + .page-content { padding: 0; } + .page-content p, .page-content li { text-align: left; } + h2 { font-size: 11pt; font-weight: 700; margin: 3mm 0 1.2mm; padding-bottom: .5mm; + border-bottom: 1px solid #999; text-transform: uppercase; letter-spacing: .05em; + break-after: avoid; } + p { margin: 0 0 1.4mm; } + ul, ol { margin: 0 0 1.6mm 4mm; } + li { margin: 0 0 .4mm; break-inside: avoid; } + p + ul, p + ol { margin-top: -.4mm; } + a { color: inherit; text-decoration: none; } +} From 2c3823e8494b52a5b08c819c5b6f16feea0730de Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 3 Oct 2026 23:11:59 +0000 Subject: [PATCH 3/7] [cv] Lean the PhD bullets into the code The PhD entry now names the software rather than the instrument alone: automated acquisition, bead tracking that aligned the holographic optics, and flOPT, the tomographic reconstruction that recovers the sample pose from tracked fiducial beads and stays robust to mechanical jitter and drift (Scientific Reports, open-source Python with OpenCV). The matching publication line gains the same description. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JFVYogXC9MgS2EuFBvrZog --- index.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/index.md b/index.md index 3481aa9..20f7f86 100644 --- a/index.md +++ b/index.md @@ -58,7 +58,9 @@ London, UK • 2018 – Dec 2019 **PhD, Engineering, University of Cambridge** • 2014 – 2018 (EPSRC PES-CDT) *Thesis on light-sheet microscopy for tracking particles in large specimens* -- Designed and built a **new light-sheet microscope** with automated acquisition, and wrote algorithms for particle tracking, signal optimisation, and micrometre-scale tomography. Supervised two MRes students and one BSc student. +- Designed and built a **new light-sheet microscope**, and wrote the code that ran it; automated acquisition, **bead tracking** that aligned the **holographic optics**, and signal optimisation driven by what the tracker saw. +- Wrote **flOPT**, a tomographic reconstruction algorithm that recovers the sample pose from tracked fiducial beads and back-projects each ray, so it stays **robust to mechanical jitter and drift** where the Radon transform breaks down; published in *Scientific Reports* and released as open-source Python with OpenCV. +- Supervised two MRes students and one BSc student. **MRes, Photonics, University of Cambridge and UCL** • 2013 – 2014 • *structured illumination microscopy reconstruction* **MSci, Physics (First-Class Honours), Nottingham Trent University** • 2009 – 2013 • *top physics graduate* @@ -72,7 +74,7 @@ London, UK • 2018 – Dec 2019 5. **CIR4MICS**. Synthetic ground truth for benchmarking image-analysis methods. *Bioinformatics* (2023), *co-author*. [doi:10.1093/bioinformatics/btad587](https://doi.org/10.1093/bioinformatics/btad587) 6. **The COVID-19 Data Portal**. Rapid open data sharing for SARS-CoV-2 research. *Nucleic Acids Research* 49(W1) (2021), *co-author*. [doi:10.1093/nar/gkab417](https://doi.org/10.1093/nar/gkab417) 7. **mmSIM**. Open toolbox for structured illumination microscopy. *Phil. Trans. R. Soc. A* (2021), *first author*. [doi:10.1098/rsta.2020.0353](https://doi.org/10.1098/rsta.2020.0353) -8. **Frame-localisation OPT**. Reconstruction for optical projection tomography. *Scientific Reports* (2021), *first author*. [doi:10.1038/s41598-021-83454-z](https://doi.org/10.1038/s41598-021-83454-z) +8. **Frame-localisation OPT (flOPT)**. Tomographic reconstruction from tracked fiducial beads, robust to mechanical jitter and drift. *Scientific Reports* (2021), *first author*. [doi:10.1038/s41598-021-83454-z](https://doi.org/10.1038/s41598-021-83454-z) The full list is on [Google Scholar](https://scholar.google.com/citations?user=XVt7BYQAAAAJ&hl=en). From 3263c670c8760538942b1c56ecef97b070a1a5a1 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 4 Oct 2026 01:29:32 +0000 Subject: [PATCH 4/7] [cv] Tighten the prose into shorter CV bullets Summary, Experience, and Education go through a less prosaic pass; long bullets split into two sentences, connective clauses cut, and semicolons used where two facts share a bullet. Every fact, number, and emphasised term is kept, checked token by token. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JFVYogXC9MgS2EuFBvrZog --- index.md | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/index.md b/index.md index 20f7f86..a979c9f 100644 --- a/index.md +++ b/index.md @@ -7,59 +7,59 @@ London, UK • [linkedin.com/in/ctr26](https://linkedin.com/in/ctr26) • [githu Generative and agentic models for biology • LLM post-training • out-of-distribution modelling • virtual cells ## Summary -I build generative models that generalise to unseen biology, with the aim of building the **first virtual cell**. I apply machine learning to biological data, from *light-sheet microscopy* and *terabyte-scale image archives* to *single-cell transcriptomics* and *knowledge graphs*, and have published in *Nature Biotechnology*, *NeurIPS*, and *Nature Methods*. I write **the research code and the infrastructure under it**, from tools other labs use to agents grounded in real biological databases and training and inference on cloud and HPC. +I build generative models that generalise to unseen biology, aiming to build the **first virtual cell**. I apply machine learning to biological data, from *light-sheet microscopy* and *terabyte-scale image archives* to *single-cell transcriptomics* and *knowledge graphs*. I have published in *Nature Biotechnology*, *NeurIPS*, and *Nature Methods*. I write **the research code and the infrastructure under it**, from tools used by other labs to agents grounded in real biological databases, and training and inference on cloud and HPC. ## Experience **Senior Machine Learning Scientist, Valence Labs @ Recursion Pharmaceuticals** London, UK • Oct 2024 – present -- Build **agents that use real biological databases as tools**; they decode within Ensembl, HGNC, and ChEMBL vocabularies, check their tool calls against structured resources, and are grounded by retrieval and verifier ensembles. The gene–gene hypotheses they produce are *explainable* and draw on several sources. -- Co-authored **TxPert** (*Nature Biotechnology*, 2026), a *state-of-the-art* transcriptomic perturbation predictor conditioned on multiple biological knowledge graphs; I owned **benchmark task design**, **data curation**, and the **out-of-distribution ablations**. -- **Post-train multimodal LLMs** over knowledge graphs, literature, and omics, and use **reinforcement learning** to align agent behaviour with verifiable biological objectives. -- Train **large diffusion transformers** to generate perturbational biology that generalises to perturbations, cell types, and combinations the model has never seen, *rather than interpolating between ones it has*. -- Model **single-cell and bulk RNA-seq** jointly with **high-content phenotypic imaging**, since *each modality pins down what the other leaves open*. -- Design **active learning** strategies that choose the next experiment under a *fixed budget*, closing the loop between model uncertainty and what the wet lab can run. -- **Lead the engineering** on a large scientific project; I set technical direction and engineering standards across ML and biology, scale training and inference across **GPUs in the cloud**, and encourage the code review, reproducibility, and shared tooling that carry research prototypes into production. -- Work on **evaluation strategy and error analysis** for *proteome-scale* binding-affinity screening. -- Organise the **Virtual Cell Journal Club**, which brings the ML and wet-lab teams together. +- Build **agents that use real biological databases as tools**. They decode within Ensembl, HGNC, and ChEMBL vocabularies, check tool calls against structured resources, and use retrieval and verifier ensembles for grounding. Their gene–gene hypotheses are *explainable* and draw on several sources. +- Co-authored **TxPert** (*Nature Biotechnology*, 2026), a *state-of-the-art* transcriptomic perturbation predictor conditioned on multiple biological knowledge graphs. Owned **benchmark task design**, **data curation**, and the **out-of-distribution ablations**. +- **Post-train multimodal LLMs** over knowledge graphs, literature, and omics; use **reinforcement learning** to align agent behaviour with verifiable biological objectives. +- Train **large diffusion transformers** to generate perturbational biology that generalises to unseen perturbations, cell types, and combinations, *rather than interpolating between ones it has*. +- Model **single-cell and bulk RNA-seq** alongside **high-content phenotypic imaging**; *each modality pins down what the other leaves open*. +- Design **active learning** strategies to choose the next experiment under a *fixed budget*, linking model uncertainty to experiments the wet lab can run. +- **Lead the engineering** on a large scientific project. Set technical direction and engineering standards across ML and biology; scale training and inference across **GPUs in the cloud**; promote code review, reproducibility, and shared tooling to carry research prototypes into production. +- Develop **evaluation strategy and error analysis** for *proteome-scale* binding-affinity screening. +- Organise the **Virtual Cell Journal Club**, bringing ML and wet-lab teams together. **Senior Research Associate and AI Engineering Lead, EMBL-EBI (Uhlmann Group and Bio-Image Archive)** Cambridge, UK • Dec 2022 – Oct 2024 -- Supervised **6 PhD students**, and set the lab's *coding standards, CI, and peer review*. -- Created **[bioimage_embed](https://github.com/uhlmanngroup/bioimage_embed)** and co-authored **ShapeEmbed** (*NeurIPS* 2025), which learn contour and morphology representations without labels; both ship as *production Python used by other labs*. -- Designed scalable pipelines that process **terabytes of microscopy** across HPC and cloud, with containerised workflows and automated experiment tracking. +- Supervised **6 PhD students**; set the lab's *coding standards, CI, and peer review*. +- Created **[bioimage_embed](https://github.com/uhlmanngroup/bioimage_embed)** and co-authored **ShapeEmbed** (*NeurIPS* 2025), which learn contour and morphology representations without labels. Both ship as *production Python used by other labs*. +- Designed scalable, containerised pipelines with automated experiment tracking to process **terabytes of microscopy** across HPC and cloud. *Part-time and consulting roles held alongside EMBL-EBI, 2022 – 2024* **AI/ML Founding Engineer (part-time), Amun AI AB** Stockholm, Sweden • 2022 – 2024 -- Built a Kubernetes (GKE) model-serving platform on NVIDIA Triton and KServe, with auth, monitoring, and autoscaling, serving **100+ models** to **30+ daily users**. +- Built a Kubernetes (GKE) model-serving platform on NVIDIA Triton and KServe, with auth, monitoring, and autoscaling. Served **100+ models** to **30+ daily users**. **AI/ML Engineering Consultant (part-time), DeepMirror** Cambridge and London, UK • 2022 – 2024 -- Shipped **MouseMindMapper**, a brain-histology segmentation product that brings in **£50k of revenue a year**, and owned it *end to end*, from data and training to packaging and docs. +- Shipped **MouseMindMapper**, a brain-histology segmentation product bringing in **£50k of revenue a year**. Owned it *end to end*, from data and training to packaging and docs. - Wrote a *high-performance* **C++ cheminformatics fingerprinting library** for production. **Data Scientist, Brazma Group, EMBL-EBI** Cambridge, UK • Dec 2019 – Dec 2023 -- Co-authored the successful **€5M AI4LIFE grant** for federated bioimage AI infrastructure, and contributed to its platform architecture and model-sharing strategy. -- Drove large-scale AI microscopy analyses in the **Image Data Resource**, and worked with *Google Cloud* on representation learning. +- Co-authored the successful **€5M AI4LIFE grant** for federated bioimage AI infrastructure; contributed to its platform architecture and model-sharing strategy. +- Drove large-scale AI microscopy analyses in the **Image Data Resource**; worked with *Google Cloud* on representation learning. - Taught an annual deep learning course to **40+ researchers**, from PhD students to PIs. **Software Engineer (COVID-19 response), European Nucleotide Archive, EMBL-EBI** Cambridge, UK • Mar 2020 – Sept 2020 -- Built CI/CD for the **COVID-19 Data Portal**, which let it *publish global data daily*, and scaled NGS alignment and ETL in Nextflow and Kubernetes as volumes surged. +- Built CI/CD for the **COVID-19 Data Portal**, enabling it to *publish global data daily*. Scaled NGS alignment and ETL in Nextflow and Kubernetes as volumes surged. **Computational Microscopist, National Physical Laboratory** London, UK • 2018 – Dec 2019 -- Developed new **3D organoid segmentation** methods for cancer research, and consulted for MSquared on advanced imaging. +- Developed new **3D organoid segmentation** methods for cancer research; consulted for MSquared on advanced imaging. ## Education **PhD, Engineering, University of Cambridge** • 2014 – 2018 (EPSRC PES-CDT) *Thesis on light-sheet microscopy for tracking particles in large specimens* -- Designed and built a **new light-sheet microscope**, and wrote the code that ran it; automated acquisition, **bead tracking** that aligned the **holographic optics**, and signal optimisation driven by what the tracker saw. -- Wrote **flOPT**, a tomographic reconstruction algorithm that recovers the sample pose from tracked fiducial beads and back-projects each ray, so it stays **robust to mechanical jitter and drift** where the Radon transform breaks down; published in *Scientific Reports* and released as open-source Python with OpenCV. +- Designed and built a **new light-sheet microscope**, and wrote the code that ran it. Automated acquisition, **bead tracking** to align the **holographic optics**, and signal optimisation driven by the tracker. +- Wrote **flOPT**, a tomographic reconstruction algorithm that recovers sample pose from tracked fiducial beads and back-projects each ray. It stays **robust to mechanical jitter and drift** where the Radon transform breaks down. Published in *Scientific Reports* and released as open-source Python with OpenCV. - Supervised two MRes students and one BSc student. **MRes, Photonics, University of Cambridge and UCL** • 2013 – 2014 • *structured illumination microscopy reconstruction* From a2999d9a6730e49ddf59d4684d0a3392e05e20b2 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 4 Oct 2026 06:24:43 +0000 Subject: [PATCH 5/7] [cv] Apply review fixes to the prose and emphasis The tightening pass had drifted three facts; restored "jointly with" for RNA-seq and imaging, "Work on" for the screening evaluation, and "micrometre-scale" for the PhD tomography. flOPT's robustness is now stated once, in Education, and the publication line is neutral. Emphasis comes off the weak or filler spans; co-author and patent pending go plain, as do adjective italics and the Summary's noun list. HGNC joins the Skills databases, the grant dates use the same spaced dash as the rest, and the stale cv.pdf rule leaves the print CSS. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JFVYogXC9MgS2EuFBvrZog --- cv-print.css | 2 -- index.md | 44 ++++++++++++++++++++++---------------------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/cv-print.css b/cv-print.css index 317e1f0..bccba6c 100644 --- a/cv-print.css +++ b/cv-print.css @@ -16,5 +16,3 @@ body { max-width: none; margin: 0; padding: 0; } header#title-block-header { margin: 0 0 2mm; } h1.title { font-size: 17pt; margin: 0 0 1mm; text-align: left; } p.subtitle { font-size: 10.5pt; color: #444; margin: 0; text-align: left; } -/* the site links to the PDF; hide that link inside the PDF */ -p:has(> a[href="cv.pdf"]) { display: none; } diff --git a/index.md b/index.md index a979c9f..be0869c 100644 --- a/index.md +++ b/index.md @@ -7,20 +7,20 @@ London, UK • [linkedin.com/in/ctr26](https://linkedin.com/in/ctr26) • [githu Generative and agentic models for biology • LLM post-training • out-of-distribution modelling • virtual cells ## Summary -I build generative models that generalise to unseen biology, aiming to build the **first virtual cell**. I apply machine learning to biological data, from *light-sheet microscopy* and *terabyte-scale image archives* to *single-cell transcriptomics* and *knowledge graphs*. I have published in *Nature Biotechnology*, *NeurIPS*, and *Nature Methods*. I write **the research code and the infrastructure under it**, from tools used by other labs to agents grounded in real biological databases, and training and inference on cloud and HPC. +I build generative models that generalise to unseen biology, aiming to build the **first virtual cell**. I apply machine learning to biological data, from light-sheet microscopy and terabyte-scale image archives to single-cell transcriptomics and knowledge graphs. I have published in *Nature Biotechnology*, *NeurIPS*, and *Nature Methods*. I write **the research code and the infrastructure under it**, from tools used by other labs to agents grounded in real biological databases, and training and inference on cloud and HPC. ## Experience **Senior Machine Learning Scientist, Valence Labs @ Recursion Pharmaceuticals** London, UK • Oct 2024 – present -- Build **agents that use real biological databases as tools**. They decode within Ensembl, HGNC, and ChEMBL vocabularies, check tool calls against structured resources, and use retrieval and verifier ensembles for grounding. Their gene–gene hypotheses are *explainable* and draw on several sources. -- Co-authored **TxPert** (*Nature Biotechnology*, 2026), a *state-of-the-art* transcriptomic perturbation predictor conditioned on multiple biological knowledge graphs. Owned **benchmark task design**, **data curation**, and the **out-of-distribution ablations**. +- Build **agents that use real biological databases as tools**. They decode within Ensembl, HGNC, and ChEMBL vocabularies, check tool calls against structured resources, and use retrieval and verifier ensembles for grounding. Their gene–gene hypotheses are explainable and draw on several sources. +- Co-authored **TxPert** (*Nature Biotechnology*, 2026), a state-of-the-art transcriptomic perturbation predictor conditioned on multiple biological knowledge graphs. Owned **benchmark task design**, **data curation**, and the **out-of-distribution ablations**. - **Post-train multimodal LLMs** over knowledge graphs, literature, and omics; use **reinforcement learning** to align agent behaviour with verifiable biological objectives. -- Train **large diffusion transformers** to generate perturbational biology that generalises to unseen perturbations, cell types, and combinations, *rather than interpolating between ones it has*. -- Model **single-cell and bulk RNA-seq** alongside **high-content phenotypic imaging**; *each modality pins down what the other leaves open*. -- Design **active learning** strategies to choose the next experiment under a *fixed budget*, linking model uncertainty to experiments the wet lab can run. +- Train **large diffusion transformers** to generate perturbational biology that generalises to unseen perturbations, cell types, and combinations, rather than interpolating between ones it has. +- Model **single-cell and bulk RNA-seq** jointly with **high-content phenotypic imaging**; each modality pins down what the other leaves open. +- Design **active learning** strategies to choose the next experiment under a fixed budget, linking model uncertainty to experiments the wet lab can run. - **Lead the engineering** on a large scientific project. Set technical direction and engineering standards across ML and biology; scale training and inference across **GPUs in the cloud**; promote code review, reproducibility, and shared tooling to carry research prototypes into production. -- Develop **evaluation strategy and error analysis** for *proteome-scale* binding-affinity screening. +- Work on **evaluation strategy and error analysis** for proteome-scale binding-affinity screening. - Organise the **Virtual Cell Journal Club**, bringing ML and wet-lab teams together. **Senior Research Associate and AI Engineering Lead, EMBL-EBI (Uhlmann Group and Bio-Image Archive)** @@ -37,8 +37,8 @@ Stockholm, Sweden • 2022 – 2024 **AI/ML Engineering Consultant (part-time), DeepMirror** Cambridge and London, UK • 2022 – 2024 -- Shipped **MouseMindMapper**, a brain-histology segmentation product bringing in **£50k of revenue a year**. Owned it *end to end*, from data and training to packaging and docs. -- Wrote a *high-performance* **C++ cheminformatics fingerprinting library** for production. +- Shipped **MouseMindMapper**, a brain-histology segmentation product bringing in **£50k of revenue a year**. Owned it end to end, from data and training to packaging and docs. +- Wrote a high-performance **C++ cheminformatics fingerprinting library** for production. **Data Scientist, Brazma Group, EMBL-EBI** Cambridge, UK • Dec 2019 – Dec 2023 @@ -48,7 +48,7 @@ Cambridge, UK • Dec 2019 – Dec 2023 **Software Engineer (COVID-19 response), European Nucleotide Archive, EMBL-EBI** Cambridge, UK • Mar 2020 – Sept 2020 -- Built CI/CD for the **COVID-19 Data Portal**, enabling it to *publish global data daily*. Scaled NGS alignment and ETL in Nextflow and Kubernetes as volumes surged. +- Built CI/CD for the **COVID-19 Data Portal**, so it published global data daily. Scaled NGS alignment and ETL in Nextflow and Kubernetes as volumes surged. **Computational Microscopist, National Physical Laboratory** London, UK • 2018 – Dec 2019 @@ -59,7 +59,7 @@ London, UK • 2018 – Dec 2019 **PhD, Engineering, University of Cambridge** • 2014 – 2018 (EPSRC PES-CDT) *Thesis on light-sheet microscopy for tracking particles in large specimens* - Designed and built a **new light-sheet microscope**, and wrote the code that ran it. Automated acquisition, **bead tracking** to align the **holographic optics**, and signal optimisation driven by the tracker. -- Wrote **flOPT**, a tomographic reconstruction algorithm that recovers sample pose from tracked fiducial beads and back-projects each ray. It stays **robust to mechanical jitter and drift** where the Radon transform breaks down. Published in *Scientific Reports* and released as open-source Python with OpenCV. +- Wrote **flOPT**, a micrometre-scale tomographic reconstruction that recovers sample pose from tracked fiducial beads and back-projects each ray, so it stays robust to mechanical jitter and drift where the Radon transform breaks down. Published in *Scientific Reports*, open-source Python with OpenCV. - Supervised two MRes students and one BSc student. **MRes, Photonics, University of Cambridge and UCL** • 2013 – 2014 • *structured illumination microscopy reconstruction* @@ -67,32 +67,32 @@ London, UK • 2018 – Dec 2019 ## Selected Publications -1. **TxPert**. Out-of-distribution transcriptomic perturbation prediction over biological knowledge graphs. *Nature Biotechnology* (2026), *co-author*. [doi:10.1038/s41587-026-03113-4](https://doi.org/10.1038/s41587-026-03113-4) -2. **ShapeEmbed**. Self-supervised learning of 2D contour representations. *NeurIPS* (2025), *second author*. [poster](https://neurips.cc/virtual/2025/poster/116558) -3. **MIFA**. Metadata and accessibility standards for reusable AI training datasets in bioimaging. *Nature Methods* (2025), *co-author*. [doi:10.1038/s41592-025-02835-8](https://doi.org/10.1038/s41592-025-02835-8) -4. **DL4MicEverywhere**. Reproducible, containerised deep learning for microscopy. *Nature Methods* (2024), *co-author*. [doi:10.1038/s41592-024-02295-6](https://doi.org/10.1038/s41592-024-02295-6) -5. **CIR4MICS**. Synthetic ground truth for benchmarking image-analysis methods. *Bioinformatics* (2023), *co-author*. [doi:10.1093/bioinformatics/btad587](https://doi.org/10.1093/bioinformatics/btad587) -6. **The COVID-19 Data Portal**. Rapid open data sharing for SARS-CoV-2 research. *Nucleic Acids Research* 49(W1) (2021), *co-author*. [doi:10.1093/nar/gkab417](https://doi.org/10.1093/nar/gkab417) +1. **TxPert**. Out-of-distribution transcriptomic perturbation prediction over biological knowledge graphs. *Nature Biotechnology* (2026), co-author. [doi:10.1038/s41587-026-03113-4](https://doi.org/10.1038/s41587-026-03113-4) +2. **ShapeEmbed**. Self-supervised learning of 2D contour representations. *NeurIPS* (2025), second author. [poster](https://neurips.cc/virtual/2025/poster/116558) +3. **MIFA**. Metadata and accessibility standards for reusable AI training datasets in bioimaging. *Nature Methods* (2025), co-author. [doi:10.1038/s41592-025-02835-8](https://doi.org/10.1038/s41592-025-02835-8) +4. **DL4MicEverywhere**. Reproducible, containerised deep learning for microscopy. *Nature Methods* (2024), co-author. [doi:10.1038/s41592-024-02295-6](https://doi.org/10.1038/s41592-024-02295-6) +5. **CIR4MICS**. Synthetic ground truth for benchmarking image-analysis methods. *Bioinformatics* (2023), co-author. [doi:10.1093/bioinformatics/btad587](https://doi.org/10.1093/bioinformatics/btad587) +6. **The COVID-19 Data Portal**. Rapid open data sharing for SARS-CoV-2 research. *Nucleic Acids Research* 49(W1) (2021), co-author. [doi:10.1093/nar/gkab417](https://doi.org/10.1093/nar/gkab417) 7. **mmSIM**. Open toolbox for structured illumination microscopy. *Phil. Trans. R. Soc. A* (2021), *first author*. [doi:10.1098/rsta.2020.0353](https://doi.org/10.1098/rsta.2020.0353) -8. **Frame-localisation OPT (flOPT)**. Tomographic reconstruction from tracked fiducial beads, robust to mechanical jitter and drift. *Scientific Reports* (2021), *first author*. [doi:10.1038/s41598-021-83454-z](https://doi.org/10.1038/s41598-021-83454-z) +8. **Frame-localisation OPT (flOPT)**. Tomographic reconstruction from tracked fiducial beads. *Scientific Reports* (2021), *first author*. [doi:10.1038/s41598-021-83454-z](https://doi.org/10.1038/s41598-021-83454-z) The full list is on [Google Scholar](https://scholar.google.com/citations?user=XVt7BYQAAAAJ&hl=en). ## Patents -- **Virtual Cell Foundation Model**, *patent pending*, 2025 (Recursion) -- **TxPert, transcriptomic perturbation prediction**, *patent pending*, 2025 (Recursion) +- **Virtual Cell Foundation Model**, patent pending, 2025 (Recursion) +- **TxPert, transcriptomic perturbation prediction**, patent pending, 2025 (Recursion) ## Skills **ML and AI.** Diffusion transformers, generative modelling, fine-tuning and post-training foundation models, reinforcement learning, agents and tool use, constrained decoding and retrieval grounding, active learning, contrastive and self-supervised learning, OOD and uncertainty, evaluation and benchmark design **Frameworks.** PyTorch, Lightning, Hugging Face, Pyro, TensorFlow, scikit-learn -**Biology and data.** Single-cell and bulk RNA-seq, high-content and phenotypic imaging, histopathology, GNNs, knowledge graphs; UniProt, PDB, Ensembl, NCBI, ChEMBL +**Biology and data.** Single-cell and bulk RNA-seq, high-content and phenotypic imaging, histopathology, GNNs, knowledge graphs; UniProt, PDB, Ensembl, HGNC, NCBI, ChEMBL **Languages.** Python (primary), R, C++, Rust, MATLAB, Java **Compute.** Multi-GPU (A100, V100), CUDA, distributed training, SLURM, HPC, GCP, AWS **MLOps and infrastructure.** Kubernetes, Docker, NVIDIA Triton, KServe, MLflow, CI/CD, Terraform; Nextflow, Snakemake, Airflow ## Grants, Teaching, and Service -- **Grants.** AI4LIFE (2022, €5M EU Horizon, co-author) • EPSRC CDT Studentship (2013–2018, £120k) • Nuffield Research Bursary (2012) +- **Grants.** AI4LIFE (2022, €5M EU Horizon, co-author) • EPSRC CDT Studentship (2013 – 2018, £120k) • Nuffield Research Bursary (2012) - **Teaching.** Led the Deep Learning for Bioimage Analysis course (2019–2023), 40+ participants a year - **Supervision.** 6 PhD students in AI and spatial biology, and 3 project students - **Peer review.** Nature Methods, Scientific Reports, Journal of Microscopy, ISBI (2022, 2023), ICASSP (2024) From b47ec72256e667256d303bbad7d21485112cd891 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 4 Oct 2026 06:26:19 +0000 Subject: [PATCH 6/7] [cv] Homographic, not holographic, alignment in the PhD entry Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JFVYogXC9MgS2EuFBvrZog --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index be0869c..4fd5c81 100644 --- a/index.md +++ b/index.md @@ -58,7 +58,7 @@ London, UK • 2018 – Dec 2019 **PhD, Engineering, University of Cambridge** • 2014 – 2018 (EPSRC PES-CDT) *Thesis on light-sheet microscopy for tracking particles in large specimens* -- Designed and built a **new light-sheet microscope**, and wrote the code that ran it. Automated acquisition, **bead tracking** to align the **holographic optics**, and signal optimisation driven by the tracker. +- Designed and built a **new light-sheet microscope**, and wrote the code that ran it. Automated acquisition, **bead tracking** for **homographic alignment** of the optics, and signal optimisation driven by the tracker. - Wrote **flOPT**, a micrometre-scale tomographic reconstruction that recovers sample pose from tracked fiducial beads and back-projects each ray, so it stays robust to mechanical jitter and drift where the Radon transform breaks down. Published in *Scientific Reports*, open-source Python with OpenCV. - Supervised two MRes students and one BSc student. From e05444294571432474b7c108ac6cadc7a03c8bb9 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 4 Oct 2026 06:28:06 +0000 Subject: [PATCH 7/7] [cv] Port the page-break rule from #10 and the SEO metadata from #7 cv-print.css keeps a role heading on the same page as its bullets, so make pdf no longer splits the National Physical Laboratory entry across the break. _config.yml gains url, author, and a real description, so jekyll-seo-tag emits a meta description and canonical link. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JFVYogXC9MgS2EuFBvrZog --- _config.yml | 7 +++++-- cv-print.css | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index 92aaeaa..277d216 100644 --- a/_config.yml +++ b/_config.yml @@ -37,6 +37,9 @@ exclude: - cv-print.html # Site metadata - -description: > +url: "https://ctr26.github.io" +author: Craig T. Russell +description: >- + Craig T. Russell, PhD, Senior Machine Learning Scientist at Valence Labs (Recursion Pharmaceuticals), + building generative and agentic models for biology. diff --git a/cv-print.css b/cv-print.css index bccba6c..e8a9c58 100644 --- a/cv-print.css +++ b/cv-print.css @@ -16,3 +16,5 @@ body { max-width: none; margin: 0; padding: 0; } header#title-block-header { margin: 0 0 2mm; } h1.title { font-size: 17pt; margin: 0 0 1mm; text-align: left; } p.subtitle { font-size: 10.5pt; color: #444; margin: 0; text-align: left; } +/* Keep a role heading (the paragraph before its bullets) on the same page as them. */ +p:has(+ ul) { break-after: avoid; }