Applied Operations Research Engineer (m/f/d)
How we work
- Small team, short lines of communication, no layers. You own your work end to end: you build it, you ship it to production yourself, you run it.
- Feedback runs both ways and continuously, in daily work and in weekly one-on-ones. We talk as equals, communicate proactively, and flag it early when something isn't working out. Saying no is part of the job.
- We review each other's work, and we like being together in the Cologne office, because the fastest conversations still happen in a room. Modeling and engine work sit in the same person here by design.
Customer models, end to end. Turn a planning problem, with its capacities, costs, lead times and shift plans, into a model whose answer a plant manager acts on. That includes the data it runs on: ERP and Excel exports, and catching the numbers that cannot be right before the customer does. The interface between software and mathematics. Our engineers, and eventually our customers, build and extend models without needing us in the room. That means deciding where the abstraction belongs and what the modeling vocabulary has to cover, then building it and keeping it standing. Answers people can act on. A planner watches the number improve, can defend it in a meeting weeks later, and still gets something usable when the honest answer is "impossible": which rules collide, and what it would cost to bend one. Scale in both directions. A model that answers for one site still answers when it covers twelve, over more periods, against harder constraints. And a hundred customers solving at once, none of them noticing each other. How you get there is your call. Your features from first line to production. Nobody hands you a ticket and waits.
You have modeled and shipped combinatorial optimization in industry (MILP, CP, or both), with models that survived messy data, deadlines and real users. Algorithm design you have actually shipped: you know where methods and solvers reach their limits, CP-SAT and Gurobi included, and you can say which technique bought you what, from warm starts and rolling horizon to relax-and-fix, aggregation, matheuristics, or a plain heuristic when an exact solve is the wrong tool. You have run optimization workloads where someone was waiting on the answer, not only in notebooks: cancellation, timeouts and parallel solves are problems you have already solved once. Python at production quality: tests, types, review, and a profiler before an optimizer. You know how numerics go wrong where a model meets a solver: scaling, tolerances, integrality, and the moment money stops fitting in an integer. You want to understand the customer's problem and their data, not only the model. You have worked in a team, not mostly alone. German at C1 or better, and fluent English. Team life runs in German; code and docs are English. NRW-based (Cologne office), optionally Munich, Stuttgart, Berlin area or else willing to work hybrid. Open to find a way if we fit.
- Nice to have: solver internals · performance work on numerical or compiled code · DSL or compiler work · production planning, supply chain or logistics domain knowledge.
- You are structured and biased for action, and you have shown you play to win wherever life has put you so far.
Benefits
- Impact. Your models decide how factories plan, on real industrial data, in a product people use daily, not a benchmark set. Customers measure in euros what your work changed, and they tell you.
- Ownership. No approval chain that turns your decision into someone else's.
- The people next to you. The math and OR team on the engine, and the CTO on the platform.
- Feedback speed. You will know where you stand. We say things out loud, we adjust, and we expect the same from you.
- High stakes. Competitive salary and relevant room in the equity package (VSOP) to match your contribution and your career development.
- The basics. Hardware of your choice ·
- AI tooling budget · sports membership ·
- Deutschland-Ticket.
This role is not for you if you want research freedom over product deadlines, if you would rather rewrite an engine than measure it, if you want to work only inside your own abstraction, if the data work is someone else's job, or if you are waiting for the next task to be handed to you.
