I build the interfaces between systems and people — robust APIs that developers trust, agentic AI workflows that automate the tedious, and front-ends that feel effortless.
I'm Sean — a software developer who specialises in the spaces where systems meet people. Whether that's an API surface a team of engineers will depend on daily, or a UI that a non-technical user should never have to think about, I care deeply about making those handoffs invisible.
My roots are in backend systems — Go, C, and Erlang — with WebAssembly and JavaScript bridging me to the frontend when needed. I've shipped APIs in just about every flavor: REST, gRPC, GraphQL, WebSockets, SOAP. The through-line is always the same: interfaces that are clear, reliable, and a pleasure to work with.
More recently I've been deep in the intersection of agentic AI and production automation. I believe LLMs should be collaborators in the development process — not replacements — and I build tooling that reflects that: AI-augmented pipelines where humans stay in the loop on decisions that matter.
Yes, I also maintain an actual Gopher site. Some protocols deserve preservation.
↳ Some projects were built for private clients — only demos available on request.
I don't just use AI to write boilerplate. I build systems where AI agents take real actions — calling APIs, making decisions, and handing off to humans at the right moments. Here's how I think about that work.
Designing multi-step pipelines where LLMs handle ambiguous inputs, route decisions to the right downstream system, and escalate to humans when confidence is low.
Building robust tool registries that let agents invoke APIs, run code, query databases, and write files — with structured outputs and reliable error recovery.
Inserting verification and approval gates into automated pipelines. The agent does the legwork; humans make the calls that matter.
Tracing agent decisions, logging token costs, and surfacing the "why" behind AI actions so teams can trust and audit their automated systems.
Connecting agents to data sources and tools via Model Context Protocol, custom tool servers, and OpenAPI-described services.
Writing high-throughput agent runners in Go — streaming responses, concurrent tool calls, and structured prompt templates compiled into the binary.
I advocate for LLMs in development for automating boilerplate and low-context tasks. But I believe fully automated development is a trap: it creates code that lacks human intuition. Human oversight is what transforms a functional script into great software.
"The best interfaces are invisible. They fade into the background, letting users and systems communicate effortlessly."— Sean Merriam
I develop using TDD and Model-Driven Design as my foundation — but these are means to an end. The real measure of success isn't passing tests or elegant models. It's how applications are received by the people and computers that use them.
Clean, readable code isn't about aesthetics. It's about respect for the next developer — including future me. I invest significant energy into writing code that others can extend without friction: adhering to established guidelines, maintaining consistent style, and documenting the "why" behind logic, not just the "what."
I approach the modern tendency to npm install every problem with healthy skepticism. Many applications today are built on fragile foundations of excessive external packages. I prefer straightforward solutions using standard libraries, reaching for dependencies only when they provide substantial value that justifies the added complexity and maintenance burden.
My goal is to build connections — robust APIs that developers trust, and interfaces that humans intuitively understand.
Whether you're looking for a collaborator on a complex API project, need someone to architect an agentic AI workflow, or just want to talk about software design — I'd love to hear from you.
Send a Message →