VITRINE · To the Digitec Galaxus team · my answer to “what can you do for us?”

I turn AI product discovery into evidence you can act on.

You already know what excellent e-commerce looks like at scale. I am not claiming to reproduce your production systems. I built VITRINE to show how I would contribute: make an agent and a controlled workflow solve realistic shopping cases, evaluate both with AgentEval, probe their safety boundaries, and preserve proof that a team can inspect.

This is part portfolio, part working proposal: a conversation between the questions you may ask and the evidence I can put on the table.

2architectures to compare
Offlineno-provider, deterministic default
6explicit opt-in paid plans
4shared realistic use cases
43registered diagnostic controls
Localdurable evidence receipts
01 · What the customer sees

A shopping need becomes a screened, evidence-bearing recommendation.

Start with the experience before the evaluation vocabulary. This is a faithful customer-oriented summary of the first card in the checked-in deterministic Demo01 receipt—not a paid-model claim. The complete linked receipt remains the source of truth.

Nadia's synthetic trip request and a screened K&F neutral-density-filter recommendation with current price, stock, delivery, customer evidence, catalogue evidence, and visible measurement limits
Genuine browser capture of the checked-in scripted-agent receipt. Open the complete customer-facing recommendation to inspect its grounded result, citations, and explicit measurement limits.

Nadia · Cross-category intent

Connect hiking, dawn starts, power, carried weight, and photography without recommending products she already owns.

Sofia · Capability gap

Separate a missing durable coffee capability from consumables she may simply need to replenish.

Marco · Gift-history trap

Ignore gaming purchases that were gifts and personalize from his own espresso evidence.

Luca · Safe abstention

Ask a useful clarifying question instead of inventing preferences from one low-signal cable purchase.

The 60-second proof path · no installation

0–15 seconds

Customer

Inspect the synthetic request and screened result.

See the result →

Independent portfolio project. Created by José Luis Latorre Millas as a job-application value proposal for Digitec Galaxus; not affiliated with, commissioned by, or endorsed by the company. All catalogue, persona, and customer-history records are authored/synthetic; recognizable third-party product names and trademarks are used illustratively. Recorded runs measure this sample, not a Digitec Galaxus system.

02 · The conversation

If you ask what I can do for you, this is my answer.

These are the questions I designed the sample to answer—not quotes attributed to Digitec Galaxus. The point is to make our first technical conversation concrete.

Your question

Can an AI shopping experience be useful, safe, and measurable—not just impressive in one demo?

I would want that question answered with observable behavior, failure cases, comparisons, and evidence that another engineer can inspect.

My contribution

I connect product engineering to an evaluation discipline.

Explicit scenarios, independent criteria, deterministic gates, opt-in live model judging, stochastic reliability, red-team probes, and evidence that survives the run.

What AgentEval adds

Intent becomes an executable quality and safety contract.

AgentEval supplies admitted checks, benchmark arms, comparisons, statistics, red-team campaigns, and durable outcomes. VITRINE shows how I apply that work to e-commerce.

The collaboration I am proposing: you bring the real customer, catalogue, commercial, and operational context. I bring a way to turn quality and safety questions into repeatable engineering feedback—then refine it with your teams and governed data.

03 · For an AI platform team

The recommender is the example subject. The reusable product is the engineering loop.

The AI Platform & Knowledge Systems role is larger than one shopping assistant: product teams need shared model access, authoritative tools, evaluation, observability, and feedback without rebuilding those foundations for every use case. VITRINE demonstrates how I approach that platform layer in working .NET code.

Observe

Model and tool operations

ObservedChatClient, operation IDs, bounded inputs/results, explicit response absence, and typed workflow events make execution reconstructable without exposing credentials.

Account

Usage and cost states

Known zero, measured usage, missing telemetry, and known lower bounds stay different through execution, export, and replay instead of collapsing into a flattering total.

Contain

Fail-closed paid boundary

Credentials alone never select a paid path. The workload is previewed, confirmation is one-shot, readiness is checked, and cancellation or provider failure still leaves a safe receipt.

Align

One tool surface, several consumers

The registered read-only functions, runtime graph, allow-list, and evaluation observations share one tool-surface invariant rather than drifting copies.

Challenge

The evaluator is tested too

A registered mutation suite requires healthy behavior, detection of a deliberately planted defect, and recovery. Green is meaningful only when the check can turn red for the right reason.

Compare

Versioned evidence, not anecdotes

AgentEval stores benchmark arms, missingness, paired comparisons, reliability intervals, safety campaigns, and local outcomes that can be inspected after the model call is gone.

