Software Engineer (Machine Learning)

Netcraft · Manchester, Bath)

<div class="content-intro"><p>&nbsp;</p> <p><strong>About Netcraft</strong></p> <p>Netcraft is the global leader in cybercrime detection and disruption. We’re a trusted partner for three of the four largest companies in the world and many large governments. We've blocked over 225 million cyber-attacks to date, and we take down around 33% of the world's phishing attacks.</p> <p>Our purpose and passion are focused on just one thing: protecting the world from cybercrime.</p> <p>That passion shapes how we work, too. We’re proud of our talented team and the value each person brings, and we’ve built a workplace where people feel supported and inspired. From strong benefits and wellness programs to meaningful collaboration and team connection.&nbsp;</p> <p>&nbsp;</p></div><p><strong><span data-contrast="none">The role</span></strong><span data-ccp-props="{}">&nbsp;</span></p> <p><span data-contrast="auto">We are looking for an engineer who wants to apply ML to a real adversarial problem, where attackers actively evolve to evade you and turn to increasingly complicated schemes.&nbsp; As part of the Novel Classification team, you’ll use machine learning and AI to identify fraudulent content on the Internet, from phishing sites to the full breadth of online scams.&nbsp;</span><span data-ccp-props="{"134233117":false,"134233118":false,"335559738":240,"335559739":240}">&nbsp;</span></p> <p><span data-contrast="auto">You’ll learn from experienced engineers and see your ideas in production within weeks, driving the automated blocking and takedowns that disrupt cybercrime at scale. Recent projects include multi-modal embeddings that power classification and search, LLM classifiers, computer vision models for logo detection, and ensemble predictors that combine visual and semantic signals. We keep a close eye on the field and adopt new models and techniques early when they look promising.</span><span data-ccp-props="{"134233117":false,"134233118":false,"335559738":240,"335559739":240}">&nbsp;</span></p> <p><span data-contrast="auto">You’ll work across the full lifecycle: training and evaluating models, serving them on our GPU-backed Kubernetes clusters, wiring them into production classification systems, and watching how they behave against live attack traffic.</span><span data-ccp-props="{"134233117":false,"134233118":false,"335559738":240,"335559739":240}">&nbsp;</span></p> <p><strong><span data-contrast="none">Day to day, you’ll be:</span></strong><span data-ccp-props="{}">&nbsp;</span></p> <ul> <li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"multilevel"}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="none">Building, evaluating and tuning the classifiers that decide what gets blocked and taken down.</span></li> <li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"multilevel"}" data-aria-posinset="1" data-aria-level="1">Deploying and operating model serving infrastructure on Kubernetes, including LLM inference (e.g. vLLM).</li> <li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"multilevel"}" data-aria-posinset="1" data-aria-level="1">Optimising models for high-volume, low-cost serving.</li> <li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"multilevel"}" data-aria-posinset="1" data-aria-level="1">Running experiments against live data, measuring precision, recall and false positive rates, and using the results to decide what ships.</li> <li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"multilevel"}" data-aria-posinset="1" data-aria-level="1">Integrating models into our production classification platforms.</li> <li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"multilevel"}" data-aria-posinset="1" data-aria-level="1">Building the pipelines and monitoring behind the models: feature extraction, scheduled retraining, experiment tracking, and the metrics that prove a solution works.</li> <li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"multilevel"}" data-aria-posinset="1" data-aria-level="1">Investigating and fixing issues in production, from model regressions to performance bottlenecks.</li> <li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"multilevel"}" data-aria-posinset="1" data-aria-level="1">Working across the business with engineers and analysts who depend on our classifiers.<span data-ccp-props="{"134233117":false,"134233118":false,"335559738":240,"335559739":240}">&nbsp;</span></li> </ul> <p><strong><span data-contrast="none">What you’ll need to be successful</span></strong><span data-ccp-props="{}">&nbsp;</span></p> <ul> <li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"multilevel"}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Strong web fundamentals: HTTP, DNS, and above all how websites work, from request to rendered page. You'll use them both to understand the resources we classify and to build high-performance webservers.</span></li> <li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"multilevel"}" data-aria-posinset="1" data-aria-level="1">A working understanding of machine learning fundamentals, such as training, evaluation, overfitting and precision/recall trade-offs. This could come from industry, research or substantial personal projects.</li> <li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"multilevel"}" data-aria-posinset="1" data-aria-level="1">Good written and verbal communication skills. The work the team does is complex, and we must be able to articulate the impact of our work clearly and concisely, to a wide range of stakeholders.</li> <li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"multilevel"}" data-aria-posinset="1" data-aria-level="1">An empirical mindset. You design experiments, measure outcomes, and use metrics to validate and demonstrate impact.</li> <li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"multilevel"}" data-aria-posinset="1" data-aria-level="1">Willingness to learn Go and modern P

View application details