We are looking for a senior Software Engineer to join our team to scale the core system behind Braid's engineering design automation platform. That system combines symbolic reasoning, geometry, physics simulation, constraint solving, and machine learning, and it is taking on new capabilities quickly. Your job is to keep it coherent while it does: simplify what has drifted, harden what carries the load, and extend the foundations yourself when new capabilities need it.
Braid works on engineering design automation. Our view is that producing a good design means reasoning about physics, geometry, and manufacturing constraints together, from first principles, rather than from patterns learned by past examples. This is a problem that more data and larger models do not solve on their own: it needs a combination of formal reasoning and learning, and people comfortable with both.
Our reasoning architecture is built to replace the draw→simulate→redesign loop. An engineer describes what a component has to do and our reasoning agent derives geometry that meets those requirements and can be manufactured, in hours rather than weeks.
See more on our website: https://braid.tech/
Our career pages: https://braid.tech/careers
Braid's system brings together several different kinds of computation (symbolic reasoning, geometry, physics simulation, constraint solving and machine learning) each with its own performance characteristics and failure modes, working together to produce geometry that is ultimately manufacturable. The core is written in Python, C++, and Rust. As the platform grows, you will be responsible for keeping the architecture underneath it sound.
Most of this work is consolidation rather than new construction.
Keep the system coherent as it grows. When new requirements and components arrive, fit them into the existing structure rather than letting a parallel framework grow beside it. Actively identify any design drift and realign it with the core architecture.
Strengthen the parts under the most load. Find the interfaces and components that are fragile or slow, and make them solid. Much of the value here is in hardening what already works.
Consolidate and simplify. Remove duplication, retire abstractions that are no longer needed, and reduce the number of ways the same thing is done. A simpler system is easier to keep correct.
Extend the foundations. Some new capabilities need changes to the core structures. When they do, you design the change and write the code yourself, rather than handing a conceptual design to others to build.
Support the engineers working within it. Work on the interfaces, patterns, and tooling that let other specialists do their work without fighting the system.
We look for a particular combination of qualities.
Depth in one area, and range beyond it. The work sits at the intersection of symbolic reasoning, geometry, physics simulations, constraint solving, manufacturing, and machine learning, held together by systems that have to be correct and fast. We look for people with real depth in at least one of these who are willing to learn enough of the others to be useful where they meet. We are wary of specialists who do their own part well and leave the seams to someone else.
Driven to make the product better. Braid already has a working product, users, and an architecture that enables production runs. Much of the work is making that better: strengthening it, simplifying it, and extending it. We look for people who find that satisfying, and who would rather take something concrete and make it excellent than start from a blank page for its own sake.