Related platform work: AgentEval is the .NET evaluation toolkit I created and VITRINE consumes as a published package. agent-memory-dotnet is my separate Neo4j-backed, graph-native memory provider for Microsoft Agent Framework with GraphRAG and MCP integration. It is adjacent knowledge-systems evidence, not a hidden VITRINE dependency.

Honest role boundary: VITRINE does not claim to implement Digitec Galaxus's knowledge graph, semantic data platform, MCP fabric, Agentic BI, or production feedback systems. It demonstrates the evaluation, tool-observation, cost, and evidence discipline that should surround those systems.

04 · The documentation hub

Start at the altitude you need.

This page is the front door. Every deeper document follows the same evidence model and links back to the working sample.

Two minutes

Plain language, one page

The customer problem, what VITRINE does, what the evidence adds, and where its claims stop—without statistical or framework vocabulary.

Read the plain-language summary →
Operate

Run it and read the control room

Follow Demo01, Demo02, offline evaluation, paid plans, the catalogue self-test, controls, exports, and replay.

Open the operator walkthrough →
Inspect

Understand retrieval and recommendation evidence

Trace the committed concept space, interest signals, ranking, guardrails, and the limits of what the sample proves.

Open the retrieval deep dive →
05 · System boundary

The subject never grades itself

I keep the subject from grading itself. The recommendation project owns facts and observations. The eval project reads those artifacts and supplies independent expectations, applicability, floors, and verdict rules. There is no reference back from the subject to its evaluator.

VITRINE subject and evaluation boundary The CLI invokes either the single agent or the workflow. Both use the catalogue, retrieval, and guardrails. The evaluation project observes the subject through AgentEval libraries, while independent criteria flow only into the evaluator. CLIoffline default Demo 01ChatClientAgent or baseline Demo 02five-executor MAF graph Recommendation subjectcatalogue · retrieval · signalsguardrails · presentation AgentEval 0.35 layerBenchmark · Atomic · MAFRedTeam · Memory · Metaindependent criterianullable measurements observations → authored requirementsexpectations · floors · bars
Authored requirements enter the evaluator, never the recommendation runtime: pass/fail authority remains outside the artifact being judged.
Offline

Committed concept space

The default path needs no API key, endpoint, network call, or model. The 24-dimensional vectors are authored assets, not hidden provider output.

Optional

Live model path

The agent and model-backed workflow remain available when explicitly configured. Diagnostics expose deployment names only—never keys or endpoint URLs.

Three states

Absence stays absent

Pass, fail, and NOT MEASURED are distinct. Missing observations render as an em dash and make the process exit 3, never as a flattering zero.

06 · Two architectures

The same retail problem, two control structures

I implemented the same retail problem twice. Demo01 lets one agent decide which tools to call. Demo02 makes the ordering explicit and gives a coverage reviewer exactly one route back to discovery.

Single-agent and workflow architectures Demo 1 has one ChatClientAgent registered with thirteen read-only tools before guardrails screen recommendations; two approval-gated commit tools exist only in a separate test and evaluation fixture. Demo 2 has five executors, with Discovery and CoverageReviewer forming a bounded agentic RAG retrieve-and-critique loop. DEMO 01 · FREE TOOL ORDER Customer request+ derived interests ChatClientAgentRobin · scripted or live 13 read-only tools+ 2 gated · test fixture Screened cardstyped evidence only callresult --offline bypasses this agent and runs the deterministic baseline DEMO 02 · FIXED MAF GRAPH Bounded Agentic RAG: Discovery retrieves and CoverageReviewer critiques BOUNDED AGENTIC RAG · RETRIEVE ↔ CRITIQUE InterestMapperhistory → map Discoveryretrieval only CoverageReviewerapprove or find gaps Rankerpost-check Presenterprice + stock ONE conditional loop-back · gaps remain + progress possible
The dashed enclosure names the bounded agentic RAG pattern: Discovery is the retrieval maker and CoverageReviewer is the critic. It is a render-only explanation—not a sixth executor or a claim that two chat agents converse. Five nodes and five edges are read from MAF's reflected graph during evaluation; the topology gate is not grading this drawing.
07 · Evaluation chain

Native 0.35 outcomes, bounded by evidence

I start with deterministic evidence, then spend model calls only where they answer a different question. Eleven domain-specific AtomicCodeEval checks enter through AgentEval's floor-admission door: five recommendation predicates in the benchmark plus six offline production checks—five mandatory evaluation gates and one matched-quality diagnostic. Local sign-test, forced-choice, null-model, generic-contract, and private-census wrappers were deleted in favor of the 0.35 abstractions.

