I build AI systems where the human has the final say
SEE PROJECTS →The model is just a tool. The edge is understanding people.
I'm an LLM application engineer: I don't train models from scratch — I integrate them with real systems: backend, database, authorization, deployment, cost and monitoring. Behind me are fourteen years of commercial software engineering, from e-learning and banking-sector systems to enterprise front-end in international projects for aviation, e-commerce and pharma.
The second pillar of my profile is unusual: two master's degrees — in developmental psychology and pedagogy — and five years of university lecturing. That's why I specialize in human-in-the-loop systems: ones where AI supports a person's decision instead of making it for them. I know why people distrust systems built to "help" them — so I design AI that supports a human decision instead of quietly taking it over.
I built every system below myself and use them daily. This is deliberate dogfooding — I carry the cost of design mistakes on my own skin, before anyone else does.
Trader AI Assistant
Mentoring platform · multi-agentA production platform where an AI mentor guides the user according to their own written methodology — instead of generic advice. Multiple cooperating agents on the Claude Agent SDK, prompts assembled dynamically from the methodology and user history, integration with a brokerage account (auto-journaling, a live risk-rule guardian). The system runs on real money — AI mistakes carry a real cost here.
MORE — ARCHITECTURE & COMPETENCIES
- End-to-end architecture. React 19 + TypeScript SPA (Vite, MUI, Zustand), Firebase Auth/Hosting/Storage, Express + TypeScript containerized on Google Cloud Run, PostgreSQL on Supabase. All domain data flows through the backend API; model API keys live server-side only.
- LLM layer with two providers (Anthropic Claude and Google Gemini) and backend-level dispatch. Every prompt is assembled from blocks: trader profile, session history, market context and the user's own written methodology — setups, checklists and risk rules are data in the system, so the mentor enforces the user's rules, not generic advice.
- Multi-agent layer on the Claude Agent SDK running as background jobs, with an isolation rule I designed: an analyzing agent cannot see the mentor's earlier assessments before issuing its own.
- Model ops. A central model registry in the database (engines swappable without a deploy), request limits per subscription plan, BYO API keys, and a cost-driven default-model choice — comparable quality at a fraction of the price.
- Production discipline. 100+ numbered SQL migrations, Vitest unit tests, Playwright E2E on ephemeral accounts, and procedures forged on real incidents — e.g. an env-replacing deploy flag led to a merge-and-verify procedure; a broker API returning HTTP success on rejected operations taught me to validate response bodies, not status codes.
Deep Mentor
Personalized retrieval (RAG)The mentor's long-term memory layer: the model reads the user's personal knowledge base — notes, lessons, hypotheses — and cites it in its analyses, instead of answering from general knowledge. Base seeding, digest in prompts, hard control over inference cost.
MORE — ARCHITECTURE & COMPETENCIES
- Per-user wiki memory in the database: agent pipelines analyze the user's day and write notes into their personal knowledge base, which the mentor then cites in its analyses.
- Retrieval designed for cost. Base seeding, digests in prompts instead of raw dumps, expensive deep runs only on demand — inference cost is a first-class design constraint, not an afterthought.
- Two feed modes. The knowledge base can be filled by the platform's own automations or by an external pipeline compiling and pushing notes from the user's local Obsidian vault.
audit-mentor
LLM quality evaluationA harness for the cyclical audit of the AI mentor's answers: an error taxonomy in four classes, deduplication of findings by root cause, a remediation backlog with locations in the code. Organizing principle: deterministic code computes the metrics, the model only interprets — an LLM doesn't grade itself on data it could distort.
MORE — ARCHITECTURE & COMPETENCIES
- Cyclical audit (~every two weeks) of the mentor's production answers. Every finding carries an evidence quote and a root-cause hypothesis — no vague "could be better" notes.
- Regression backlog. Findings are deduplicated by root-cause signature, an occurrence counter works as the priority weight, and each entry points to path:line locations in the codebase.
- Division of labor by design. Deterministic code computes the metrics, the model interprets them, and the human reviews findings after the fact and kills false positives.
Prompter & Murmur
Realtime voice AI · macOSNative apps for live conversations: streaming transcription of both sides of the conversation, simultaneous translation, and contextual prompts from a personal knowledge base. The main engineering challenge: the latency budget of the audio → text → LLM → response pipeline, across two parallel model sessions.
MORE — ARCHITECTURE & COMPETENCIES
- Streaming transcription of both sides of a conversation with two model sessions running in parallel; the core engineering work is the latency budget of the audio → text → LLM → response pipeline.
- Hybrid speech stack. On-device Apple SpeechAnalyzer where the language is supported, Gemini Live where it isn't — chosen per language after real spikes on the target OS, not from documentation alone.
- Contextual prompt cards retrieved live from a personal knowledge base during the conversation; simultaneous translation for cross-language calls.
Scout
Research agent · MCPA market-analysis agent with a hard autonomy boundary: it analyzes, suggests and alerts, but the decision always stays with the human — zero auto-trading, no exceptions. Deterministic metrics plus a narrative layer from web research, a walk-forward backtesting lab, tool integrations over the Model Context Protocol, including a bridge to TradingView Desktop.
MORE — ARCHITECTURE & COMPETENCIES
- A market radar that separates roles: deterministic code computes volatility metrics, a narrative layer from web research adds context — the model never invents the numbers it reasons about.
- "Blind" analyses. The agent produces its analysis without seeing the human's view, and only then are the two diffed — a learning loop deliberately designed to avoid anchoring.
- Setup Lab: walk-forward backtesting of strategies with an append-only experiment journal; tool integrations over MCP (including a bridge controlling TradingView Desktop) plus direct exchange REST APIs.
Python trading system
~35K lines · case studyA production asynchronous service: a layered architecture with the execution service as the sole owner of orders, centralized risk configuration, unit tests on the money path, demo mode as the safe default. Alongside it — a signal engine with LLM-based signal scoring in a live loop. Private code, discussed as a case study in interviews.
MORE — ARCHITECTURE & COMPETENCIES
- ~30.7K lines: an async FastAPI service with a layered architecture — connectors → analysis → an execution service as the sole owner of orders. Centralized risk configuration, demo mode as the safe default.
- Tests where money moves. Unit tests concentrated on the money path: loss limits, pause-after-loss, signal-age validation.
- ~5.1K lines alongside: a 12-rule volume-price signal engine with a live candle-by-candle loop and LLM-based signal scoring; SQLAlchemy/Postgres persistence.
Atelier
AI in professional development · EdTechA year-long professional-development program for someone entering the styling profession — led by an AI agent under my subject-matter supervision. A daily newsletter generated from web research and the participant's personal profile, audio lesson series released one per day, a dashboard with the day's task, and a feedback loop: the participant's entries feed back into the generator of the next issues. The psychology of adult learning translated directly into system architecture.
MORE — ARCHITECTURE & COMPETENCIES
- A headless agent on a daily cron generates each issue from web research, the participant's profile and the program's weekly themes; an anti-repetition rule makes it read the last 14 issues before writing a new one.
- Audio lessons and a dashboard. TTS lesson series released one per day from a queue; a dashboard with the day's task; the participant's entries and check-ins feed back into the next issues.
- Curriculum built on psychology. A year-long program map designed around the psychology of entering a new profession — dosing, celebrating streaks, support instead of accounting.
The market sometimes names my patterns after libraries I haven't used yet. I say that openly — and I close each gap inside a live project, not with a course certificate.
I detected sycophancy in my own AI mentor: it anchored on the user's emotional self-assessment and confirmed it, instead of confronting it with data. As a psychologist I know the difference between supporting and agreeing — which is why a mentor that doesn't just agree has to be designed.
The most important architectural decisions are about what the system must not do. Zero auto-trading in the market agent. The only mutation on the broker's side is a protective daily lockout. Designing such boundaries requires understanding a person under pressure — their fatigue and their impulses.
Deterministic code computes the metrics, the model interprets, the human reviews after the fact. A deliberate human-review-loop architecture — instead of trusting the model to grade itself.
I'm looking for projects at the intersection of AI engineering and people: mentoring and educational products, human-in-the-loop systems, LLM applications from architecture to production.
B2B contract, fully remote. I reply to every concrete message.