Adam Dickinson · Principal DevOps Engineer · Spring, TX (US Central)
NO TICKETS REQUIRED
EVERYTHING YOU NEED EVERYTHING YOU NEED IN ONE HIRE IN ONE HIRE
z Z Z
  • EKS at scale
  • Golden paths
  • Agents on CI
  • LLM observability
  • Cost control
250+
Engineers on the platform
100+
EKS clusters / AWS accounts
−83%
CI container build time
20M
Active time series
−20%
Cloud spend, sustained
12 yrs
Carrying the pager
dickinson.works

Right now I own 100+ EKS clusters across 100+ AWS accounts, the golden paths our engineers ship on without filing a ticket, and the human-in-the-loop quality platform behind every AI agent we ship.

Comic-book panel of Adam Dickinson, arms crossed in a navy polo, in front of a wall of monitors showing terminals, dashboards and a pipeline diagram.
Case studies

Recent work, in detail

What the problem was, what I built, what changed.

AI quality

Agent traces humans can actually read

Demandbase · AI Runtime Services

The problem

Datadog already had the traces. Spans, tool calls, and token counts were all collected. The problem was who could read them. Following a trace meant knowing how the agent was wired together, which ruled out the product managers and the subject-matter experts, and those were the people who could tell you whether an answer was correct in the first place.

So every conversation about quality came back to whether something felt better after a prompt change. We had no way to check, and no way to tell whether a change had made things worse somewhere we weren't looking.

How it works

IngestDatadog traces Raw production spans from every agent and tool call.
ReconstructA readable story What the user asked, which agents ran, what each tool did, across handoffs and turns.
ReviewScore in Backstage PMs and SMEs filter, read, annotate, and score against a rubric.
Close the loopDashboards & datasets Quality trends, plus scored interactions curated into Datadog experiment datasets.

What I built

  • It reads production traces out of Datadog and rebuilds the whole interaction: what the user asked, which agents ran, which tools they called, and what came back. Multi-agent and multi-turn, assembled into something that can be read top to bottom instead of a span waterfall.
  • The review interface lives in Backstage, the developer portal internal users already have access to. Users can now filter down to the interactions worth looking at, read them, annotate them, and score the agent's behavior.
  • I built it for product managers and subject-matter experts, not just engineers. The people who know what a good answer looks like were the ones who couldn't see the traces.
  • Dashboards roll up quality, reliability, latency, usage, and cost, so agent quality sits next to the operational numbers instead of in a separate deck.
  • Scored interactions get curated into Datadog experiment datasets. Today's human judgments roll into tomorrow's regression suites.
production trace → readable story PMs and SMEs scoring, not just engineers human review → eval dataset, closed loop quality, latency and cost on one dashboard
Platform engineering

Golden paths, not tickets

Demandbase · 2023–present

The problem

Every new service needed infrastructure, and it took too much coordination and planning to keep from blocking a team waiting on infra work. An engineer would file a ticket, wait, and get back their environment or some customized Terraform module. Besides the teams left waiting, we were burning cycles on unplanned toil and error-prone work.

What I built

  • A company-wide Backstage developer portal, built end to end, including custom TypeScript plugins for the service catalog, docs, dashboards, and scaffolding.
  • Around 12 golden-path scaffolders that provision real production infrastructure: EKS clusters, AWS account vending, Lambda and API Gateway via SAM, Bedrock Agent runtimes, Secrets Manager entries, multi-environment ECR pipelines, and Istio + ALB internal ingress.
  • Three control planes, split on purpose. Terraform for the long-lived infrastructure, ACK for IAM roles so IRSA could be granted on the fly, and Crossplane for resources born only at cluster bootstrap, like the per-cluster S3 buckets backing Thanos.
  • Every path arrives wired: IRSA, GitOps delivery, and DNS managed in Terraform. Everything ships following the same patterns and organizational standards.
−80% provisioning time self-service, no ticket 12 scaffolders in production
Operational automation

Pipelines that fix themselves

Demandbase · 2026–present

The problem

