Software Engineer (AI)

ExTrac

London Area, United KingdomfulltimeSoftware Developmentposted
Unlock apply linkApply links and the original listing are a Pro feature: £4.99/mo or £25 once.
About ExTrac ExTrac is a decision intelligence company used by governments, defence organisations, financial institutions, and corporates operating in complex, fast-moving environments. Our capabilities fuse curated data sources, domain-specific AI, and deep human expertise to transform information overload into clear, actionable foresight. Our ambition is to become the analytical backbone that organisations rely on when geopolitical uncertainty becomes an opportunity or a strategic risk. More at extrac.ai. The Role We are looking for a Software Engineer to join ExTrac's AI team, building Co-Analyst and the analytical AI features around it. Co-Analyst is a user-facing multi-agent system that works alongside intelligence analysts to research and write reports. A planning loop decomposes an analyst's question, fans work out to sub-agents, and assembles the results into a report where every claim traces back to the chunk of source it came from. Underneath sits vector search over a large unstructured corpus, across multiple languages and media types. The agent work is the centrepiece but not the whole job. In a single quarter the work spans agent orchestration, retrieval, graph analytics, and long-running streaming pipelines, alongside the services and databases underneath them. You will own well-defined features and components end to end within a single system across a Python and Go codebase, working alongside senior engineers who set technical direction, the data team who own the ingestion pipelines, and a research-focused ML team who train and evaluate the models we integrate and serve. This hire exists to add capacity on the AI team's hard problems: an engineer who can independently deliver well-scoped features and components, and who is building towards owning more of the system end to end. What the job involves Agentic and analytical AI features * Build and improve components of the agent loop itself: context assembly, tool selection, and sub-agent orchestration, with guidance from senior engineers on the team. * Build the analytical AI features that sit alongside it, from network construction through to the summaries analysts read. * Help prove that changes are improvements, running experiments against live analyst traffic behind feature flags. * Contribute to agreeing what "better" means for a capability, and flag honestly when the evidence says a promising approach is not working. * Work through well-defined problems where an established pattern doesn't quite fit, generating options or escalating with a proposal rather than stalling when blocked. * Work with embeddings as more than a retrieval concern. The same vectors drive network construction and community detection. * Work within a model-agnostic design, swapping models and embeddings on the back of the ML team's evaluations rather than being locked to one. Service design and delivery * Take a well-defined problem, clarify requirements with your lead or a senior engineer, and ship it to production with regular check-ins rather than close oversight. * Own features and components end to end within a single system, and contribute to decisions on consolidating or decommissioning what they replace. * Build and maintain APIs used by internal teams and customers, following established contracts and versioning conventions. * Treat the storage layer as a design concern rather than an implementation detail: schema, indexing strategy, and access patterns, across relational, document, and vector stores. * Contribute to system design and architecture discussions, and take on more of the design work as you build context. Production engineering * Build and operate supporting services across Python and Go, with growing ownership of design, deployment, and operations as you build track record. * Help hold agent workflows to production standards for latency, cost, and reliability, in a system where non-determinism is a given. * Build and operate long-running streaming pipelines, including the caching and recovery behaviour that makes them survivable. Working collaboratively * Work directly with the analysts who use our products, turning what they hit in practice into changes in the system. * Iterate quickly against a live stream of product requests, flagging where they collide with longer-horizon capability work. * Partner with the ML team on agentic approaches, helping take proven concepts to production and working through the engineering, performance, and reliability problems a research implementation does not have to. * Help integrate and serve the models they train, and contribute to the production infrastructure their evaluation frameworks run on. You should apply if * You have built and worked on production backend systems, and you want to keep doing that. You know the difference between something that demos well and something that holds up under production load, latency, and cost. * You will spend more of your time in Python and Go services, databases, and APIs than in a prompt file. * You can work independently on well-defined problems, and know when to flag ambiguity or ask for input rather than guessing. When the obvious approach fails, you look for another one before escalating. * You are curious about agentic frameworks and comfortable working without one. Experience with them is useful, but we build most of our own orchestration, because off-the-shelf abstractions have not survived our requirements around evaluation, control, and production performance. * You can take a recent technique or paper, help spike an implementation, and reason clearly about whether it is worth taking further. * You do not trust a change until you have measured it. Reaching for the evaluation is instinct rather than afterthought. * You treat quality, security, and observability as engineering fundamentals rather than optional extras, and you flag technical debt rather than letting it accumulate silently. * You actively seek feedback and act on it, and you look for opportunities to pair with and learn from the engineers around you. * You want to work on things that matter. Our software sits underneath decisions taken by governments, defence organisations, and institutions operating where being wrong or late carries real consequences. Where this role can take you * Deepen your ownership. Strong performance means larger sections of Co-Analyst, more architectural say over how the agent system evolves, and more influence over which ideas we pursue rather than only how we build them. * Build the engineering practice for a class of system nobody has settled yet. There are established patterns for running web services and for training models. There are none yet for operating agentic systems in production: controlling cost and latency, making non-deterministic behaviour dependable, and knowing when a change is genuinely an improvement. You will be working those out rather than applying them. * Breadth rather than a narrow track. The work follows the problem, which means agent orchestration one month and pipeline, retrieval, or infrastructure work the next. Engineers here have the opportunity to build depth across several areas rather than being funnelled into one. * Take on a different class of problem. Making our systems work inside FedRAMP environments is a major upcoming project, and engineering under that kind of constraint is a skill set that stays with you. * Progress without changing track. ExTrac values the IC and management paths equally: Staff Engineer and Engineering Manager sit at the same level, and taking on reports is not the price of progression. Requirements Due to the nature of our work and the clients we support, applicants must be eligible to obtain UK security clearance. We are currently only able to consider applicants who are nationals of a NATO member state, Australia, or New Zealand. * 2+ years of professional software engineering experience, with demonstrated ability to build and ship production-grade services with solid test coverage, and experience owning features or components end to end within a larger system. * Proficiency in building services in Python, with working knowledge of Go or the ability to pick it up quickly. * Some experience building or working on agentic systems, LLM applications, or production retrieval that real users depend on. * Good understanding of distributed systems, databases, and software engineering patterns. * Experience writing performant asynchronous code. * Experience with cloud infrastructure and infrastructure as code, and with the CI/CD pipelines around them. * Comfortable working with feature flags and trunk-based deployment. * Comfortable being handed a symptom rather than a diagnosis. Given a suspected memory leak, you would profile it, find the cause, and fix it, asking for support when you get stuck. * Able to take a well-defined requirement and scope a technical approach from it, asking clarifying questions rather than assuming. You look for a way through rather than concluding something cannot be done. * Strong communication and collaboration skills. Comfortable writing clear technical documentation and discussing requirements with colleagues from engineering and the wider team. * Breadth across the stack: an interest in deployment pipelines, database behaviour, and security and AI guardrails. You pick up unfamiliar tools quickly rather than needing prior expertise in a specific one. * An interest in validating analytical outputs and in taking analyst feedback into requirements discussions, rather than treating requirements as someone else's problem. Desirable * Experience with retrieval systems and large-scale vector database performance (Elastic). * Experience with graph or network analysis at scale. * Experience building retrieval or analysis that works across multiple languages. * Experience with streaming pipelines and search infrastructure. * Experience operating multi-tenant systems where data isolation is a hard requirement. * Experience working in compliance-constrained environments. A significant upcoming project is making our systems work within FedRAMP environments.