Christoph Garritsen

Optimization, simulation and AI agents for engineering workflows.

Mechanical engineer, finishing a doctorate in transport optimization at Volkswagen and TU Munich. Freelance since 2026.

Contact me if you're interested in working together.

… or scroll down for the projects …

RevDateDescription
E2026–Freelance. Trend research agents for an industrial group
D2022–Doctoral researcher at Volkswagen and TU Munich, submission Dec 2026. Ridepooling planning, adopted into Volkswagen's strategy
C2020–22M.Sc. Mechanical Engineering, Wuppertal. Thesis in powertrain research at Volkswagen
B2016–20B.Eng. Mechanical Engineering, FH Münster. Thesis in engine testing at DEUTZ

Optimization and simulation

Models that search all options of a design question and find the best one, developed in doctoral research on ridepooling.

Engineering

Background in mechanical engineering: engine testing at DEUTZ, powertrain research at Volkswagen. The basis for turning engineering questions into models and automated workflows.

AI agents in engineering

Engineer and agent work in the same software. The agent handles the routine work, the engineer decides.

Drawn by
Christoph Garritsen
Title
Optimization, engineering, AI
Sheet
Language

How a project runs

Projects start with a workshop and a proof of concept, followed by a decision on how to continue.

problem descriptionproof of conceptdecisiondata infirst modelfirst numbersreviewbuild it outchange courseno benefit, stopt → min

A workshop with the engineers who do the work, to understand the workflow and set the goals.

A first prototype for exactly this workflow, as the basis for the decision.

Drawn by
Christoph Garritsen
Title
How a project runs
Sheet
Language

Engineering toolbox for AI agents

Tools that let an AI agent use the same engineering software as the engineer, with every step logged. The cases below are illustrations.

Agentagent · logTools for the agentEngineerEngineering softwareairflowgaugeswingdoordata▸ cad.set(spoiler_angle, 8°)▸ cfd.mesh(sedan_v4)▸ cfd.run(140 km/h)▸ drag cd 0.287 → 0.279▸ ask: rear lift +12 %, accept it?cad.set(param, value)[CAD]cfd.run(case)[CFD solver]cfd.mesh(model)[mesher]post.coefficients(run)[post-processing]pdm.checkin(part, rev)[PDM]report.section(...)[template]CFD · sedan, 140 km/hsedan_v4bodyrear spoilerunderbodywheelsu = 140 km/hspoiler 6°,rerun lift.▸ opt.define(14 gauges, mass)▸ opt.run(GA, 400 designs)▸ fem.run per design▸ best: −6.2 kg, 23.6 kNm/°▸ ask: roof rail 0.7 mm, formable?opt.define(vars, goal)[optimizer]fem.run(load_case)[FEM solver]opt.run(method, n)[optimizer]cad.set(param, value)[CAD]pdm.checkin(part, rev)[PDM]report.section(...)[template]Optimizer · sheet gauges, body in whitestudy_gaugesvariables (14)objective: masstorsion ≥ 23.5designs (400)stiffness kNm/°mass saved, kgtarget 23.5min. 0.8 mm,rerun study.▸ fem.load(wing_v3, lift 2.5 g)▸ fem.run(static, nonlinear)▸ tip deflection 1.9 m▸ root stress 412 MPa, limit 390▸ ask: thicker spar cap or extra rib?fem.load(model, case)[FEM pre]fem.run(load_case)[FEM solver]post.results(run)[post-processing]loads.lookup(case)[loads database]pdm.checkin(part, rev)[PDM]report.section(...)[template]FEM · wing box, 2.5 g pull-upwing_v3spar, frontspar, rearribs (24)skin, upperlift, 2.5 gw = 1.9 mspar cap+2 mm,ribs stay.▸ cad.open(door_LH)▸ cad.set(hinge_t, 1.6 mm)▸ fem.run(door sag, 800 N)▸ sag 1.9 mm, limit 1.5 mm▸ ask: keep 2.0 mm at the upper hinge?cad.open(assembly)[CAD]fem.run(load_case)[FEM solver]cad.set(param, value)[CAD]pdm.checkin(part, rev)[PDM]cad.measure(a, b)[CAD]report.section(...)[template]CAD · sedan, front door leftsedan_v4door, front lefthinge, upperhinge, lowerlatchF = 800 N, latchhinge t = 2.0 → 1.6 mmupper hinge2.0 mm,lower 1.6.▸ data.load(fleet, 48 cars, 30 d)▸ data.clean(gaps, spikes)▸ stats.compare(brake_temp)▸ 3 cars +40 °C, same sensor batch▸ ask: sensor fault or brake drag?data.load(source, range)[fleet database]data.clean(rules)[pipeline]stats.compare(signal)[statistics]plot.series(signal)[notebook]data.export(table)[data lake]report.section(...)[template]Notebook · test fleet, brake temperaturesfleet_2026_09cars (48)brake_tempwheel_speedambientbrake temperature °Cdayscars, by mean100150cars 17, 23, 31swap sensorson car 17,then decide.callsresultsdrives the same softwareworks in it as usualtaskquestion
Drawn by
Christoph Garritsen
Title
Engineering toolbox for AI agents
Sheet
Language