Check or evidence stageAgentEval surfaceInputHonest scope
CatalogueAtomicCodeEvalReal subject collections99 products · 14 personas · 13 shipped read-only tools plus 2 approval-gated test/evaluation fixtures
TopologyMAFWorkflowAdapter + atomicReal workflow graph5 executors · 5 edges · 1 review loop-back
Matched quality · diagnosticIEvaluator → EvalInput → AtomicCodeEvalMatched Demo01/Demo02 criterion observations in separate benchmark armsReported as evaluator/benchmark evidence but excluded from process-exit authority; the judge receives input, output, and criteria directly, while native reference comparison owns ties/losses
InjectionRedTeamRunner → AtomicCodeEvalReal AgentEval attacks against deterministic guarded/vulnerable calibration arms, including ToolOutputSafe resists; poison-dependent vulnerable calls are behavioral; this is offline calibration, not a Robin result
RecallMemoryTestRunner → AtomicCodeEvalActual recommendation ChatClientAgent adapter with deterministic/ablated providersRaw recall measurements feed the admitted leaf; this is not durable or live-model memory proof
HonestyExactTests → AtomicCodeEvalFour informative pairs plus committed evidenceMinimum attainable two-sided p = 0.125; recomputation owns the verdict
BenchmarkBenchmarkDefinition → Arm → Runner → ScoreNadia + Sofia stimuli; Demo01, Demo02, and degraded system arms; five admitted checks; two separate repsSix standard runs below .agenteval/Vitrine; native census/floor facts plus Demo01-reference comparisons; score facts are not gate verdicts
ControlsDiagnostic shipped decision seams; no chance floors20 production-observation + 23 boundary/calibration fixturesTyped scope travels from manifest through results, CLI/reports, schema-v10 artifacts, inspector, app HTML, and UI. Every row requires healthy/defect-detected/recovery; the aggregate stays “Registered control mutations.”

Package boundary: VITRINE uses the published AgentEval 0.35.0-beta neutral meta and benchmark abstractions. It deliberately adds no competing pack.json, pack CLI, or parallel result store.

Evaluation graph: 14 evidence-bearing nodes show five mandatory evaluation gates plus the matched-quality diagnostic, five recommendation predicates, native persistence/score, a separate 43-control diagnostic node, and the suite terminal. Real benchmark-check completion events drive the predicate nodes without inventing a pass verdict.

Offline remains intact and default: Evals/Offline owns this deterministic suite and its diagnostics. Evals/Live adds six explicitly paid use-case and safety plans; choosing one never replaces or silently falls back to the offline suite. The App keeps its first-view choice to Offline, Eval 01 Agent, and Eval 02 Workflow; an explicit Advanced switch reveals Eval 03–06. OfflineDeterministic is the sole execution-profile value; the old live profile was removed, and its former CLI spelling is only a confirmed Eval 03 alias.

Paid planArchitectureRepetition/comparison evidence
Eval 01 · AgentFresh Robin agentOne run per selected case
Eval 02 · WorkflowFresh five-executor workflowOne run per selected case
Eval 03 · Agent vs workflowAdvanced paired diagnostic; no winner or terminal authorityConfigurable repetitions; paired-case RepCollapse.All; repetition counts, minimum attainable p, and native comparison facts. Absolute trial quality still owns terminal success.
Eval 04 · Stochastic agentRepeated Robin agentMinimum four repetitions; terminal acceptance requires every selected scenario's whole-trial 95% Wilson lower bound to be at least 0.50; per-check intervals remain diagnostic evidence
Eval 05 · Stochastic workflowRepeated discovery workflowMinimum four repetitions; the same per-arm/per-scenario whole-trial Wilson rule, with each acceptance decision persisted
Eval 06 · Safety probesFresh real Robin targetsFour AgentEval jailbreak/extraction probes by default; redacted census; 104-model-call mechanical ceiling; no scenario or repetition selector

Paid boundary: for Eval 01–05, the app shows the exact selected scenario/query, planned subject and maximum judge calls, and repetitions. Eval 06 shows its fixed safety campaign, planned probes, and 104-call ceiling before enabling Confirm paid execution. The CLI requires --confirm-paid. Readiness failure starts no model call and never selects an offline result.

Use-case quality and failure semantics: for Eval 01–05, the reported pass bar defaults to 1.00, so all four authored criteria must pass; a three-of-four score is a measured quality failure. The bar is not a chance floor. Bounded criterion explanations are retained. A provider terminal failure makes the affected subject/trial NotMeasured; cancellation keeps the session Cancelled (exit 130) while preserving that missing trial evidence. The workflow's model stages retain typed attempt, response, unusable, failure, cancellation, and recovery evidence. A failed/unusable attempt followed by a usable response is visibly Recovered and may remain measured; unrecovered, cancelled, or final-fallback stages fail the live quality observation closed as NotMeasured.

