Skip to content
View morichtereur's full-sized avatar

Block or report morichtereur

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
morichtereur/README.md

Moritz Richter

Finance and strategy consultant in Zürich — CFO advisory, global business services, finance transformation. Currently at EY.

I write code because consulting runs on information that arrives a week too late to change a decision. Most of what's here is an attempt to close that gap: pipelines that read the market on a schedule, retrieval over financial reporting, and process analysis that turns an operation's own exhaust into a number someone can act on.

I'm not a software engineer by training. The projects below run in production anyway.

Things I've built

p2p-process-mining Process mining on a real 1.6M-event SAP purchase-to-pay log. Only 20% of 251,734 cases follow the process's own most common path — the rest scatter across 11,973 variants. Rework carries a 19.6-day median cycle-time penalty, and the expensive rework is not the common kind. Includes a citation-grounding eval for LLM-written case narratives: every claim checked against the raw event log rather than judged by a second model. Python · DuckDB · LLM API · matplotlib

gbs-agentic-shift McKinsey argues agentic AI is turning the GBS talent pyramid into a diamond — a shrinking transactional base and a new layer managing the "agent force." Classified 2,110 live GBS/finance-operations postings across ten markets to test that claim against the market instead of the pitch deck: agent-ops roles are 2% of postings, and the transactional base didn't shrink so much as move to third-party providers — 84% transactional there versus 38% at captive functions. Python · DuckDB · LLM API · matplotlib · pytest

gbs-business-case The other half of the same problem: what those findings are worth. Baseline measured from the same 1.6M events instead of estimated in a workshop, with measured facts and assumptions held in separate files so a reader can see which half of the answer is evidence. Monte Carlo over the declared ranges, plus a variance decomposition that says which week of diligence buys the most confidence. At central assumptions the case does not clear the hurdle — NPV −€142,931, 26% odds of a positive result — because reworked cases average 1.48 touches, not the multi-touch slog usually assumed. Python · DuckDB · NumPy · matplotlib

dax-intelligence Ask one question across 15 DAX 40 annual reports, get an answer with company and page citations, behind a prompt that will not answer without a source. Retrieval and generation eval harness: precision@k / recall@k, faithfulness, citation accuracy. Python · ChromaDB · Streamlit · pytest

fpa-decision-model A driver-based forecast for adidas AG, backtested against what actually happened instead of validated on its own assumptions. Built from FY2024 data and adidas's own stated FY2025 guidance, it beat a naive top-down extrapolation on every metric — free cash flow error of 3.4% versus 14.8%. A Monte Carlo run shows working-capital assumptions, not revenue growth, explain most of that uncertainty. Python · NumPy · LLM API · pytest

gbs-intelligence-agent 69 RSS feeds across 33 consulting firms, analyst houses and client companies. The LLM scores every article 0–3 for strategic relevance; only the top tier reaches the Monday brief, the rest stay searchable in a dashboard. 1,132 articles scored, 30 reached the brief, 16 weekly editions shipped without a manual step. Python · LLM API · SQLite

How I build

Python, DuckDB, ChromaDB, SQLite, the LLM API. Where something needs a UI I tend to write plain HTML — the dashboards are single files you open in a browser, no server, no build step. Easier to hand to a colleague that way.

Where a project makes a claim, there is a script that reproduces it.

Background

MSc Financial Economics, Erasmus University Rotterdam.

Portfolio · LinkedIn

Pinned Loading

  1. gbs-business-case gbs-business-case Public

    Purchase-to-pay business case built on a measured baseline — opportunity sizing, NPV, Monte Carlo sensitivity and diligence-priority analysis, kept strictly separate from what it has to assume

    Python

  2. p2p-process-mining p2p-process-mining Public

    Process mining on a real purchase-to-pay event log (BPI Challenge 2019) — variant analysis, touchless rate, rework cost, sequence violations

    Python

  3. dax-intelligence dax-intelligence Public

    AI-powered RAG system for querying 15 DAX 40 annual reports (FY2025) — built for finance & strategy professionals

    Python

  4. gbs-intelligence-agent gbs-intelligence-agent Public

    Automated competitor & client intelligence agent for GBS / Finance Transformation consulting. Python + Claude API + Google Alerts → weekly newsletter + interactive dashboard.

    Python

  5. fpa-decision-model fpa-decision-model Public

    Driver-based FP&A forecast for one DAX 40 segment, backtested against actual results, with a grounded LLM commentary layer.

    Python

  6. gbs-agentic-shift gbs-agentic-shift Public

    A transparent, point-in-time readout of GBS labour demand across transactional, judgment, and agent_ops.

    HTML