Set 02 of 03

Projects

Three projects and a few smaller tools.

SheetTitleForShows
1Technology trendsIndustrial group, via a research instituteResearch agents that find technology trends early and back every claim with a source.
2Boat compilerOwn projectBoat design software, built in two weeks, used by an agent and an engineer together.
3Autonomous ridepoolingDoctorate, Volkswagen and TU MunichWhich villages driverless shuttles should serve, for a given fleet and fare.
4Also builtA video editor for AI agents, and two phone apps.
Drawn by
Christoph Garritsen
Title
Projects
Sheet
Language

Designing a boat
with an agent

Design software, built in two weeks to test whether an agent can get from a brief to a priced concept. Below, one session in a single take, waiting times sped up.

EngineerAgentEngineering softwarebriefnew boat80 hullsreportsbest 3?picks 3edits hullrecomputeslay outlayoutsrigsreportssensitivity?influenceexplainsredesignnew limitsrigs againpickssummarypowersummarychecks
Client
Own project
Role
Built alone
Period
2 weeks, 2026
Title
Boat compiler
Sheet
Language

Autonomous ridepooling
for countryside commuters

From the doctorate at Volkswagen and TU Munich. Driverless shuttles on demand, shared by several passengers. Choose a fleet and a fare. The optimiser selects the villages to serve so that the shuttles carry the most passenger-km.

