All projects

2026 / Enterprise AI / Platform

MOVE

A governed enterprise AI copilot that turns natural-language questions into scoped, traceable answers across approved CRM and document sources.

The MOVE interface rendering a synthetic portfolio analysis with structured metrics, a table, and a chart.
The production interface rendering a fictional, anonymized payload through the real ResponsesAgent adapter.
Role
Lead developer, Software and AI Engineering Intern
Stack
Python / MLflow ResponsesAgent / LangGraph / Databricks / SQLGlot / FastAPI / React / TypeScript / Lakebase
79.2%
direct SQL latency reduction
dated audit, failure to correct result
14 → 3
tool calls
same request, corrected grain
1,200+
named tests
agent and interface source snapshot

Why MOVE exists

Enterprise questions are rarely just language tasks. They carry customer scope, business definitions, permission boundaries, freshness requirements, and presentation needs. MOVE was built so a useful answer must also be scoped, inspectable, and grounded in approved evidence.

Relationship managers can ask about a portfolio, a specific customer, or an approved document in natural language. The system returns structured answers, tables, metrics, charts, citations, and a trace of the work used to support them.

The operating boundary

  • Read-only access through registered tools and governed data services.
  • Request-scoped identity and portfolio filters applied before execution.
  • No general-knowledge completion when the required evidence is missing.
  • No write authority, outbound action, or hidden customer-row persistence.
  • Conversation state remains disabled in tracked targets until identity and Lakebase prerequisites are ready.

What I built

  • The MLflow ResponsesAgent and LangGraph orchestration path, including routing, context assembly, skill composition, tool selection, evidence checks, and final review.
  • A governed text-to-SQL path with scoped metadata retrieval, deterministic templates, bounded generation, SQLGlot validation, and execution telemetry.
  • A versioned Python response contract and the FastAPI adapter that converts it into resilient streaming UI events.
  • React renderers for answer blocks, metrics, tables, charts, citations, tool activity, feedback, and follow-up questions.
  • Databricks packaging, deployment configuration, MLflow tracing, evaluation harnesses, and broad backend and interface test coverage.

Measured iteration

A dated dynamic-SQL audit isolated model generation as the dominant bottleneck. The original representative request failed after four attempts and 122.9 seconds. A smaller grain-aware schema pack, clearer metric ownership, semantic invariants, and bounded retry reduced the path to one successful attempt and 25.6 seconds.

A faster model candidate completed sooner but returned the wrong rows and metric mappings. I kept the slower model because execution correctness, scope preservation, and business semantics mattered more than an attractive latency number.

Limits, stated plainly

  • The published timings are audit scenarios, not production service-level claims.
  • The interface screenshots use fictional, anonymized values passed through the real renderer.
  • Skill guidance can narrow behavior but cannot override the tool registry or execution policy.
  • Only successful normalized evidence can support an answer or a future state fact.

System architecture

A controlled path from question to evidence.

MOVE is one product across two runtimes. The interface owns authentication, streaming, persistence, and feedback. The agent runtime owns scope, orchestration, governed execution, evidence, and review.

Abstract editorial illustration of data paths passing through guarded orchestration gates toward verified outputs.
Editorial illustration of guarded data flow. This is not a product screenshot or a literal topology.

Agentic, with hard edges.

The model can decide how to solve a question inside a deliberately small envelope. Authority remains in code at every stage.

  1. 01

    Validate and bind

    Reject malformed requests, resolve trusted identity, and bind the user to an allowed portfolio scope.

  2. 02

    Classify the question

    Infer the business domain, requested entity, analytical grain, and evidence sources before any tool is offered.

  3. 03

    Resolve skills

    Load at most four focused instruction packs. Skills can narrow behavior but cannot expand execution authority.

  4. 04

    Select tools

    Expose at most six route-compatible capabilities from the governed registry instead of giving the model the entire surface.

  5. 05

    Assemble context

    Prioritize policy, identity, route, and current-user facts. Lower-authority context is dropped first when budgets tighten.

  6. 06

    Execute safely

    Enforce read-only policy, timeouts, request budgets, output limits, redaction, and stable tool failures at one boundary.

  7. 07

    Measure evidence

    Normalize successful results, citations, scope, and coverage. Failed calls never become supporting evidence.

  8. 08

    Review and stream

    Permit one scoped repair, then stream typed answer blocks and renderables through the versioned response contract.

Correctness won the model decision.

The SQL path combines scoped metadata retrieval, trusted templates, bounded generation, SQLGlot validation, bind parameters, and a maximum of two attempts. A July 2026 audit made each change measurable.

Business questionscope + requested grain
Metadata preflightgrain-aware schema pack
Template or generationat most two attempts
SQLGlot validationsyntax + semantic invariants
Typed evidencerows + lineage + renderables
Before122.9 s

Four attempts. No usable result.

After25.6 s

One attempt. Ten correct rows.

63,621 → 16,912
prompt characters
14 → 3
full-agent tool calls
79.2%
direct path reduction
Direct SQL path across one representative audit scenario
  1. Baseline122.9 s
    four attempts, failed
  2. Bounded retry79.1 s
    two attempts, failed
  3. Intent routing46.4 s
    one attempt, empty
  4. Schema pack46.5 s
    correct result
  5. Metric ownership33.4 s
    correct result
  6. Concise prompt25.6 s
    correct result
Faster candidate20.2 s

One row, wrong metric mappings

Rejected

A lower latency number was not a win. Semantic correctness, entity grain, and business meaning were explicit evaluation criteria.

Selected model25.6 s

Ten correct rows and mappings

Kept for correctness

All values above come from a dated development audit. They describe one controlled scenario, not a production latency guarantee.

Reasoning and presentation stay separate.

A versioned contract lets Python evolve independently from the TypeScript renderer. The interface receives meaning, not a blob of model-authored markup.

Python runtimeLangGraph result
Versioned boundarybmed.agent.contract.v1
  • answer blocks
  • renderables
  • citations
  • tool calls
  • safety + usage
FastAPI adapterStreaming events
React rendererParagraphs, metrics, tables, charts
MOVE rendering synthetic portfolio metrics beside a priority-segment chart.
The real renderer consuming a fictional typed response through the existing adapter.

Failure-tolerant by design

Each block has a stable type and each renderable is referenced by identifier. An unsupported chart does not invalidate the answer, and a partial stream can still preserve the evidence already received.

  • Structured answers remain accessible without a chart.
  • Tool traces use public summaries, not hidden reasoning.
  • Citations, metrics, and tables keep their source context.

Breadth, deliberately bounded.

29
registered capabilities
Inspected runtime snapshot
≤ 6
tools exposed per route
Selected from compatible capabilities
≤ 4
skills resolved
Focused guidance, never more authority
2
SQL generation attempts
A hard execution budget
1
scoped final repair
No open-ended self-correction loop
1,200+
named test definitions
Agent and interface source snapshot

What MOVE deliberately does not claim

It is read-only. It cannot send messages, update customer records, or use unsupported general knowledge to fill an evidence gap.

Agent memory is not presented as live. Its rollout depends on trusted identity, governed Lakebase access, integrity protection, and retention readiness.

Registered tools and the safe executor remain the authority. Prompts and skills cannot override their policy, budgets, or redaction.