A travel platform whose place descriptions, audio-tour scripts and itineraries are written from places retrieved from a places API and its own database, not from the model's memory.
A retrieval-augmented candidate-screening pipeline for a regulated hiring context, with separate parse, extract, embed, retrieve and evaluate stages, embeddings kept apart per customer, and evaluation tooling, designed with the EU AI Act in mind.
A production LLM layer with schema-enforced structured output, layered retries, JSON repair and versioned prompts.
Prompt-injection screening and deterministic pre-filters in front of model calls.
Guardrails for agent-written code.
Agents write most of the code now. What keeps it honest is written down and checked by machines: specs, decision records and architectural laws.
The constraints program in enola, architectural laws declared over the code graph and checked deterministically in CI, with a Ruby DSL and four gems for Rails teams.
pi-brain, an intent store for agentic development with human-gated workflows and decision records agents must read before they edit.
Spec-driven projects where decision records are checked against the code by a pre-push hook.
Three MCP servers, in Go, Rails and plain Ruby.
Many systems, one model.
Most products sit on top of other people's data. The work is making it one shape, early, so everything downstream stays simple.
Normalised data from many third-party systems into one model, and inbound messages from several channels into one shape for a conversation engine.
An event system on a single pub/sub, with every event defined once and kept normalised across the product.
A daily job-market pipeline over 4.76 million postings, reading only the columns it needs with DuckDB.
DevOps and CI/CD on Google Cloud and Kubernetes.
Leading teams.
Good teams make their own decisions well. My job is to make the decisions visible, the work small, and the blockers short-lived.
A travel guide to Bosnia and Herzegovina with curated locations, experiences and audio tours, on Rails 8 with Hotwire, Solid Queue and Kamal, and AI content grounded in real places.
A plain-language voter guide and seat projection for the 2026 general election in Bosnia and Herzegovina, covering all 7,028 candidates. The seat rules are written as code and replayed against 2018 and 2022, where they place every seat-winning list and mandate exactly.
A location-based treasure hunt built for RubyConf Austria 2026: GPS proximity checks for each clue, team play, hints on cooldowns and live leaderboards, as an installable Rails 8.1 web app with offline support.
A card game with a pure TypeScript engine of about 100 modules, held by 3,374 tests and 33 decision records that a pre-push hook checks the code against.
A minesweeper on map grids across Bosnia and Herzegovina, where the mines sit exactly on recorded mine-suspected areas. It teaches what the numbers mean, and says plainly that an empty cell is never a safety statement.