Engineering leader & AI enthusiast · Amsterdam

AI transformation, with a human hand on it.

I'm Stefan, an engineering leader with 15+ years of building software in banking, insurance and hosting. I'm also genuinely enthusiastic about AI, especially how teams can adopt agents safely: people stay in charge, guardrails come built in, and every change can be traced and undone.

Securitysafe by default
Peoplegrowing teams
AgentsAI that takes direction
Pipelinesevery change tested
Deliverysmall, reversible steps
15+
years shipping production software
8 yrs
leading a regulated financial platform
DNB · EU
compliance designed in, not bolted on
Experience

Fifteen years of software that had to be right.

Banking, insurance and hosting: software that faces regulators, auditors and millions of customers. Here's the history, the way I'd read it.

~/career $ git log --graph --decorate
  1. 5bfb861 HEAD → main 2021 — now

    Managing Engineer · Nationale-Nederlanden

    Leading engineering for the next-generation pension platform: people, architecture and delivery.

  2. 085bc10 2021

    Merge branch 'consulting' into main

    Joined Nationale-Nederlanden as staff after three years with them as a consultant.

  3. 2d2f499 2018 — 2021

    Technical Lead · Nationale-Nederlanden

    Built the platform behind every new NN pension product: Vue, Node.js, Lambda, Kinesis and RDS on AWS, all provisioned in CloudFormation. Grew a high-performing team through hiring, training and mentoring.

  4. 402334e 2018 — 2019

    Software Engineer · ING

    Credit-card lifecycle systems: customer-facing Angular + Spring, real-time Kafka streams and batch processing.

  5. 8588ea8 consulting 2018

    IT Consultant · Blue Harvest

    Created a cloud-agnostic, turn-key, white-label container orchestration solution on Kubernetes. Spent innovation Fridays building it and mentoring consultants.

  6. 6957805 relocate/nl 2014 — 2018

    Software Engineer · ABN AMRO · via Capgemini

    Moved to the Netherlands. Built the software behind ABN AMRO's Corporate Banking website, including iDEAL integration and PSD2.

  7. 5f9092d 2010 — 2014

    Web Developer · 1&1 Internet · Bucharest

    Help center, fraud-prevention and abuse-handling tools used daily by internal teams. Migrated 5,000+ help articles automatically.

  8. 050aa51 tag: v1.0 2004 — 2010

    Initial commit · ASE Bucharest

    BSc Informatics · MSc E-Commerce at the Bucharest University of Economic Studies.

languagesEnglish · Dutch · French · Spanish
Pipeline

Every change here ships the careful way.

Every change to ghiata.com goes through GitHub Actions. It gets built and type-checked, then published to its own preview URL, and it reaches Cloudflare's edge only after a human merges it.

deploy.yml · mainqueued
  1. Plan agent decomposes issue
  2. Build astro build
  3. Check types & lint
  4. Review agent + human
  5. Preview pages.dev URL per PR
  6. Deploy cloudflare edge
.github/workflows/deploy.yml
on:
  pull_request:            # preview every PR
  push: { branches: [main] }  # ship main
jobs:
  build:
    steps:
      - run: npm ci
      - run: npm run check   # types
      - run: npm run build
  deploy:
    needs: build
    uses: cloudflare/wrangler-action
    with:
      command: pages deploy dist
  • 01

    A preview for every change

    Reviewers, human or agent, click a live URL instead of reading a diff blind.

  • 02

    Gates before merge

    Builds and type checks must pass. Red means it doesn't ship.

  • 03

    A human merges

    Agents can open pull requests, but only a person can merge to production.

  • 04

    Kept current

    Dependabot proposes updates every week, and they go through the same checks.

Approach

Change is safe when people stay in control.

AI can multiply what a team delivers, but only when it's introduced with care. My job is to make that change feel steady: clear roles, firm guardrails and a team that grows along with the tools.

People first

Transformation is a people project before it's a technology project. I recruit, mentor and coach engineers so they get better at their work with AI, rather than being replaced by it.

  • Team growth & mentoring
  • AI adoption playbooks
  • Clear ownership

Agents with boundaries

Coding agents get clear tasks, least-privilege access and isolated workspaces. They draft, test and document; humans decide what ships.

  • Human-in-the-loop review
  • Sandboxed execution
  • Claude & LLM APIs
  • Tool use / MCP

Guardrails that scale

I build pipelines that hold up under DNB and EU regulation. Every change is built, tested, security-checked and provisioned as code before anyone merges it.

  • GitHub Actions · GitLab CI
  • AWS · CloudFormation
  • Kubernetes
  • Audit trails
  1. 01

    Humans set direction

    People own the goals, the trade-offs and the final call. Agents never merge to production on their own.

  2. 02

    Small, reversible steps

    Transformation happens in increments you can review, measure and undo, never in one big leap.

  3. 03

    Trust is engineered

    Type checks, tests, previews and audits gate every change, whether a person or an agent wrote it.

  4. 04

    Nobody is left behind

    The goal is a stronger team: people learn the new tools and keep the judgement only they can bring.

Try it

We are the humans in the loop.