Every week the platform team lost time to the same thing: assisting with CI/CD issues. A pipeline fails, a team asks for help, you open the job log, you find a missing environment variable or a version that needs bumping, you push a four-line fix and wait for it to run again.

Open merge requests had a version of the same problem. One would sit with a conflict, or a failing job, or a review comment nobody had gone back to, and nothing surfaced any of it until a person happened to look.

What I built

  • An internal AI engineering platform that carries work from a plain-English request, a Jira ticket, an incident, or a failing pipeline through to a tested, reviewable change. You reach it from the web, Slack, the command line, or from other AI tools over MCP.
  • It finds the relevant repositories and ownership context from source, service ownership, Jira, GitLab, and Confluence, then routes to specialized agents for research, implementation, bug fixing, testing, CI investigation, operational triage, security analysis, compliance, or cloud-cost work.
  • For code changes it provisions an isolated workspace, checks out the right branch, makes the change, runs the tests and validation, and opens a properly attributed GitLab merge request linked to the originating task. Tasks run async, so nobody sits watching a terminal.
  • It keeps working after the first commit: monitoring pipelines, investigating failing jobs, telling real failures apart from known flakes, applying bounded fixes when authorized, and rerunning validation. QA evidence is pinned to the exact commit SHA, so a green run from an older revision can never be passed off as proof for newer code.
  • An MR caretaker classifies every open merge request continuously, spotting conflicts, red pipelines, unresolved findings, stale work, and missing validation, then dispatches bounded remediation to keep it moving toward a human handoff. Approval and merge stay deliberate human decisions.
  • Scheduled agents cover recurring operations: release monitoring, repository health, cost-anomaly review, security checks. On-call agents correlate alerts with service ownership, source code, deploys, and telemetry.
  • The coding model underneath is swappable. The platform is the durable part: task state, workspaces, agent selection, tool access brokered over MCP with OAuth, credentials, retries, evidence, and audit.
failing pipeline → fix → MR, unattended flaky and actionable, told apart evidence pinned to the commit SHA humans keep approval and merge
Cost & throughput

13 minutes → 2 minutes

Demandbase · CI platform

The problem

Container builds took about 13 minutes (depending on the language/service). Across all of engineering, building many times a day, it was one of the most expensive things we ran. The AWS bill was climbing over the same period for reasons of its own.

What I built

  • A remote BuildKit fleet with ECR registry-backed layer caching, which took builds from about 13 minutes to about 2.
  • Two CI lanes across the core repos: a fast one for drafts, the full gate once an MR is marked ready. That also let agent-produced code iterate against real CI jobs for validation before anything reached the full gate.
  • Terraform moved off laptops and into GitLab CI org-wide, with automated testing and validation, plan on merge request, and apply on merge.
  • Cloud spend down 20% and holding, through KubeCost-driven optimization and application right-sizing. Earlier I designed a GCP demand-side platform that ran inside its performance requirements at about 40% under the cost projection.
−83% build time −20% cloud spend −60% time lost to upgrades (GitOps)

Advance Adam to SuperDay?

Also included

Everything else I own

OBS

Observability, company-wide

Strategy and day-to-day operation of the whole stack: Prometheus, Thanos, Mimir, Loki, Grafana, and Datadog across metrics, logs, and traces, plus ClickStack on ClickHouse taking application and service logs from ~100 clusters. Custom ingestion holding 20M active time series.

20M active series, one owner
AWS

Multi-account governance

Account vending through Control Tower Account Factory, SCP guardrails, and IAM Identity Center federated to Okta. AWS Config drives inventory and compliance visibility, surfaced back into Backstage through a resource connector.

~100 accounts, one model
IMG

Hardened base images

CVE remediation pulled apart from application upgrades. A Wolfi-based pipeline with Flux image automation rebuilds and promotes every open-source infra component weekly, in every environment, so ProdSec stops filing the same ticket.

no infra image older than 7 days
KFK

Kafka at scale

Partitioning, replication, and retention design for clusters carrying tens of billions of messages a day, with cluster provisioning automated through the Strimzi operator.

