English | Suomi
AI Systems Engineer · Deterministic decision systems · Production reliability
Based in Finland · Open to freelance work, remote roles, and software partnerships
Language models interpret and communicate, while deterministic software controls decisions, permissions, and escalation. Systems and reference implementations are built to be testable and auditable, with their operating boundaries clearly documented.
- DDN Reference — a verifiable deterministic decision network with quorum validation and signed receipts
- Kopilotti Sales — deterministic used-car price negotiation, live demo
- Ruuhkavahti — a Kafka-scale guardrail layer, load-tested at 8,000 messages per second
- Contact — open to freelance work, remote roles, and software partnerships
- Agentic systems — structured orchestration, tool use, and schema-enforced outputs
- Deterministic decision systems — explicit PASS, ESCALATE, BLOCK, ACCEPT, COUNTER, and REJECT outcomes decided outside the language model
- Production reliability and AI systems security — verifiable execution, signed receipts, prompt-injection protection, and SSRF protection
- Accessibility by architecture — WCAG 2.2 AA, semantic interfaces, and screen-reader testing
An open-source reference implementation for independently verifiable automated decisions. Versioned business rules execute inside three isolated validator processes, each running the same WebAssembly policy package; a decision is accepted only with a 2-of-3 quorum. Accepted decisions receive cryptographically signed receipts that can be independently checked, batched into a Merkle tree, and anchored to an EVM-compatible smart contract.
This is a reference implementation, not a claim of an active public production deployment.
Rust · WebAssembly · TypeScript · Solidity · Ed25519 · Merkle trees
A customer-facing digital sales channel for used-vehicle price negotiation. The language model handles the conversation, but it never determines the price — dealer-defined business rules control acceptance, counteroffers, rejection, and escalation, while the backend separately enforces vehicle reservation, tenant and customer ownership, contract progression, and payment-state permissions.
After an accepted price, the reference implementation can demonstrate a concept contract and payment-status tracking. Customers cannot confirm payments, and Kopilotti does not receive, hold, or transfer funds. The public demo contains no payable bank details, and the full invoice-to-PAID flow is not active in public production traffic; the DDN integration boundary exists but is not active there.
Node.js · Express · PostgreSQL · JavaScript · Claude API · Playwright
→ Repository · Live demo
A deterministic PASS / ESCALATE / BLOCK layer running inside a scalable Kafka consumer group; load-tested against a simulated live-TV traffic spike of 8,000 messages per second.
The dashboard makes real consumer lag, duplicate handling, and Kafka consumer-group rebalances visible through a 3D visualization, a reduced-motion 2D view, a semantic HTML table, and accessible live status updates.
Python · TypeScript · Apache Kafka · Docker Compose · axe-core
A TypeScript-based accessibility audit pipeline that discovers Finnish business websites, runs WCAG audits, enriches results with business-registry data, and creates structured outreach material.
It combines Playwright and axe-core scanning with queue-based processing and Claude-assisted summaries; the infrastructure includes Redis authentication, API middleware, SSRF and DNS-rebinding protection, automated tests, and GitHub Actions CI.
TypeScript · Node.js · Playwright · axe-core · Redis · BullMQ · Claude API
Show additional projects
- osCommerce Checkout Refactor — AI-assisted modernization of a legacy checkout flow; a failing test exposed an inverted inventory rule, resulting in 34 passing tests with preserved runtime behaviour
- Prompt Injection Gate — a deterministic boundary that quarantines untrusted tool output, emits PASS / ESCALATE / BLOCK outcomes, and records a hash-chained audit trail
- refuse-dont-guess — a zero-dependency Python guardrail for VAT classification, with deterministic escalation and prompt-injection regression tests
- claude-code-invoice-guard — the same guardrail principle implemented with Claude Code runtime primitives
- Provenanssi — open research separating measured image information from model-generated reconstruction
- Karikko — offline-first geospatial hazard reporting for Finnish waters, with a backend and live demo
TypeScript · JavaScript · Node.js · Python · Rust · Solidity · PostgreSQL · Redis · Apache Kafka · Docker · WebAssembly · Claude API
LLM applications become reliable when probabilistic reasoning is separated from authoritative decision-making. I use language models where interpretation, synthesis, and interaction are valuable; deterministic software remains responsible whenever correctness, permissions, money, security, or user safety are involved. This boundary is designed into the architecture from the beginning — not added after the model reaches production.
Open to software partnerships, architecture consulting, selected freelance projects, and remote roles.

