Deutsch

Daniel Sangermann

Software Engineer: full stack, AI agents, real-time computer graphics

BMW, TU Munich and my startup: for six months I carried all three at once and didn’t lower the bar on any of them.

Hover over or focus a bar to see its length. On a focused bar, the arrow keys step through the months.Tap a bar to see its length. Tap it again to open its section.

TU Munich, B.Sc. Computer ScienceOct 2021 to Sep 2026, 60 monthsBachelor’s thesis, physics simulation, a seminar with BMW.
BMW, Computer Graphics EngineerJun 2025 to May 2026, 12 monthsReal-time render system in C++ and OpenGL on embedded Linux.
PrimeBalance, Founder and CTODec 2025 to present, 11 months so farSoftware for tax firms, built and run alone.

6 months with all three running: Dec 2025 to May 2026

My CV as a profiler trace: one track per station, dates exactly as in my CV, counted in whole calendar months. The right edge is the end of October 2026, the month of this build.
Show the trace as a tableHide the table
The three tracks of the trace with start, end and length in months
TrackRoleFromToMonths
TU MunichB.Sc. Computer Science60
BMWComputer Graphics Engineer12
PrimeBalanceFounder and CTOpresent11 so far

PrimeBalance

Dec 2025 to present

PrimeBalance is software for tax firms: bookkeeping, month-end closing and bank reconciliation, with DATEV and ELSTER interfaces built. I designed it, built it and run it alone, as its only technical lead. It runs live at app.prime-balance.de.

The stack is TypeScript, Next.js and PostgreSQL. Row-level security keeps each firm’s data apart and tests check the separation. An orchestrator runs specialised agents for receipt capture, bookings, checks and closing. A person approves before any binding step and every run is logged.

From the repository

  • 20,399automated tests in 1,570 files, from Vitest, Playwright and database tests. The tests gate every release to production.
  • 437REST route handlers, used by the web app and the scanner app, with 316 test files for them.
  • 260/260checks passed when one full-year test case ran on SKR03 and on SKR04, two German charts of accounts, with 240 key figures without deviation.
  • 110row-level security policies in PostgreSQL, with their own tests for the separation of firms.
  • 106database migrations, 30 of them with hand-written security policies.
  • 4MCP servers I built for it: primebalance-search, mcp-datev, mcp-elster and mcp-law-library.

The public demo

The demo replays one month-end closing on sample data: agents check, book and document. People approve. The three screenshots below come from that page. I took them on 10 Oct 2026 at 1440 pixels width.

Screenshot of the demo: the steps of a month-end closing, each with the agent that ran it, its duration and, where needed, the approval by the firm.
Two sub-processes, one closing. Each step names the agent that ran it and how long it took. Approval steps follow the four-eyes principle: a second person at the firm approves.
Screenshot of the demo: the agents’ log with tool steps and the result of the filing step.
The agents’ log. Every thinking and working step sits in the conversation, with its tool steps and result.
Screenshot of the demo: the check before approval, with passed criteria and one warning.
The check before every approval: 21 criteria passed, 1 warning, 0 failed.

BMW

Jun 2025 to May 2026

At BMW I worked as a Computer Graphics Engineer while still in my bachelor’s, on work at the level of a master’s thesis: a real-time rendering system for distributed graphics in C++ and OpenGL, integrated into BMW’s software ecosystem.

I built the complete system: render passes for distributed graphics on embedded Linux, in the lighting domain, with shaders in GLSL. A master-slave architecture splits the work. The master runs the simulation, the slaves render and the data flow between them is clearly defined.

I also wrote desktop front ends in C# with .NET and WinForms. I developed on Windows, WSL and Linux.

Studies and projects

Oct 2021 to Sep 2026

B.Sc. Computer Science at TU Munich. Four pieces of work from the degree and one project of my own.

  • 2026

    Bachelor’s thesis: Didactic Concepts in Machine Learning

    A five-week course part on machine learning and data science, with course material, automated checks and a grading script. Python, pandas, scikit-learn and Hugging Face Transformers.

  • Dec 2024 to Feb 2025

    Data analysis for battery cell development, a seminar with BMW

    Data engineering, data science, machine learning and deep learning in one: data transformation, feature engineering and models on battery data. Python, pandas, scikit-learn and PyTorch.

  • Jan 2025

    Physics simulation, Game Physics course

    Mass-spring systems, rigid bodies with collisions and the heat equation, built as a team in C++ with GLM.

  • Dec 2023 to Feb 2024

    Image processing with SIMD

    Brightness and contrast of images in x86-64 assembly and C with Intel intrinsics.

  • Own project

    Stock price prediction with an LSTM

    An LSTM network in PyTorch for the ten largest S&P 500 companies, with FastAPI, Next.js and Docker on AWS ECS Fargate. Public on GitHub.

Working with AI agents

I use Claude Code every day. My skills, hooks and commands live in the repository, project rules sit in CLAUDE.md and several agents and subagents run in parallel under one orchestrator.

The main loop decides and checks. Agents carry out fully specified tasks. Opus runs the main loop and the adversarial review, Sonnet runs the subagents and Codex reviews as a second pair of eyes. Every fix comes with a regression test. Claude Code diagnoses failed CI runs.

ClickUp, Figma, GitHub and Playwright are connected to Claude Code over MCP. I built four MCP servers of my own: primebalance-search, mcp-datev, mcp-elster and mcp-law-library. Figma designs reach the code through MCP.

Inside the product the agents are my own runtime on Gemini. A step gets at most 10 tool rounds. When a gate check fails, the run halts and waits for input. A person approves before any binding step.

Contact

Available now, full-time or part-time. I am based in Frankfurt am Main and ready to travel.

German native, English C2, French B2.