Claudio Bustamante

Claudio Bustamante

AI Engineer · LLM & Multi-Agent Systems

10 years in software development, the last 3 building LLM systems. In my systems the flow is fixed in code and every model output is validated before it is used: the model proposes, the code decides. Based in Seville, Spain.

Selected work

Change Manager

A multi-agent assistant that files change requests for a major Spanish bank

Logicalis Spain · AI Engineer, core developer · Apr 2026 – present

Problem. Infrastructure engineers at a major Spanish bank write change requests for the bank’s production ITSM platform. Requests that break the bank’s rules are rejected, and an assistant in a bank cannot invent data or take an unpredictable path.

What I did. I am the core developer of a multi-agent LLM assistant that helps these engineers write their change requests. I built it from an empty skeleton, and it now creates changes in the bank’s production ITSM platform.

Key decisions.

  • The model reasons; the code controls the flow. Agents run in a fixed sequence defined in code, with no LLM planner.
  • Model output passes strict Pydantic schemas and a single write point; anything invalid is discarded.
  • The bank’s change-rejection rules became tested checks, so users see what would be rejected while they are still filling in the form.
  • An LLM judge reviews text quality, with a filter that drops any suggestion containing invented data.
  • Long first messages go to a larger model that extracts every field at once; a regex-based detector decides when.

Result. Changes created in production, and 900+ tests that run without network, LLM or databases, in a component that started with none. I also ran demos for operations and management and wrote the handover docs a colleague used to run the component while I was away.

Python · Pydantic v2 · multi-agent LLM systems · LLM-as-judge · offline test suites

APEC Watch

From a fish-health guidebook to an on-device diagnostic app

APEC project · Lead Developer (consultant) · Oct 2025 – Mar 2026

Problem. An APEC aquaculture project needed a mobile tool to help diagnose eight diseases of tilapia and trout. The knowledge lived in an 82-page guidebook. Hand-coding the rules would be slow, and an LLM answering in the field could not be audited.

What I did. I built a Unity editor pipeline in which the LLM only proposes rule candidates from the PDF. Ten deterministic stages then validate, auto-fix, canonicalize, deduplicate, gate, selectively retry (best-of-N), dry-run and apply them. The Android app runs the resulting rules in a diagnostic engine on the device, with no LLM at runtime. AR is used separately, for standardized photo guides and training.

Key decisions.

  • The LLM proposes; the pipeline decides.
  • Content that can’t be extracted exactly is discarded and logged, never approximated. Auto-fix applies only when the exact value is in the source text.
  • A semantic rule key catches duplicates; a quality gate blocks the run on parser errors, missing packs or too much auto-filling.
  • Every rule keeps its source page.

Result. 101 typed rules in 10 packs, each traceable to a page of the guidebook. The gates blocked 8 of 22 batch runs. The deduplication stage removed 21 duplicates before parsing and cut parser warnings from 261 to 180. Fidelity was checked with an LLM-assisted, rule-by-rule audit against the guidebook and 18 golden cases; there are no precision/recall metrics yet.

APEC Watch home screen with New Case, Saved Cases, Overlay Camera and Fish AR.Behaviour step, where the user reports swimming patterns with pictograms.Diagnostic screen summarizing the case, the matched rule and a recommendation.
An LLM proposes rule candidates from the guidebook; ten deterministic stages validate, fix, deduplicate, gate, retry and apply them; 101 typed rules then run on the phone in a diagnostic engine with no LLM.
Click to open full size.

Unity 6 · C# · AR Foundation · OpenAI Files + Responses API · own LLM client package

Eón

LLM-driven NPCs that remember the player without breaking the story

BCS Studios · AI Systems Architect · Sep 2023 – May 2026

Problem. Game NPCs usually choose between hand-written dialogue, which runs out, and a live LLM, which forgets, contradicts the story and is hard to debug. I wanted NPCs that react to what this player did without breaking canon.

What I did. I designed and built Eón, a Unity package where each agent has one narrow job. Offline, a seed baker prepares narrative anchors. At runtime, one agent generates branching conversation trees from the player’s history; another writes single replies in free dialogue. Buffer Souls keeps what each NPC believes. All of it runs on a shared, provider-agnostic LLM package.

Key decisions.

  • Canon, the objective record and what an NPC believes are separate layers. The prompt stacks them in order of authority, and a belief never overwrites canon.
  • NPC state changes through one write path only: validated events, pure bounded deltas, and a read-only projection for prompts.
  • Generated trees are parsed and checked against structural rules. A failure is a typed result that names its stage; nothing throws.
  • Versioned prompts, a workbench with per-attempt traces and cost, and 100+ tests.

Result. Eón started as research funded by ANID, Chile’s national research agency, and was first tested in a small RPG where it generated a story the player completes by visiting regions and talking to NPCs in order. It now drives the narrative of Alshaat, a tactics game in development at BCS Studios: it weighs each player’s actions and changes how every NPC talks to that player.

Offline, a seed baker prepares narrative anchors. At runtime, one path generates branching conversation trees that are parsed and validated, and another writes single NPC replies from a prompt layered by authority. Buffer Souls stores what each NPC believes through a single validated write path and feeds a read-only snapshot back into dialogue. Everything runs on a shared provider-agnostic LLM package.
Click to open full size.

Unity · C# · async multi-provider LLM client (OpenAI, Anthropic) · Newtonsoft JSON · NUnit

Beyond AI

Contact

Write to cebustama@gmail.com or find me on LinkedIn.