L'Abergement-de-VareyAmbérieu-en-BugeyAmbronayAmbutrixArancArandasArgisBalanBéligneuxBénoncesBettantBeynostBirieuxBlyesLa BoisseBouligneuxBourg-Saint-ChristopheBoyeux-Saint-JérômeBressollesBriordLa BurbancheCerdonChalamontChaleyLa Chapelle-du-ChâtelardCharnoz-sur-AinChâteau-GaillardChâtenayChâtillon-la-PaludChazey-sur-AinCleyzieuConandCorlierCransDagneuxDompierre-sur-VeyleDouvresDruillatÉvosgesFaramansPlateau d'HautevilleIzenaveJoyeuxJujurieuxLagnieuLantenayLapeyrouseLeymentLhuisLompnasLoyettesMarlieuxMérignatMeximieuxMiribelMontagnieuLe MontellierMontluelNeuville-sur-AinNiévrozNivollet-MontgriffonOncieuOrdonnazPérougesPizayLe PlantayPoncinPont-d'AinPriayRignieux-le-FrancSaint-André-de-CorcySainte-CroixSaint-Denis-en-BugeySaint-ÉloiSaint-Germain-sur-RenonSaint-Jean-de-NiostSaint-Jean-le-VieuxSainte-JulieSaint-MarcelSaint-Maurice-de-BeynostSaint-Maurice-de-GourdansSaint-Maurice-de-RémensSaint-Nizier-le-DésertSaint-Rambert-en-BugeySaint-Sorlin-en-BugeySaint-VulbasSandransSault-BrénazSeillonnazSerrières-de-BriordSouclinTenayThilTorcieuTramoyesVarambonVaux-en-BugeyVersailleuxVillars-les-DombesVilleboisVillette-sur-AinVillieu-Loyes-MollonAnnoisin-ChatelansAnthonLes Avenières Veyrins-ThuellinLa Balme-les-GrottesLe BouchageBouvesse-QuirieuBranguesChamagnieuCharetteCharvieu-ChavagneuxChavanozChozeauCourtenayCrémieuCreys-MépieuDizimieuFrontonasGrenayHières-sur-AmbyJanneyriasLeyrieuMontalieu-VercieuMorasMorestelOptevozPanossasParmilieuArandon-PassinsPont-de-ChéruyPorcieu-AmblagnieuSaint-Baudille-de-la-TourSaint-ChefSaint-Hilaire-de-BrensSaint-Marcel-Bel-AccueilSaint-Quentin-FallavierSaint-Romain-de-JalionasSaint-SavinSaint-Victor-de-MorestelSalagnonSatolas-et-BonceSermérieuSiccieu-Saint-Julien-et-CarisieuSoleymieuTignieu-JameyzieuTreptVénérieuVernasVertrieuVeyssilieuVézeronce-CurtinVillemoirieuVillette-d'AnthonChassieuDécines-CharpieuGenasJonageJonsMeyzieuMionsPusignanSaint-Bonnet-de-MureSaint-Laurent-de-MureSaint-Pierre-de-ChandieuSaint-PriestToussieuColombier-SaugnieuMeyzieuAmbérieuGenasCharvieuTignieuMeximieuxLagnieuMontluelSaint-Bonnet-de-MureJonagePontSaint-Laurent-de-MureVillars-les-DombesVillette-d'Anthon

industrial park,
always served

06:00

09:30
  • industrial park
  • served
  • waiting
  • turned away
  • too expensive
  • shuttle 0–4 aboard
  • simplified: a quick rule and a greedy search, not the thesis model

of all commuters would pay this fare.

villages served
chosen by the optimiser
trips carried
driving empty
of the shuttles' time on the road
passenger-km
what the optimiser maximises
sharing a ride
of riders, with others aboard
average wait
from booking to pickup
public subsidy per passenger-km
Client
Doctorate, Volkswagen and TU Munich
Role
Method, models and software
Period
2022–26
Title
Autonomous ridepooling
Sheet
Language

Also built

Smaller tools, built for personal use.

The video editor for AI agents: clip library, two monitors and a multitrack timeline.

Video editor for AI agents

An AI agent cuts a folder of holiday videos. It analyses every clip and exports the cut as a Kdenlive project for manual finishing.

SkiTrace: a ski resort map with the runs you have ridden.

SkiTrace app

Matches recorded ski days to a resort's runs and lifts. Runs on the phone, and GPS data stays on the device.

LingoLock: a Spanish fill-in-the-blank card.

LingoLock app

Short Spanish exercises shown before apps you want to limit, repeated just before you would forget them.

Drawn by
Christoph Garritsen
Title
Also built
Sheet
Language

Interested in working together?

contact@christophgarritsen.com

Remote. German and English.

About me

Mechanical engineer, now mostly writing software: models in Python with Gurobi, interfaces in TypeScript, AI agents with their own tools.

Drawn by
Christoph Garritsen
Title
Contact
Sheet
Language
Drawn by
Christoph Garritsen
Title
Imprint
Sheet
Language
Drawn by
Christoph Garritsen
Title
Privacy
Sheet
Language

Turn your phone sideways to read the drawings.