Four shared use cases: nadia-cross-category tests connected multi-interest evidence; sofia-capability-gap separates durable discovery from replenishment; marco-gift-trap suppresses gifted purchase signals; and luca-safe-abstention requires useful restraint when evidence is thin. Each has independent ground-truth facts, four evaluator-owned criteria, a tool-use or abstention expectation, and the exact subject scenario query shown before run.

Paid safety is a different question: Eval 06 runs AgentEval's released RedTeamRunner against fresh Robin targets with JailbreakAttack and canary-backed SystemPromptExtractionAttack. Raw prompts, responses, reasons, and the canary are not persisted. Any observed compromise fails quality, even when another probe is incomplete. With no compromise, a complete, error-free but undecidable campaign is not measured; missing, skipped, truncated, malformed, or errored coverage is an infrastructure error and fails closed. Errored is a subset of inconclusive, not an extra probe count. Each errored probe retains an allow-listed stage/code/detail explanation while raw provider detail stays suppressed. The 1.00 use-case bar is not its decision rule.

Local evidence: Eval 01–05 write one standard AgentEval directory per arm/repetition below .agenteval/live; Eval 06 writes no benchmark run. Every paid plan writes a sanitized session receipt at .agenteval/live/live-sessions/<session-id>/outcome.json, with a rolling live-sessions/index.json. Eval 01–03 retain their every-trial acceptance policy and no scenario-decision rows; Eval 04/05 additionally retain per-scenario whole-trial Wilson decisions. All five retain the threshold, bounded criteria and degradation evidence, per-check Wilson facts, and native comparison context; Eval 06 retains only redacted safety configuration, census/probe metadata, workload ceiling, and usage.

08 · Negative controls

A green check must detect a planted defect

VITRINE retains the 43 registered mutation-control names and intents as a typed registered panel. A production-observation row captures shipped state and reuses the shipped decision seam. A boundary/calibration/containment fixture exercises an independently authored public contract. Both require healthy green, perturbed red, and restored green; the two classes are never aggregated as 43 production-causal controls.

Registered mutation-control protocol An independently authored healthy artifact is mutated. The same diagnostic predicate must detect the planted defect and pass after recovery. Otherwise the control is a wiring fault. Arrangehealthy typed artifact Plant defectone mutation Diagnosticindependent predicate Defect detectedexpected failure Recovery passesrequired CAUGHTonly if both hold

Gate self-examination rule: the artifact under test may supply observations, but never expected values, applicability, a floor, or its own pass/fail verdict.

09 · Claim boundary

What the evidence permits us to say

I want every claim to stop where the evidence stops. A missing or incomplete measurement is a result to investigate, not a zero to average away.

Shown historically

Stated-need satisfaction

A predecessor Galaxus-themed synthetic-sample run measured 0.889 versus a tag-join oracle's 1.000 at matched k. This is not a Digitec Galaxus production or business metric, and VITRINE's offline chain does not rerun the paid cohort. Inspect the bounded receipt →

Not shown

Next-purchase prediction

There are four informative pairs. Even winning all four yields a minimum attainable two-sided p-value of 0.125.

Baseline warning

Passing does not vindicate the architecture

A trivial tag join scores 1.000 on several questions with zero model calls. Model involvement is not evidence of model value.

10 · Control room

Watch the evidence form while the real system runs

I make execution, failure, absence, and saved proof visible in one control room. AgentEval.VitrineDemo.App adapts Gatekeeper's Avalonia control-room interaction model over VITRINE's existing subject and eval contracts. A labelled graph preview is available before a run. The default scripted-provider arm is credential-free but still drives the real ChatClientAgent and registered tools.

VITRINE control room showing the runtime-derived Demo01 tool graph, live event timeline, inspector, filters, export, and replay controls
Runtime-aligned

Directed, counted evidence

Demo01's graph and agent consume the same prepared observed tools. Demo02's topology comes from MAFWorkflowAdapter. Arrowed edges show traversal counts; nodes show execution counts; the flat BACK route and an executor-action shelf explain the loop without inventing tools.

Correlated

Requests, responses, and outcomes

Model/tool cards correlate by operation ID and expand to safe arguments/results or explicit absence copy. The exact screened customer response stays separate. Subject, check, and trial terminals close their starts; live session completion also closes persistence and session starts. Nothing stays ACTIVE after completion, even while optional presentation pacing drains.

Same verdicts

Evals, export, and replay

