Senior Software Engineer (AI & ML)
- London, United Kingdom
- Hybrid
- Senior Level
- 5+ years
- Posted
Skills
Required
- orchestration
- cloud
- Azure
- failure modes
- relational database
- asynchronous
- Terraform
- LLM-based agents / agentic systems in production
- LangGraph / LangChain
- software development
- Python
- backend
- Go / Java / C#
- PostgreSQL
- Kubernetes
Preferred
- state
- cloud infrastructure
- schemas
- code reviews
- best-practice guidance
We’re building AI systems that sit at the heart of how CFC makes complex underwriting decisions. Our Data & AI unit is developing autonomous, multi-step agents that reason over unstructured data, assess risk and deliver real business outcomes, creating the kind of complex engineering problems where great software engineering really matters.
As a Senior Software Engineer (AI & ML), you’ll help shape how these systems are designed and built, working across agent orchestration, APIs, tool integrations, durable state, guardrails, observability and cloud infrastructure. You’ll partner closely with Senior Machine Learning Engineers on the same agents, bringing the engineering depth needed to make them robust, testable and maintainable in production.
We’re looking for someone who combines strong software engineering fundamentals with hands-on experience taking agentic AI beyond prototypes and into production.
About CFC
Making agentic AI work reliably in production means solving challenges traditional software doesn’t always face: non-deterministic behaviour, tool failures, long-running workflows, high-stakes decisions and outputs that need to be observable and auditable. That’s where you come in.
Love what you do: We show up each day ready to take on the world. Our passion and intensity set us apart and makes the difference to our colleagues, customers, brokers and carriers.
Challenge everything: We’re never afraid to question the way that things are done and we constantly challenge ourselves and others to makes things better.
Have fun, be good: Insurance is a serious business, but we don’t take ourselves too seriously. We make it fun to work at CFC, we welcome all viewpoints, and we treat everyone how we would expect to be treated.
Responsibilities
- Design, build and run production AI agents that automate multi-step underwriting decisions over unstructured data.
- agent runtime, including orchestration, durable state, retries and long-running workflows that recover cleanly from failure.
Develop the
- tools, APIs and data services that agents call, creating clear contracts, predictable failure modes and full auditability.
- guardrails, human-in-the-loop checkpoints and fallbacks for high-stakes automated decisions.
- Instrument, monitor and troubleshoot agents and services in production, including tracing, cost, latency and decision logs, working with ML engineers to turn those insights into evaluations and improvements.
Help drive
- system design and architectural decisions for our agents and the services around them.
- Design and evolve the data models and database schemas supporting submissions, agent runs, decisions and audit trails.
- Provision and manage cloud infrastructure through Terraform and contribute to a high production standard across agent-generated code and tests.
- Work closely with business, product and engineering teams to set delivery cadence, manage expectations and make pragmatic decisions about where additional engineering quality adds the most value.
- Support the development of other engineers through code reviews, best-practice guidance and knowledge sharing
Requirements
Hands-on experience building
- LLM-based agents or agentic systems in production, ideally using orchestration frameworks such as LangGraph or LangChain, or equivalent systems you’ve built yourself.
- A strong understanding of how agents fail in the real world, from non-determinism and tool failures to runaway loops, cost and latency issues, and how to engineer around them.
- 5+ years’ professional software development experience in Python or another backend language such as Go, Java or C#. Our stack is Python, so you’ll need enough working knowledge to transfer your skills quickly if it isn’t already your main language.
- asynchronous and concurrent programming, alongside a rigorous approach to unit and integration testing.
- Day-to-day experience delivering software with AI coding agents, while maintaining a high bar for the code they produce.
- Experience designing systems end to end, including service boundaries, data flows and failure modes, with the judgement to make and explain architectural trade-offs.
- Strong relational database and data modelling experience. We use PostgreSQL, covering areas including schema design, query performance, transactions, concurrency and safe schema migrations.
- Experience building
- distributed, asynchronous microservices
- using message brokers such as Azure Service Bus, with an understanding of at-least-once delivery, idempotency and dead-letter handling.
Experience building clear, well-documented
- RESTful APIs. We use FastAPI.
- Strong cloud and infrastructure-as-code experience. Our environment uses Azure and Terraform, and hands-on IaC experience is essential for this role.
- and production container platforms such as Azure Container Apps, Kubernetes, GKE or ECS, alongside CI/CD workflows and YAML pipeline definitions.
- Experience building agents for
Clear communication, pragmatic judgement and the confidence to work independently, influence technical decisions and mentor other engineers.
high-stakes or regulated decision-making, working with data scientists on non-deterministic systems, using Databricks, or working within insurance would be useful, but these are nice-to-haves rather than requirements.
jobapplier