AI Engineering Team Lead | Agent Platforms & Evals | MCP Server Developer | Human-AI Collaboration Researcher
Ex-Oracle (JAXB Β· EclipseLink MOXy Β· JDK 9) Β· 16+ years shipping enterprise systems
Evals first, architecture second. I build agentic systems the way I was trained to build research: golden sets before features, measured baselines before claims, and deterministic code wherever an LLM is not earning its place in the path.
let current_focus = vec![
"Evals-first agent development (golden sets, regression gates)",
"AI agent platforms & orchestration",
"MCP servers & Claude Code toolkits (skills, subagents, plugins)",
"Knowledge graphs for agent memory & retrieval",
"LLM routing, cost & latency engineering (AI FinOps)",
"High-performance trading systems",
];Current:
Previously:
|
Agent Orchestration:
Evals & Quality:
LLM & Embeddings:
Retrieval & Knowledge:
|
|
Green-field agentic platform (agent board, planner, clerk, knowledge-graph memory). The user-facing agents scored well on golden sets but underperformed in the application, so I wrote golden sets for the retrieval layer itself. The evidence said the LLM "data librarian" was the bottleneck; I replaced it with deterministic, parameterised Cypher behind a deliberately narrow MCP tool, plus new KG schemas and indexes. // Illustrative: the MCP tool accepts only a search term and optional hops
CALL db.index.fulltext.queryNodes('entityIndex', $term) YIELD node AS e, score
CALL apoc.path.subgraphNodes(e, {maxLevel: $hops}) YIELD node AS ctx
RETURN e, score, collect(DISTINCT ctx) AS context
ORDER BY score DESC LIMIT $k
Latency includes a Haiku call interpreting results. Cost fell because retry loops between clerk, planner and agent board disappeared. Then built the Agent Factory: consultants create new agents over synthetic data without touching code, and each agent ships with its own auto-generated golden set. |
# Each new agent gets its own golden set, generated and judged
# by a *different* LLM vendor than the one that built it.
golden = generator.make_questions(agent.spec, n=20, difficulty="graded")
while True:
report = judge.score(agent, golden, criteria=[
"retrieval_accuracy", "hallucination_rate",
"provenance", "cost", "latency",
])
if report.passes(thresholds):
break
agent.prompt = judge.propose_revision(agent.prompt, report)An eval harness for training and evaluating "market wizard" trading agents, executed through the TradeGuard platform:
|
# Fuzzy scoring + LLM top-up; a human is called only for
# anomalies the pipeline cannot resolve on its own.
class InvoicePairing:
def pair(self, vendor_tx, invoice_items):
match = self.matching_engine.score(vendor_tx, invoice_items)
if match.resolved:
return AutoPair(match)
resolved = self.llm_resolver.try_resolve(match)
return resolved or HumanReview(match.anomaly)
|
|
|
Languages: Backend & Microservices:
Cloud & DevOps:
Data:
|
Agentic AI:
Production Systems:
Research & Open Source:
|
|
PhD Dissertation (Defended October 2025, VΕ E Prague): "Human-AI Programming Role Optimization: Developing a Self-Determination Framework" Key Finding: AI-assisted development increases programmer motivation by 23β65% when optimized for individual personality types (Big Five) and working styles (Self-Determination Theory). Practical Applications:
|
Select Publications:
|
|
Oracle / Eclipse Foundation:
Interests:
|
16+ Years Building:
Where I've Built:
|
Building:
Exploring:
|
Open to: AI Agent Platform Engineering β’ Evals & Agent Reliability β’ MCP Server Development β’ Research Collaboration β’ Technical Consulting
π§ marcel@tradeguard.cz π Location: Prague / Remote-first (currently Asia) πΌ Status: Building @ TradeGuard Β· Leading AI Engineering @ EuroWAG
"The best AI systems don't replace humans; they amplify human judgment with superhuman data processing."