Operations in AI Safety: A One-Year Perspective and Advice
Jul 24, 2025
Building things and fixing problems
Building systems and running events to get more people working on critical AI Safety challenges.
Previously, I ran theatre venues and productions, helped students and student groups turn their ideas into impact, and solved problems with software.
I run programs and build operational infrastructure for AI Safety organisations including recruitment and selection pipelines, program logistics, CRMs, and the automations that hold them together. More about this side of me →
Designed and built the central CRM architecture, alumni database, change-detection automations, and donor-import pipelines for an AI safety organisation
First employee at the incubator for new AI Safety organisations. Co-ran the incubation program end to end
Taught AI agents, adversarial attacks, and AI Safety strategy at a 10-day intensive bootcamp
I build internal systems, data pipelines, and developer tooling — including a growing toolkit that makes AI agents verifiable and trustworthy enough to do real operational work. More about this side of me →
Designed and built the central CRM architecture, alumni database, change-detection automations, and donor-import pipelines for an AI safety organisation
A hook, skill, and CLI that make AI agents screenshot and visually check their own UI changes
CLI tools that let AI agents read and edit Word documents, Excel sheets, and PDFs
Agent skills encoding Ruby on Rails 8 conventions, so AI-written Rails code follows the framework instead of fighting it
I compose for theatre and podcasts, and I hold a degree in Acoustics and Music Technology — including a dissertation on what stalactites sound like when you hit them with a mallet. More about this side of me →
Themes and scores for podcasts, theatre, and other narrative art
From running venues at the Edinburgh Fringe to sound-designing professional shows, theatre is where I learned to keep complex productions running under pressure. More about this side of me →
Freelance sound design, including "Mary: A Gig Theatre Show" across five runs from the Fringe to the Traverse
Programming, front of house, and production management for Edinburgh Fringe venues — including leading Bedlam Theatre's return to the Fringe
Chatbot providing information about the Edinburgh Festivals, helping you decide which of >4000 shows to see
Web soundboard used live in improv comedy shows — an early experiment in building real software with AI agents
Get the latest updates from my blog directly to your inbox.
An AI safety organisation needed its scattered contact, alumni, and donor data turned into one reliable system. I designed and built it.
CRM architecture and documentation. I designed the central base — People and Organisations tables linked many-to-many through join tables, with a stable primary key — then did a field-by-field documentation pass across the entire base: table guides, consistent naming conventions for consent-sensitive fields, and flagging dead fields for deletion. The goal was a CRM whose structure a new team member can understand without me in the room.
Alumni database consolidation. I merged two parallel fellowship-alumni tables into one, while deliberately keeping team-assessed hiring data in a separate 1:1-linked table — self-reported and team-assessed data have different provenance and different sharing rules, and the schema should enforce that distinction.
Change detection without a changelog API. Airtable can’t tell you what changed on a record, only that it changed. For a self-service alumni profile form, I built a snapshot-and-diff automation: each record carries a JSON snapshot of its fields, diffed on every form submission, writing one changelog row per submission split into “needs processing” and “other changes”. The team reviews actual diffs instead of re-reading whole records.
Donor import pipeline. An email-triggered upsert script handling ~1,500 donation records from a major effective-giving platform: CSV parsing, donor matching by email then platform ID, ID backfill, and create-or-update keyed on donation reference. The key architectural fix was moving a downstream webhook call out of the import script — which was blowing through Airtable’s 50-fetch ceiling — into a separate record-created automation that Airtable throttles naturally.
AI Safety needs more organisations, and new organisations fail for ordinary reasons: no co-founder, no funding network, no operational footing. Catalyze Impact incubates new AI Safety research organisations to fix that, and I was their first employee.
For a year and a half I co-ran the incubation program end to end:
Because the team was small, I also built the systems that kept it running: Airtable bases and Python scripts that automated the repetitive parts of recruitment and selection, so the humans could spend their time on judgement calls instead of data entry.
ML4Good runs 10-day intensive bootcamps that take people from “interested in AI Safety” to actually working on it. I was a teaching assistant at the March 2025 Europe camp where I taught the sessions on AI Agents, Adversarial Attacks, and AI Safety strategy, and coached participants through the rest of the curriculum.
Because the atmosphere is just as important to a bootcamp as the atmosphere, I also ran the social side including a welcome event, murder mystery, lightning talks, and a Scottish ceilidh.
AI coding agents will confidently claim a UI change “looks good” without ever rendering it. Vischeck closes that loop: a hook, skill, and CLI that let an agent take authenticated screenshots of its local dev server and critically review the result before reporting back.
The screenshot CLI handles dev-server auth automatically, supports dark mode, mobile viewports, element-level captures, and batch screenshots of whole page sets. The hook fires whenever the agent edits a view or template file, so visual verification happens by default rather than when someone remembers to ask.
The skill is deliberately opinionated about how to review: zoom in on the changed component, compare against an existing known-good page, and walk an explicit checklist (contrast, spacing, house-style conformance, overflow) before giving a verdict. “Looks good” without evidence counts as a failure.
I built it because I run AI agents on real projects daily — including this website — and unverified agent output is the main thing standing between “agents help” and “agents can be trusted with the work”.
Operations work lives in Word documents, Excel sheets, and PDFs — formats AI agents can’t natively open from the command line. Readoc gives agents three CLIs: readoc to extract the contents of a .docx, .xlsx, or PDF as structured text, readir to explore and search whole folders of mixed documents, and editdoc to make targeted edits to Office files without mangling their formatting.
The practical effect: an agent can be pointed at a shared drive full of policies, budgets, and reports and actually work with them, instead of being limited to plain text and code.
I built it for my own operations work, where “can the agent read the document” was the recurring blocker between AI assistance and the tasks that actually fill an ops person’s week.
AI agents write Rails code the way the average of the internet writes Rails code — which is to say, fighting the framework. Rails Toolkit is a set of Claude Code skills that encode modern Rails 8 conventions and hard-won project rules, so agent-written code comes out idiomatic: thin controllers, concern-based models, Solid Queue jobs, Stimulus controllers with modern JavaScript, Hotwire/Turbo patterns, fixture-based tests.
It also includes higher-level workflows: a full application audit that orchestrates the individual skills into a severity-ranked health report for inherited codebases, a database performance review, and an upgrade analyzer covering breaking changes from Rails 2.3 through 8.1.
I maintain Rails applications (including the administration system behind a 100-year-old theatre company), and this toolkit is how I make AI agents productive on them without sacrificing code quality.
Artwork from “Ethics Town” podcast
I compose music for theatre and other performance and narrative art.
Themes for audio fiction podcasts.
Short pieces I made for university assignments but did not develop into a full piece.
I wrote my dissertation on “Ancient Rock Music: the sound stalactites” make when hit by a rubber mallet. The project was inspired by a visit to Luray Caverns, Virginia, home of the “Great Stalacpipe Organ”: an instrument that plays the cave itself.
The work had three parts: a physical simulation of struck stalactites using finite-difference and modal methods (approximating them as cantilever bars of variable diameter, in Matlab), a field trip to record real stalactites, and a virtual instrument built in C++ with JUCE so anyone can play a cave from their Digital Audio Workstation.
Photo from “Mary: A Gig Theatre Show”. Credit: Carla Watson
I work as a freelance sound designer and general organiser in theatre. See also the theatre I did as a student.
Running a venue at the Edinburgh Fringe is operations at its most concentrated: hundreds of performances, companies changing over in minutes, and an audience that doesn’t care that your tech desk just broke.
I’ve run Fringe venues from several seats:
The Edinburgh Festival Fringe programme lists around 3,500 shows. Nobody reads it cover to cover, which means most people pick from the handful of shows with the biggest marketing budgets. I was frustrated enough by this to build the tool I wanted: a chat interface where you describe what you’re in the mood for and get recommendations from the full programme.
Under the hood it’s a RAG pipeline: semantic search over the festival data with ChromaDB vector storage, category filtering, and a FastAPI backend serving a React/TypeScript frontend.
Improv comedy needs sound effects now — a technician fumbling through folders kills the joke. ImpAmp is Bedlam Theatre’s purpose-built soundboard for live improv: multiple soundbanks, instant search, armed tracks, multiple sounds per pad, and Google Drive sync so each show’s sounds follow the team.
This third version was also a deliberate experiment in AI-driven development: I built it in Next.js using Claude 3.7 Sonnet and Gemini 2.5, back when letting agents write most of the code was still a novelty. It has been running real shows since.