tens of billions of messages a day
NET

Mesh and networking

A cross-account Istio service mesh, meshed per environment, running over Transit Gateway with PrivateLink and VPC peering where the topology called for it. ALB ingress and Route 53 managed in Terraform.

cross-account mesh, per environment
SOC

SOC 2, from scratch

Primary technical contact through the audit alongside the VP of IT. I wrote most of the policy set, built the evidence collection process, and set up the change management practice that got us to Type 2 and kept us there.

SOC 2 Type 2, held
Integrations

Does it work with your stack?

Your job req, line by line, against what I've run in production. Where I'm light, the note says so. You'd find out in week three anyway, and I'd rather you found out now.

Your stackStatusNotes
EKS + Karpenter Native Primary SME for ~100 production clusters on a single-cluster-per-account model. Upgrades, security policy, and Karpenter-driven autoscaling and capacity strategy.
Multi-account AWS Native Own the architecture and governance: Control Tower Account Factory vending, SCP guardrails, IAM Identity Center federated to Okta, and AWS Config for inventory and compliance. Transit Gateway, PrivateLink, and VPC peering where the topology warranted it.
Terraform Native Drove the org-wide move off laptops into GitLab CI: automated validation, plan on MR, apply on merge. HashiCorp Terraform Associate.
ArgoCD / GitOps Adjacent Led the company-wide GitOps migration on FluxCD. Same reconciliation model, different logo. Also directed the implementation architecture for progressive delivery on Argo Rollouts, mentoring a junior engineer through design and rollout.
GitHub Actions Adjacent Deep in GitLab CI, lighter on Actions. Same primitives, and I've rebuilt a build system from the runners up, which is where the 83% came from.
Cilium Adjacent Istio is where my mesh experience sits: a cross-account service mesh, meshed per environment across ~100 accounts, running over VPC CNI, Transit Gateway, PrivateLink, ALB, and Route 53. The eBPF dataplane itself is new to me. The routing, policy, and cross-cluster problems it solves aren't.
Stateful systems at scale Native Kafka via the Strimzi operator at tens of billions of messages per day: partitioning, replication, retention, automated provisioning. Thanos and Mimir hold 20M active time series.
ClickHouse Native I run it in production under ClickStack, ingesting application and service logs from ~100 clusters. Real ingest volume, retention, and query tuning. It's a logging workload rather than the product-analytics scale you run it at, and I'd expect that step up to be the actual learning curve.
Cloud cost optimization Native 20% off the AWS bill through KubeCost and right-sizing, a GCP DSP that came in about 40% under projection, and per-team LLM quotas, budgets, and semantic caching.
On-call & incident response Native Twelve years. I've been the escalation point, and I've built the tooling that meant fewer people had to be.
Linux & the debugging bit Native Python for services, controllers, and internal libraries. TypeScript for Backstage plugins. Bash where Bash belongs. CKAD, AWS SA Associate.
Pricing

Transparent, obviously

You publish your compensation calculator. It seemed rude not to publish something back.

Trial
$0 / first 90 days*

*Terms and conditions apply. The term is "salary" and the condition is that you pay it.

  • First PR merged in week one
  • Shadowing on-call by week four
  • A written list of what's broken
  • Opinions about your codebase (yet)
See what's included
Most popular
Enterprise
Let's not

Available in theory. Strongly discouraged in practice.

  • Six-week discovery phase
  • Steering committee
  • Slide deck instead of a diff
  • A partner ecosystem