For the offline suite, the board separates five mandatory evaluation gates, one matched-quality diagnostic, the persisted three-arm/two-repetition benchmark, and 43 mutation diagnostics. Eval 01–03 show every-trial acceptance with no scenario-decision rows; Eval 04/05 add per-scenario whole-trial Wilson decisions. All five show scenario trials, bounded response/trace evidence, per-check Wilson facts, comparisons, usage when reported, and local persistence. Eval 06 shows its redacted Robin safety census, safe session-level cause, per-probe allow-listed diagnostics, and 104-call ceiling. Schema-v10 JSON/HTML and replay preserve the same facts and execute nothing; integrity-valid schema-v7/v8/v9 artifacts remain readable.

Discoverable

Options and actions

Delayed hover help explains modes, personalization, JSON, HTML, replay, and disabled prerequisites. On/right means personalization enabled; actions become available only when their prerequisites exist.

Trust boundary: execution publishes immediately; optional audience pacing delays only presentation. Keys and endpoint URLs are excluded before event storage, serialization, and integrity hashing. Missing is rendered as an em dash and NOT MEASURED, never zero.

Workspace: the completed Gatekeeper-style run selector is full-width and collapsible. Mode, persona, execution arm, and export actions stay together; the panel collapses while running so the graph and event timeline dominate the view.

Evaluation modes: OfflineSuite is the no-provider default plan; its provenance is the offline-only OfflineDeterministic profile. Eval 01–06 are named, paid, confirmation- and configuration-gated plans that never substitute the offline suite. The catalogue integrity self-test expects exit 1 because detecting the planted missing SKU is its success condition.

Follow the task-oriented operator walkthrough → · Read the implemented control-room architecture →

11 · Ten-minute path

Run the evidence, then make it fail

Avalonia control room · offline default
.\start.ps1 -Mode App

Demo 01 · deterministic baseline
.\start.ps1 -Mode Demo01

Demo 02 · five-node MAF graph with visible route events
.\start.ps1 -Mode Demo02 -NoRestore

Standalone selector 1 · selectors 1–6 remain offline by default
dotnet run --project src/AgentEval.VitrineDemo -- 1

Reproduce the checked-in Demo01 agent receipt · local deterministic ChatClient
dotnet run --project src/AgentEval.VitrineDemo -- 1 --scripted --report docs/reports/demo01-scripted.html

Provider-backed subject · both flags are required
dotnet run --project src/AgentEval.VitrineDemo -- 1 --live --confirm-paid

Full offline AgentEval chain
.\start.ps1 -Mode Evals -NoRestore

All 11 admitted checks; every healthy fixture green and ablation red
dotnet run --project src/AgentEval.VitrineDemo.Evals -c Release -- --self-test

Explicit paid agent use-case eval (requires secure configuration and confirmation)
dotnet run --project src/AgentEval.VitrineDemo.Evals -- --eval-plan eval01-agent --scenario nadia-cross-category --confirm-paid

Repeated paid workflow reliability eval
dotnet run --project src/AgentEval.VitrineDemo.Evals -- --eval-plan eval05-stochastic-workflow --scenario all --repetitions 5 --confirm-paid

Fixed paid Robin safety campaign; no scenario or repetition option
dotnet run --project src/AgentEval.VitrineDemo.Evals -- --eval-plan eval06-safety-probes --confirm-paid

Catalogue integrity self-test; expected defect detection exits 1
.\start.ps1 -Mode Ablation -NoRestore

Advanced diagnostic shortcut: .\start.ps1 -Mode Controls -NoRestore reruns only the 43 registered control mutations already included in the full offline AgentEval chain above. The operator walkthrough documents this focused lane.

Standalone cost guard: credentials alone never select a live subject. Demo01's --scripted arm drives the real agent and tools with a local deterministic chat client; --offline, --scripted, and --live are mutually exclusive. Provider-backed subjects require --live --confirm-paid. --real-vectors and --rebuild-embeddings can call an embedding provider and therefore also require --confirm-paid.

Before the first provider call, follow the Microsoft Foundry live-run setup for the current explicit API-key/local-Entra/managed-identity contract, separate subject/judge deployment names, safe PowerShell variables, a one-case CLI/UI smoke, and sanitized evidence handling.

Committed offline examples: Demo01 HTML · evaluation HTML · evaluation JSON. Generated examples carry their own run identity and are not the normative evaluation contract. Standard AgentEval output is also persisted below the gitignored .agenteval/Vitrine, with six directories per benchmark execution.

One current paid integration observation: sanitized Sofia Eval02 HTML · JSON. The single measured trial is bound to implementation commit 028ac51; it proves one successful end-to-end workflow and judge observation, not reliability or production quality.