Skip to content
Louis Magowan

Hi, I'm Louis

ML/AI engineer & social scientist.

I build secure, scalable and cost-efficient software that serves hundreds of thousands of customers. My academic background is in social science at LSE, with a particular interest in education research and policy.

louis.py

from dataclasses import dataclass
 
 
@dataclass
class Louis:
    role: str = "Freelance ML engineer"
    based_in: str = "Sydney, Australia"
    education: tuple = (
        "MSc Applied Social Data Science, LSE",
        "BSc Social Policy, LSE",
    )
    builds: tuple = (
        "Production AI agents",
        "ML services and APIs",
        "Data pipelines and platforms",
        "MLOps and observability tooling",
        "Web front ends, including this site",
    )
    published_in: tuple = (
        "Journal of Computational Social Science",
        "Towards Data Science",
        "The Qonto Way",
    )
    speaks: tuple = (
        "English (native)",
        "French (C1)",
    )
    interests: tuple = (
        "cooking",
        "travel",
        "tennis",
        "meditation",
    )
 
 
me = Louis()  # scroll for more ↓

01

About

I'm half-Aussie, half-Irish and have lived between the two countries, with periods of work and study in Paris and London. I moved back to Sydney in 2025.

I've worked across the Data stack, as both a data analyst and a data scientist. Over time, though, I realised I'd rather be an explorer-builder than just the explorer that “Data” roles often require. I moved into ML and AI engineering and have had no regrets – it's been the most stimulating work of my career. I thrive in zero-to-one settings, with ambiguity and autonomy in equal measure, and I'm thrilled when I encounter a problem that can only be solved with outside-the-box thinking.

I'm currently freelancing as an ML, AI and software engineer, and taking some time to upskill. I've been brushing up on front-end development (this website was good practice) and learning Rust. I'm also looking for volunteering opportunities, especially in education, where I can use my professional skill-set for good, as I've done for charities before.

AI is one of the most disruptive technologies in history. I remain optimistic about its transformative potential but recognise the many risks it poses to modern society. I believe it can and must be used in a judicious, equitable manner and with the appropriate safeguards. It should be used to alleviate suffering and drudgery, but not more than that.

Art will always be a human endeavour.

Open to

  • Freelance ML, AI and full-stack engineering projects
  • Education and ed-tech work in Sydney
  • Volunteering that uses data or AI for good

Right to work

  • Australia · Australian citizen
  • UK · British citizen
  • EU · Irish citizen

02

Experience

  1. – · Paris, then remote from Sydney

    Qonto · European fintech for SMEs

    1. Staff Machine Learning Engineer · – · contract

      Designed and shipped Qonto's first AI analytics agent: a secure LLM-to-SQL agent for financial analysis, used by over 500,000 customers, with over 85% answer satisfaction, 99.9% uptime and P95 latency under five seconds. Delivered a new Python Accounting Engine as a FastAPI service, migrating legacy Go functionality and combining deterministic rules with LLM-generated ledger entries to raise document validity from ~30% to ~70%.

    2. Machine Learning Engineer · –

      Built the engine that detects recurring transactions across every customer's account, powering the cash-flow management feature of the Qonto app. Deployed it as a weekly Kubernetes job with Kafka event publishing, Prometheus metrics and Sentry alerting.

    3. Senior Data Scientist · –

      Co-built Qonto's first in-house Bayesian marketing mix models, which informed its annual advertising budgets. Became a top-10 contributor to PyMC-Marketing.

    4. Data Scientist · –

      Ran geo-experiments using augmented synthetic controls, delivering causal, statistically significant savings of ~€2.2 million in marketing costs, and adding an estimated €56.5k in incremental customer lifetime value.

  2. – · London

    MSc Applied Social Data Science, LSE

    Studied Applied Machine Learning, Deep Learning, Applied Regression Analysis, Computer Programming, Data for Data Scientists and Research Design.

  3. – · London

    Data Analyst, Jellyfish

    Provided insights to win a pitch for Nike's global app marketing account. Delivered a creative and copy A/B testing framework for numerous clients, including eBay, Rakuten and BMW. Worked daily with Google Ads, Meta, Apple Search Ads, SA360 and Firebase data.

  4. – · London

    BSc Social Policy, LSE

    Studied economics, social research methods and education policy. First-class dissertation on how school classifications and structures can impact academic outcomes in Northern Ireland.

03

Research

Journal of Computational Social Science · vol. 6 ·  · sole author · open access

Centre Assessment Grades in 2020: A Natural Experiment for Investigating Bias in Teacher Judgements

Teacher judgements shape students' futures, from the move to secondary school to university applications. In 2020, COVID interruptions meant England's exams were cancelled and teachers awarded grades instead, creating a natural experiment. By training machine learning models on 2018–19 GCSE results to predict what 2020 students would likely have received in exams, the study estimates the treatment effects of teacher assessment by students' demographic and socio-economic characteristics.

No category of student was marked down: teachers graded all above their likely exam results. Over-prediction varied, though, and intersecting three characteristics widened the gap between categories up to 3.4 times.

