Open to new roles
- Head of Engineering
- Hands-on technical leadership
- AI-first engineering
Remote, or flexible hybrid in the North East · get in touch
$ whoami
Head of Engineering · hands-on, AI-first
[email protected] · craigthompson.dev · github.com/Craga89 · linkedin.com/in/craigmichaelthompson · Newcastle upon Tyne, UK
The short CV is at craigthompson.dev/cv.
20+ years’ experience in software development and management, from start-up to acquisition.
I’m a hands-on, full-stack engineer across UI, back end, infrastructure and AI, with extensive engineering leadership experience. I led an engineering department to AI-first development, where most code is now generated by AI, then reviewed by AI and people. Problem solving is what I do best, whether the problem sits in the code, the platform or the team.
I’ve led engineering teams for 12+ years, growing and developing teams of 10+ engineers, both in-house and outsourced. I’ve set strategy, supported the people and steered the platform with them, from monorepos and build engines to AWS, authentication and AI tooling.
I’ve reported directly to CEO and CTO level, turning the roadmap and technical direction into plain-English board updates. I’ve been part of ISO 27001 and GDPR accreditation and the annual audits.
A suggested reading order for AI-first engineering. Everything else is still here.
A suggested reading order for front end and accessibility. Everything else is still here.
A suggested reading order for engineering leadership. Everything else is still here.
A suggested reading order for platform engineering. Everything else is still here.
Remote, or flexible hybrid in the North East · get in touch
Led engineering for a B2B SaaS employee engagement platform (surveys, peer-to-peer recognition and confidential feedback) that runs 24/7 for enterprise, mid-market and SME customers, with a cross-functional team of up to 12 engineers.
Turned visual mock-ups into interfaces and CMS pages for the Auto Club Revolution project with JavaScript and Backbone.js.
One-off projects for smaller and larger clients worldwide, from single websites to larger builds such as a crop management application, using Node.js, Express and modern SPA frameworks; UI libraries built to WCAG; and maintaining open-source tools like qTip2, from issues and documentation to releases.
The responsibilities I've held beyond the code, and the impact they had: leading and growing the team, hiring, working with product and customers, incidents, budgets, ways of working and the move to AI-first engineering, seeing a startup through to acquisition, compliance and internal IT. It plays through each file on its own and holds while you hover or read. Jump to any file, or open it on its own page.
The technical projects I've led with my teams: what we built, what changed, and what it means in practice. Open a file.
I’ve taken a platform spread across about 18 separate repositories and led merging them into one TypeScript monorepo with their history intact, along with the tooling around it: CI/CD, Docker and local dev. That one codebase is what makes the repo-wide migrations in refactor.md possible.
Tooling ages fast. Rather than letting it drift, I’ve led a steady run of repo-wide migrations: linting, packages, bundling, types, runtime and the compiler itself. Each one was scripted with a and landed as a single reviewed change, so there was never a long-lived branch or a half-migrated codebase.
I built a CI/CD platform from scratch and have kept evolving it as the team and codebase grew. Today it runs on self-hosted Buildkite defined in Terraform, driven by an in-house TypeScript build-and-deploy engine. It models the monorepo’s dependency graph, so each change builds and deploys only the packages it affects.
/deploy on a PR puts it into a test environment.I led the inception of the first automation suite, built on Cypress, and evolved it in CI over time alongside the Test Automation Engineers. As the suite grew, its performance suffered, so I led the switch to Playwright, which brought huge gains in performance and stability across the CI/CD environment.
Accessible UI has been part of my work since building UI libraries held to WCAG for clients. This site is held to WCAG 2.2 AA, and an automated suite checks it after every deploy and every week, failing the check if anything regresses.
Customers survey their people in their own language, so the interface and the questions have to work in every language they turn on. I’ve kept the platform’s 36 interface languages in step with English, and made translating customers’ own content cache-first and selective.
I led the platform’s move from containers on EC2 hosts behind a public load balancer to Fargate tasks that talk over , with all customer traffic entering through CloudFront and WAF. Each step shipped without a big-bang cutover.
When a product handles confidential data, security and privacy are part of the product. We focused on removing whole classes of risk rather than layering controls on top.
I led the replacement of a legacy, multi-tenant sign-in system with a new auth framework, rolled out organisation by organisation behind a per-tenant switch. Before that, we hardened the old one: expiring tokens, central signing and key rotation.
Separate buckets per user, email, token and IP, per organisation, so one noisy office network can't lock out everyone behind it.
Verifiers accept old and new keys during an overlap window, so signing keys rotate without logging anyone out.
Reporting is often the first place a SaaS platform slows down: large aggregations sliced by many dimensions at once. I led the redesign of a core reporting data model and its queries on MongoDB, and we proved the new version matched the old one in production before switching over.
Every saving started with data: flow logs, utilisation history or a line in the bill. Each change landed with the numbers that justified it in the pull request.
I helped introduce AI into the product: an agent service built with , running models through in its own isolated AWS account, with an that runs in CI.
AI assistants are starting to work inside the browser, on the page a person has open. Rather than leave them to read the screen and guess, I’ve given this site its own tools through WebMCP, a draft web standard. An agent calls a tool and gets structured answers, drawn from the same content visitors read. The same tools also run as an MCP server, so any MCP client can use them without the site open.
In this browser: no WebMCP, so the page skips it.
MCP server https://craga-ask.craga89.workers.dev/mcp
get_profileheadline, summary, contact, CV links and skillsget_careerevery role, with highlights, and the degreelist_files · read_filecase studies and responsibilities in full, and can open one on the pagesearch_sitethe best-matching passages, in my own wordsaskan ask.sh answer, with the same limits as the box on the pageget_open_sourcemerged pull requests by quarter, and qTip2get_site_reportthe latest Lighthouse, WCAG and ask.sh resultsshow_sectionscrolls to a section and highlights it (on the page only)It’s a small site, but it’s built and run the way I’d run a product. Everything lives in one public repository, every change goes through automated quality gates, and the AI feature has tests of its own. The results below come live from the latest CI runs.
87 tools across 12 areas · type to search
grep: no matches. Ask me anyway: [email protected]
| year | merged | projects |
|---|---|---|
| 2012 | 1 | andris9/highlight |
| 2013 | 6 | cdnjs/cdnjs, jsdelivr/jsdelivr, Mottie/tablesorter |
| 2014 | 12 | etodanik/veinjs, itsjavi/bootstrap-colorpicker, BlueSpire/Durandal, dobtco/jquery-resizable-columns, giggio/npm-nuget, jsdelivr/jsdelivr |
| 2015 | 9 | codesuki/react-d3-components, aurelia/skeleton-navigation, rniemeyer/knockout-delegatedEvents, mbest/knockout.punches, jakubburkiewicz/uncss-brunch, BlueSpire/Durandal-Bower, cdnjs/cdnjs |
| 2016 | 6 | preactjs/preact, jakubburkiewicz/uncss-brunch, unindented/stats-webpack-plugin, shipshapecode/tether, electrode-io/electrode-webpack-reporter |
| 2017 | 16 | communicator/dockerized-magento, camwest/react-slot-fill, robinweser/fela, ianstormtaylor/slate, KoryNunn/scroll-into-view, faceyspacey/babel-plugin-dual-import, lerna/lerna, tomkp/react-split-pane |
| 2018 | 4 | communicator/magento-plugin, gregberge/recompact, Popmotion/popmotion |
| 2019 | 1 | slefevre/gitin2it |
| 2022 | 2 | swc-project/swc-node, buildkite/test-collector-javascript |
| 2026 | 2 | shuding/nextra, better-auth/better-auth |
Widely adopted jQuery plugin and a go-to tooltip library in its day: ~2k stars, 458 forks and 1,384 commits, built with extensive help from community contributors. Featured in Smashing jQuery (2011).
Interactive maze-solving simulation using the classic flood-fill algorithm, with the Arduino code to run it.
React drag-and-drop builder with a Node.js CSS-inlining service behind it, for a platform sending billions of emails.
59 merged pull requests across 35 other projects since 2012, usually fixing something I hit in production. A selection:
# used by My jQuery plugins were used on sites by Mozilla, Salesforce, Lloyds TSB, ASOS, Syngenta, Urban Dictionary, Northumbria University, Skrill, models.com and ThinkTag.
26 posts from my old blog on craigsworks.com, 2012–2015, kept as they were written. Some of the tools have since moved on.
From LinkedIn, quoted as written. See them on LinkedIn →
I worked with Craig over a number of years whilst we were both in the development team at Communicator. Craig's passion towards getting the best solution in place is unmatched. He cares about both the smaller details and bigger picture. I enjoyed working with Craig on a number of projects, we developed a great rapport and I would happily highlight that Craig went from colleague to friend whilst we worked on a number of fantastic features that were added to the Communicator platform.
Craig keeps himself ahead of the game, he understands all of the bleeding edge technology, when it would be worthy of considering as a developmental option and when it's still too much in its infancy to risk adopting. I'd recommend him to anyone and believe his front end skillset is of a substantially high quality.
Even after a number of years separated professionally, I still call Craig a friend and wouldn't think twice about accepting the invitation of a catch up over a cold beverage. I'd also jump at the chance to collaborate again in the future and I really hope our paths will cross again!
Craig is a very able developer, who is capable of putting together high-quality front-end solutions at lightning speed. Always friendly and willing to lend his expertise JavaScript, jQuery, CSS and related web technologies, he is indispensable part of the Auto Club Revolution web team.
At the time of writing I am working with Craig on an ongoing very large and complex web-development project. Craig is the go-to person for all of the frontend jQuery and CSS related issues. He is also increasingly getting involved with the backend-development. An all-round excellent web-developer.
MEng, Electronic & Computer Engineering
Newcastle University · 2008 — 2013
Hands-on technical leadership roles, such as Head of Engineering, where I stay close to the code and to AI-first delivery while setting direction for the team. I’m most at home in start-ups and scale-ups.
Primarily remote. I’d consider hybrid for a North East–based company with genuinely flexible attendance, but not a fixed “X days a week” commitment.
Newcastle upon Tyne, UK.
Three months.
Up to 12 engineers as Head of Engineering, and before that a Scrum team of junior-to-mid engineers as a Technical Lead.
Yes. I’ve hired 10+ engineers, through an interview process I designed with the CTO and Deputy Head. Many of the people I’ve led have been promoted, including one from Software Engineer to my Deputy Head of Engineering. See hiring.md and people.md.
Yes. I’ve joined sales, customer and due-diligence calls as the technical expert, been the primary escalation point for major customer issues alongside my Deputy, and reported to the CEO and CTO with board material in plain terms. See customers.md and product.md.
Over the past year I’ve led an engineering department from introducing AI-assisted development to a point where the vast majority of code is AI-generated, then reviewed by AI alongside human reviewers against style and coding guidelines iterated on in the repo. See ai.md.
Yes. I’ve owned the substantial monthly AWS budget for a SaaS platform, and managed the platform’s technical suppliers and the wider IT suppliers, negotiating renewals and contracts. See budget.md.
Yes. I set up the on-call rota and status page, led on incidents from single-client issues to full outages, and helped produce the business’s disaster recovery process. See incidents.md.
Yes. I’ve been the point person for IT: the hardware estate, Google Workspace, the MDM that provisions and secures the Mac estate, and an IT service desk I set up for everyone. See it.md.
Yes. As Head of Engineering I worked directly with an outsourcing firm in India, onboarding 5+ Software Engineers and Automation Test Engineers to bolster the in-house team. Many of them stayed for 2+ years.
Yes. I’ve led engineering from startup through to acquisition, and represented engineering right through due diligence. See acquisition.md.
Yes. Alongside setting strategy and leading the team, I’ve remained a skilled, hands-on engineer and upskilled in AI-assisted development along the way. Several of the upstream pull requests on this page are recent.
Mostly B2B SaaS for enterprise, mid-market and SME customers, including Hive HR’s employee engagement platform and an email marketing platform sending billions of emails, plus consulting for clients worldwide.
Yes: GDPR and ISO 27001 accreditation, the annual audits, and arranging the yearly penetration test. See compliance.md.
Primarily AWS, with some GCP and more limited exposure to Azure.
Yes. There’s a plain version at craigthompson.dev/cv, also as a PDF and as JSON Resume, or email me and I’ll send it.
No cookies, and nothing that identifies you. The site counts visits (the page, the country, the site you came from and which sections you saw), using its own counter and Cloudflare Web Analytics, and keeps ask.sh questions anonymously, so I can see what’s useful and fill any gaps. Both respect Do Not Track and Global Privacy Control.
Ask anything about my experience, roles or skills. An AI model answers using only what's on this site and links to where it found it. Questions are kept anonymously, with nothing that identifies you, so I can improve the site.
Pick a question below or type your own. Type help for commands.
After every change to the Worker, and every week, a script asks ask.sh these questions and checks each answer: the right facts, nothing invented, and no response to instructions slipped into a question. One wrong answer fails the run. The tests are in the repo.
The latest results load from CI on the live site.
I'm open to hands-on technical leadership roles. If you're hiring, or want to talk about anything on this site, email me.
Hi! Ask me anything about Craig's experience, roles or skills. Answers come from this site, with links to where they were found. Questions are kept anonymously.