Give the team a goal. The agents plan, build, test and review on their own, but nothing moves past a human checkpoint until you decide. That's how we introduce AI into teams.

  1. Pick a goal above. Agents will do the legwork, and you'll be asked to approve at each human checkpoint.

The crew

Agents, skills and guardrails, written down.

These robots aren't decoration. Each one maps to a real config file in this site's repository: the same agent definitions, skill and permission rules that helped build it. Click a robot to read its file.

.claude/agents/planner.md
---
name: planner
description: Turns a goal into small, reversible tasks with acceptance criteria. Use before any change that touches more than one file.
tools: Read, Grep, Glob
model: inherit
---

You are the planner for ghiata.com.

1. Restate the goal in one sentence and ask the human if anything is ambiguous.
2. Split the work into tasks a reviewer can read in under 10 minutes each.
3. For every task, write acceptance criteria and how to roll it back.
4. Flag anything touching security, personal data or production, because those need explicit human sign-off.

You plan; you never edit files.
Terminal screenshot: an AI agent's npm install of axios from registry.npmjs.org fails with EAI_AGAIN. The agent explains that the sandbox restricts outbound network access to an allowlist and that the configured registry in .npmrc should be used instead.
real screenshot · unedited
Sandboxing

Proof from the field: the sandbox holds.

A real session from one of my sandboxes. The coding agent, a local open-weights model, was asked to install a package from the public npm registry, and the sandbox didn't let it.

  1. Blocked at the network

    Outbound traffic is restricted to an allowlist. The public registry isn't on it, so the request fails at DNS before anything downloads.

  2. No workaround attempted

    The agent doesn't try to tunnel around the block. It explains why the request failed instead.

  3. Points to the approved path

    It sends the change to the vetted registry in .npmrc, which is the one supply chain the sandbox trusts.

Off the clock

Things I like.

Making things

Welding (made some doors myself), Minecraft mods, a smart mirror, potato batteries with the kids, taking old hardware apart.

Grinding a freshly welded steel frame corner, sparks flying.
Made some doors myself
Selfie in a wooden-framed smart mirror Stefan built, a glowing blue moustache drawn on its display.
A smart mirror I built, 2016
Minecraft screenshot: "Bun venit! Welcome to the Carpathian Mountains", with a rescue radio in hand.
Bear Rescue, my Minecraft mod
Minecraft screenshot from the Bear Rescue mod: feeding a blocky brown bear.
Stefan and a boy wiring up a potato battery with a multimeter.
Potato & lemon batteries
A table of lemons and potatoes wired with crocodile clips to a clock and a multimeter.
FLIR thermal image of an electrical panel with an energy monitor, one hot spot at 38.2°C.
Thermal camera on the fuse box
A Kitronik handheld game console showing a game on its screen.
A corroded battery pack opened up on a workbench.
An Acer Aspire laptop taken apart, keyboard removed.
An old Intel Pentium MMX processor.
Pentium MMX
A small boy hammering a wooden birdhouse with help from an adult.

Traveling

North America, South America, Africa and mostly Europe. Asia not so much yet (I've crossed the Bosporus once 😅). Would love to see more.

Stefan jumping with arms spread on a rooftop above Manhattan.
New York
Stefan grinning in an open prison cell doorway at Alcatraz.
Alcatraz, briefly
A steep San Francisco street seen from Montgomery Street.
San Francisco
Stefan walking across a park lawn with a child on his shoulders, Pittsburgh skyline behind.
Pittsburgh
A small child posing in front of a large old wooden door with brass fittings.
A woman smiling next to an old computer with exposed wiring and drum memory in a museum.
Drum memory, computer museum

Fishing & photography

Catch and release. Photography runs in the family: my dad loves it too.

Stefan in a cap and sunglasses holding up a small fish he caught.
Catch and release
Old film photo of Stefan as a small child in front of Peleș Castle, taken by his father.
Me at Peleș Castle, Romania. Photo by my dad.
Close-up of cut grass with a white field line.

At work

Fifteen years of desks, teams, conferences and the occasional Secret Santa film.

Still from a video: Stefan presenting code to his team on a big screen.
"Connecting with ease": what my team stands for
Stefan at his desk holding a Capgemini award and two trophies.
Capgemini team awards
Holding an ng-europe Angular conference badge reading "Ghiata Stefan".
ng-europe
Stefan from behind, coding on a laptop with headphones on.
Stefan frowning at his ThinkPad, chin in hand.
Debugging
Stefan smiling at his desk in an open-plan office.
An office selfie of Stefan, smiling.
A desk with a keyboard, laptop, keys and a bottle of alcohol-free beer.
Alcohol-free. I stopped drinking alcohol altogether.
Stefan in a gas mask and Santa hat, arms crossed, in a dark office during a film shoot.
Making a film for the Secret Santa movie competition at 1&1, 2013
Young Stefan in a chair next to an old CRT monitor and bookshelves.
Early days

On the wishlist: a drone and a 3D printer.

My actual right hand, photographed with my own phone. No stock photos, no AI-generated people.
Stefan's right hand, waving