GCSE results analysed
3.1M
Students across 2018–2020
349k
Presented at
Royal Economic Society Annual Conference, Glasgow, 2023

UK Statistics Authority · Digital Economy Act 2017 · accredited  –  · no. 36983

Accredited Researcher, Office for National Statistics

In the UK, confidential government records about individuals, such as pupils' exam results, are shared for research under the Five Safes framework. Safe data is handled before researchers are involved: records are de-identified before they reach the secure environment. Here's how the other four safes applied to the paper above.

  • Safe People

    Every researcher must be accredited by the UK Statistics Authority. I passed the ONS Safe Researcher assessment on confidential data and statistical disclosure control, and joined its public register.

  • Safe Projects

    The project took six months and three rounds of proposals to approve, with reviews by ethics committees, the Department for Education, Ofqual and the Research Accreditation Panel.

  • Safe Settings

    I could only work with the data on-site, in the ONS SafeRoom in London. Nothing left the room without clearance.

  • Safe Outputs

    Every result passed a two-stage check by the ONS disclosure team, and none describes fewer than 100 students, so no pupil could be identified.

04

Writing & Talks

05

Skills

Adept at data science, machine learning and AI. Competent with back-end, some knowledge of front-end.

  • Python
  • TypeScript
  • JavaScript
  • HTML
  • CSS
  • R
  • Bash
  • scikit-learn
  • TensorFlow
  • Keras
  • spaCy
  • Optuna
  • NumPy
  • SciPy
  • pandas
  • Polars
  • Jupyter
  • Plotly
  • Streamlit
  • Claude
  • Gemini
  • MCP
  • Pydantic
  • FastAPI
  • SQLAlchemy
  • pytest
  • uv
  • Ruff
  • Node.js
  • npm
  • Vite
  • React
  • Tailwind CSS
  • Biome
  • Vitest
  • Chrome DevTools
  • Git
  • GitHub
  • GitLab
  • Dependabot
  • Snowflake
  • DuckDB
  • PostgreSQL
  • Kafka
  • Airflow
  • BigQuery
  • Google Cloud
  • Cloudflare
  • Docker
  • Kubernetes
  • Helm
  • Argo CD
  • Terraform
  • MLflow
  • DVC
  • Metabase
  • OpenTelemetry
  • Prometheus
  • Grafana
  • Sentry
  • Jaeger
LLMs & Agents
pydantic-ai, Guardrails, AWS Bedrock, Gemini on Vertex AI, Claude Code, MCP; agents with tools, LLM-to-SQL, prompt caching, LLM-as-a-judge evaluation, prompt-injection defence
ML & Statistics
scikit-learn, LightGBM, Optuna, SHAP, TensorFlow/Keras, spaCy, PyMC, Prophet, statsmodels; Bayesian modelling, causal inference, A/B testing, forecasting, NLP, statistical disclosure control
Marketing Science
PyMC-Marketing, CausalPy, Robyn, GeoLift; marketing mix models, geo-experiments with synthetic controls, conversion lift tests, SEO and generative engine optimisation (GEO); Google Ads, Meta Ads, SA360, Apple Search Ads, Google Analytics, Firebase
Back-End Engineering
FastAPI, Pydantic, asyncio, PostgreSQL, Kafka, PASETO service auth, pytest, uv, ruff, mypy; API and database design
Front-End Engineering
HTML, CSS, JavaScript, TypeScript, React, Tailwind CSS, Vite, Biome, Vitest, Playwright, Chrome DevTools; accessibility (WCAG 2.2) and progressive enhancement
Software Delivery
Git, GitHub Actions, GitLab CI, Dependabot, LaunchDarkly, Lefthook, Make; trunk-based development, feature flags and progressive rollouts, AI-assisted code review
Data & Analytics
SQL, regex, dbt, Elementary, Snowflake, BigQuery, DuckDB, Airflow, Polars, pandas; Metabase, Looker Studio, Tableau, Streamlit, Matplotlib, Seaborn
MLOps & Infrastructure
MLflow, DVC, Docker, Kubernetes, Helm, Argo CD, Terraform, AWS, GCP, Cloudflare Workers
Observability
OpenTelemetry, Prometheus, Grafana, Jaeger, Sentry, Finout; distributed tracing, structured logging, alerting, cost monitoring

06

Open Source

  • pymc-labs/pymc-marketing

    PyMC-Marketing

    Historical top-10 contributor

    Created its first interactive MMM explainer app, plus Bayesian evaluation metrics and MLflow model registry support.

  • pymc-labs/CausalPy

    CausalPy

    Collaborator status

    Promoted to collaborator, the third of four levels on its contributor pathway, after maintenance contributions to PyMC Labs' causal inference library.

07

Volunteering

  • French Red Cross

    Homelessness · –

    ‘Maraudes’: offering food, tea and conversation to people living on the streets.

  • Family Engagement Lab

    Education ·

    Built an analysis staff could rerun without knowing Python. The charity estimated it saved $6,100 and used it to guide its outreach.

  • CrossPurpose

    Employment ·

    Modelled who benefits most from the charity's programme, and built a dashboard it extended to other areas of its work.

08 · Contact

Happy to talk about ML & AI, education, or using data for good.