Adaptive Experimentation Agent

Dell · Analyst Workbench · v0.1

BUILD: wb-2026-06-02-v11
API: OFF
BENCH: PEND

How it Works

Plain-language overview first — expand Technical reference for APIs, agents, and LangSmith details.

GUIDE + TECH REF · ARCH_SPEC_v6_2026-05-26

How this system works

Think of it as an experiment analyst assistant: it reads your test data, checks quality, estimates what worked, and suggests what to run next. Dell analysts stay in control — nothing launches without your approval.

1

Load your experiment data

The system pulls past test results, variants (arms), and metrics for the experiment you selected — like opening a folder of A/B test history.

2

Quality check

An automatic checklist asks: Is the data complete? Do arms match traffic? Are sample sizes big enough? You get GO, CAUTION, or STOP.

3

What worked?

A causal step estimates lift and uncertainty — which variant seemed to help, and how confident we are (mostly math, not guesswork).

4

What to try next

Candidates are scored and ranked. The top row is the suggested next test. You still approve before anything would launch in production.

Quick glossary

Experiment ID
Name of one test in the registry (e.g. exp_sanity_001_calibrated).
Validation
Safety check on data quality before trusting numbers.
Caution
Proceed with care — warnings exist but analysis still ran.
Recommendation
Ranked suggestion for the next variant to try.
Approve / Proceed anyway
Your sign-off in the app; stored in this browser for the demo.

Simple picture of the flow

You pick experimentData loadedQuality checkImpact estimateRanked suggestionYou approve

Probing live API…

HTTP Surface

VITE_API_URL · no standalone /recommend or /analyze

GET/service id · mode mvp-starter (v0.1.0)
GET/healthliveness
POST/validate/{experiment_id}retrieval + validation only
POST/orchestrate/{experiment_id}full pipeline · returns run_record_id (SQLite demo history)
GET/experimentsbenchmark catalog (parquet)
GET/runsregistry for experiment picker
GET/runs/{run_id}snapshot when bundle exists

POST /orchestrate Pipeline

AdaptiveExperimentationOrchestrator.run · schema v1.0

FLOW_TRACED
Retrieval
retrieval_skill
LIVE
Validation
validation_skill
LIVE
Causal Eval
causal_evaluation_skill
LIVE
Generation
experiment_generation_skill
OPTIONAL
Recommendation
recommendation_agent_v1
LIVE

Ranking inputs: one candidate per metrics row from retrieval before optional generation merge. Validation stop → HTTP 500, pipeline halted.

ValidationAgent Graph

structuralmetricsbenchmarkworld_specdecidellm_diagnostics

LangSmith span names

retrieval_skill

First step of /orchestrate

validation_skill

ValidationAgent graph

causal_evaluation_skill

Programmatic or ReAct loop

experiment_generation_skill

Stub or LLM when enabled

recommendation_agent_v1

RecommendationSkill rank step (name is legacy)

coordinator_run

Only when using CoordinatorAgent / CLI — not FastAPI by default

coordinator_minimal_demo

Smoke path only (skips causal)

Agents

AdaptiveExperimentationOrchestrator

Canonical v1 owner (POST /orchestrate): retrieval → validation → causal → optional generation → recommendation. Halts on validation stop.

ValidationAgent

LangGraph validation graph (Skill 2). Benchmark + world_spec checks; optional Azure capstone-mini diagnostics.

CausalEvaluationAgent

Programmatic causal by default; LangGraph create_react_agent when ENABLE_CAUSAL_AGENT_LOOP=true.

GenerationAgent

Structured experiment proposals when ENABLE_GENERATION_AGENT=true (Azure capstone-standard).

CoordinatorAgent

LangSmith umbrella (coordinator_run). Delegates to orchestrator; minimal_demo skips causal for smokes only.

Skills Catalog

Retrieval
retrieval_skill
LIVE

Loads benchmark parquets (BENCHMARK_DATA_DIR) via load_benchmark_context; falls back to a minimal stub if the bundle is missing for an experiment id.

Input
objective, experiment_id
Output
{ experiment, arms, memory, metrics, source }
Validation
validation_skill → ValidationAgent
LIVE

LangGraph gate: structural → metrics → benchmark → world_spec → decide → llm_diagnostics. go / caution / stop is code-only; optional Azure narrative when ENABLE_VALIDATION_LLM.

Input
Retrieval context bundle
Output
validation_report (decision, issues, warnings, diagnostics_summary)
Causal Evaluation
causal_evaluation_skill → CausalEvaluationAgent
LIVE

Default: programmatic causal estimates + schema validation. Optional LangGraph ReAct (ENABLE_CAUSAL_AGENT_LOOP) with Azure stat deployment (capstone-code).

Input
Retrieval context bundle
Output
evaluation { lift, uncertainty, ranked_directions, source }
Experiment Generation
experiment_generation_skill → GenerationAgent
OPTIONAL

When ENABLE_GENERATION_AGENT=true: LLM proposals (Azure generation deployment). Otherwise stub candidates; orchestrator also builds ranking inputs from metrics rows.

Input
context + evaluation
Output
candidates[] (merged into rank step)
Recommendation
recommendation_agent_v1
LIVE

RecommendationSkill: deterministic score + rank (heuristic). LangSmith span name is legacy; not a separate LangGraph agent in the API repo.

Input
candidates[] + evaluation
Output
top_recommendation, ranked_candidates

Environment (Lovable + Railway)

VITE_API_URL

Railway FastAPI base URL (no trailing slash)

BENCHMARK_DATA_DIR

Parquet bundle on API host

RUN_HISTORY_DB

SQLite path for /orchestrate demo history

AZURE_OPENAI_ENDPOINT

Foundry / Azure OpenAI resource

AZURE_OPENAI_API_KEY

Chat completions key

ENABLE_VALIDATION_LLM

Azure narrative in llm_diagnostics

ENABLE_CAUSAL_AGENT_LOOP

LangGraph ReAct causal path

ENABLE_GENERATION_AGENT

GenerationAgent vs stub candidates

VALIDATION_LLM_MODEL / GENERATION_LLM_MODEL / STAT_LLM_MODEL

Deployment names (e.g. capstone-mini)

DATA: benchmark parquets under BENCHMARK_DATA_DIR · RUN_HISTORY_DB SQLite is ephemeral on Railway without a persistent volume.

LLM: capstone-mini (validation) · capstone-standard (generation) · capstone-code (causal ReAct) — deployment names in Azure Foundry.

Causal Agent Tools

run_programmatic_baseline

Always-call deterministic baseline for the causal agent. Required first step of the ReAct loop.

list_analysis_reference

Optional progressive-disclosure panels surfacing relevant analysis references.

execute_analysis_code

Optional sandbox for analysis code (when CAUSAL_REQUIRE_SANDBOX or agent loop).

submit_evaluation

Required final tool. Emits JSON validated against the EvaluationArtifact schema.

loop order: run_programmatic_baseline → optional disclosure/sandbox → submit_evaluation