Thomas Maucourt

Senior Software Engineer

Senior backend engineer. I design and build the data systems and APIs that products run on, and I've learned that shipping them well counts for as much as building them — small visible increments that non-technical stakeholders can see and react to, while the harder work keeps moving underneath.

I came to engineering from microbiology and bioinformatics rather than a CS degree, which set the habit early: learn whatever the problem actually needs. Python in depth for production work, and search systems have followed me around since 2018 — from Elasticsearch at Waycom through to RAG and vector retrieval at RANE. Years later, the first week on something I don't understand yet is still my favorite part of the job.

Greater Boston, Massachusetts thomas@maucourt.com LinkedIn GitHub

Experience

Senior Software Engineer
RANE (Risk Assistance Network + Exchange) · Boston, MA

Architected high-performance data systems and vector search pipelines, and scaled the retrieval architecture behind the platform.

  • Built the vector search proof of concept that made the case for the approach internally. It was adopted into the production retrieval stack, where the team took it further — reranking results on document date to favor more recent sources.
  • Worked in small, demonstrable increments so non-technical stakeholders could follow progress and redirect early, while the underlying platform work continued between checkpoints.
  • Wrote the custom internal tooling I use day to day in Go, a language I picked up on my own.
PythonGoFastAPIFalconAWSMongoDBOpenSearchMilvus
Software Engineer
RANE (Risk Assistance Network + Exchange) · Boston, MA

Built and maintained the advanced data systems behind the platform, from ingestion through to search.

  • Implemented the company's first production use of an LLM — a RAG pipeline that summarized the documents returned by an OpenSearch query, so users got an answer alongside their results.
  • Helped migrate authentication from a hand-rolled system to an industry-standard identity provider without disrupting users. Consolidating accounts in one place made managing customers markedly easier afterwards.
  • Turned OpenSearch aggregations into network graphs and other visual representations, so users could see the shape of a result set instead of only a list of hits.
  • Mentored an intern over several months as they built an internal monitoring system, with dashboards covering user activity on the site and traffic across our APIs.
PythonFastAPIFalconAWSMongoDBOpenSearchMilvus
Software Engineer
Waycom · Bordeaux, France

Developed and maintained a business-critical internal management system, streamlining cross-departmental workflows from Finance to Network Engineering.

  • Built the platform's Elasticsearch backend and the stack around it, after what Django REST Framework offered stopped being enough for the search the product needed.
  • A use case that landed on it later grew into one of the bigger things I shipped there: an inventory built with another developer for the network engineering team — VLANs, LAN and WAN addressing, the hardware itself. What they recorded there fed the existing tool that generated router configurations and pushed them onto physical routers before they shipped to customers.
  • Searching by IP address and range was what made it work for them, and my introduction to what Elasticsearch could do beyond plain text.
PythonDjango REST FrameworkPostgreSQLElasticsearchRabbitMQGrafana
Software Engineer Intern
DEXSTR

Implemented high-performance NLP workflows for automated file annotation, focused on scalability and throughput.

  • Profiled the pipeline to find the critical path, then optimized it for a gain of over 10% end to end.
PythonFlaskCeleryRabbitMQ
Data Scientist
iGEM Competition · IECB, Pessac

A bioinformatics pipeline built with two other students and an IECB researcher, quantifying differential expression of spliced mRNA isoforms in C. elegans from next-generation sequencing data. The ratios matter: different splice forms can drive different cellular responses, and can act as markers for some conditions.

  • Worked directly with the IECB researcher, understanding the biology behind the question and reporting progress back to him as the pipeline took shape.
  • Profiled and optimized the pipeline so the team could iterate on results faster — this is where I learned the difference between threads and processes, and why Python pushed the answer toward multiprocessing.
Python
Android Developer
Université de Bordeaux · Bordeaux, France

AirMov3D, a five-person project letting users rotate 3D molecules in PyMOL from a phone. I wrote both ends of the link: the Java data transmission in the Android app, and the Python PyMOL plugin that received the rotation data and applied it to the molecule on screen. The sensor handling was someone else's.

PythonJavaAndroid

Projects

Oriel
Jun 2026 — Present
Natural language to PubMed query generator, for scientists

A researcher types what they are actually looking for. Oriel reads the intent, enriches every concept against controlled MeSH vocabulary held in memory, and assembles a correct boolean query — shown for confirmation before it runs, because implicit grouping is genuinely ambiguous.

0.87 → 0.97 exact-match accuracy, after replacing GLiNER entity extraction plus a local grouping LLM with a single bundled call. Measured across a 270-case eval suite.
  • Chose a hosted LLM over running models locally so the app costs almost nothing to run — a per-query API call beats paying for a machine big enough to do the extraction itself. The tradeoff is that queries leave my infrastructure: fine here, not for every use case.
  • Replaced the live MeSH lookup API with a prebuilt in-memory map, removing the network from the request path entirely.
PythonFastAPIpydantic-aiHTMXFireworks AIMeSH
Weather Station
Jul 2026 — Present
Hardware + software build: a scrolling LED weather display

A Raspberry Pi Zero W polls a weather API and scrolls the forecast across a custom NeoPixel LED matrix, hand-wired and soldered into an enclosure built from MDF. Wrote the text renderer myself: a bitmap font gets converted into a boolean matrix per character, chunked into scrolling frames, then remapped to physical LED index to account for the strip's alternating row wiring.

  • Built the full stack end to end — enclosure fabrication, LED soldering and wiring, GPIO/NeoPixel driver code, and the weather API integration — with no framework or library doing the character rendering for me.
  • Side project, built for fun alongside everything else.
PythonRaspberry PiNeoPixelGPIOHardware fabrication

Skills

Programming

Python, Go

Backend

FastAPI, Falcon, Django REST Framework, Flask, Celery

Data & search

Elasticsearch, OpenSearch, Milvus, MongoDB, PostgreSQL

Infrastructure

AWS, RabbitMQ, Grafana, Kibana

Education

MSc, Computational Biology & Bioinformatics
Université de Bordeaux
2016 — 2018
MSc, Microbiology & Immunology
Université Victor Segalen (Bordeaux II)
2014 — 2016
Licence, Molecular & Cellular Biology, Physiology
Université Victor Segalen (Bordeaux II)
2011 — 2014

Languages

French
Native
English
Full professional