Contact sales (don't)
FAQ

The questions you were going to ask anyway

What are you bad at?

I've never run Cilium in production, though Istio across ~100 accounts is the closest thing to it. I run ClickHouse under ClickStack for logs, but not at the scale you run it as a product. My deep CI experience is GitLab, not GitHub Actions. I'm a competent TypeScript author because Backstage demanded it, not because I'm a frontend engineer. Don't put me on the app.

I'm strong on the systems and weaker the closer you get to the browser. I'd rather say so here than have you find out in week three.

You've been at one company since 2022. Why leave now?

Because I've built the thing. The platform exists, the clusters are stable, the migration is done, and the interesting work at Demandbase is increasingly work I've already done once. I want a system that's still hard: a stateful, rapidly-scaling product where the platform question is genuinely unsolved rather than mostly solved and being maintained.

Flux or Argo?

Whichever one is already there. I drove a company-wide migration to Flux because it fit the repo model we had, and I'd have made the opposite call under different constraints. The reconciliation loop is the idea; the controller is an implementation detail, and I have no interest in relitigating it on arrival.

Are you going to be weird about on-call?

No. Twelve years of carrying it. The only thing I'm opinionated about is that a page should mean something. If an alert fires and the runbook says "wait, it clears itself," that alert is a bug and I'll go delete it.

You built an AI platform. Why do you want an SRE job?

Because I built it to stop doing toil, not to get into AI. The CI triage agents exist because I was tired of reading the same failing job logs. The MR caretaker exists because merge requests rot when nobody is watching them. That's SRE instinct pointed at the delivery path instead of the runtime, and the same instinct is what makes me want to own clusters.

The parts of this job I want are the ones on your req: deep ownership of production, making a fast-growing stateful system predictable, and deleting the alerts that should never have paged anyone. Where an agent can take a piece of that off a human, I'll build one. Where it can't, I'll do it by hand.

Why PostHog specifically?

I want to work somewhere where the co-CEO has their own action figure.

The handbook helped too. I've read more of it than is strictly normal.

Is this page running PostHog?

YES!

Changelog

Release notes

Twelve years, semantically versioned. Breaking changes were mostly intentional.

v5.0.0
2026-04 · current

MajorPrincipal DevOps Engineer, Demandbase

Took the AI Runtime Services charter, the shared platform behind every AI feature in the product. Built the human-in-the-loop quality platform that turns production Datadog traces into reviewable agent interactions and curated evaluation datasets. Operate the LiteLLM gateway as the single front door for model access, with guardrails, quotas, and per-team cost attribution. Shipped the internal AI engineering platform that carries tickets, incidents, and failing pipelines through to reviewable merge requests, then keeps them moving. Build times down 83%.

v4.0.0
2023-06

MajorStaff DevOps Engineer, Demandbase

Built the company-wide Backstage developer platform end to end. Drove the org-wide GitOps migration on FluxCD. Took over AWS multi-account architecture and governance, and became the EKS SME for ~100 clusters. Built the Wolfi hardened-image pipeline that cleared the ProdSec queue for good.

v3.0.0
2022-03

MajorSite Reliability Engineer, Demandbase

Designed and deployed all infrastructure for an advertising demand-side platform on GCP, inside its performance requirements at ~40% below cost projections. Led the Istio migration and spearheaded the Kafka architecture on Strimzi.

v2.0.0
2020-12

MajorDevOps Engineer, automotiveMastermind

Architected Azure and GCP services: App Services, AD, SQL, Functions, GKE, BigQuery, Pub/Sub. First GitOps workflows on Flux CD, custom Helm charts, ELK and EFK logging stacks.

v1.5.0
2017-10

Manager, IT & Enterprise Architect

Primary technical contact through the SOC 2 audit. Authored the majority of the company's policy set, built the evidence-collection process, and established the change-management practice that took it to SOC 2 Type 2, and kept it there.

v1.0.0
2014-06

Systems Engineer & Team Lead, Varsity Technologies

Cloud-hosted infrastructure, a team of five, and the discovery that almost everything I was doing by hand could be a script.

v0.1.0
2013

Initial commit

B.S. Business Administration, Computer Information Systems. California State University, Stanislaus.

System status
status.dickinson.works
Agent review queue0 unreviewed · nominal
Golden-path scaffolders12 templates · operational
EKS fleet~100 clusters · nominal
CI build lanep50 2m 04s
Pagersuspiciously quiet
Job searchdegraded · 1 open req
THE INTERVIEW'S THE INTERVIEW'S HALF DONE HALF DONE

You've read the case studies, the gaps, and the pricing. The rest is a conversation.