Selected work
Built, measured, shipped.
Product work, client deliveries — anonymized where required — and public
internal R&D, all held to the same engineering standard: measured,
reproducible, shipped. Explore the production AI and custom
software services behind this work.
Context
A three-location specialty retailer needed one brand system that could support store discovery and meaningful local category pages.
Scope
Twenty-four public URLs: six brand and utility pages, three location pages, and fifteen location-category pages.
Current equivalent
The same page count fits Teqri's public $50/month Growth plan; $129/month Scale is the upper comparison when deeper customization or priority changes are needed.
Measured outcome
All 24 sitemap URLs returned 200 and carried unique titles, unique descriptions, matching canonicals, an H1, and JSON-LD in a September 1 audit.
Read the full scope, schedule, budget, and audit →
Context
Most assistants answer; we wanted an agent that acts. One interface that
can research a topic, browse the web on your behalf, plan a real-world
outing, and hand back structured results.
Constraint
Long-horizon tasks fall apart without structured planning — and users
only trust an agent they can watch. The system had to stream its plan,
steps, and reasoning live, not just its final answer.
System we built
A production agent platform built directly on our published GATS
research: a three-layer planner (symbolic domains → learned statistics →
frontier LLM) drives a tiered tool registry — web search and reading,
structured report synthesis, an autonomous browser agent that streams
live frames into the UI, voice conversation, and MCP integrations — over
a server-sent-events pipeline, with a React front end that renders the
agent's working "mind" in real time.
Outcome
The planning framework from the paper doing the planning in a live
product: deterministic tool routing, auditable step timelines, and
research-grade capabilities in front of real users.
Stack
- GATS planner
- FastAPI + SSE
- React 19
- Claude
- headless-browser agent
- MCP
- Firestore
The research behind it →
Context
Game artists juggle a chain of disconnected tools to produce game-ready
materials. Teams shipping across Unity, Unreal, Godot, and the web needed
one pipeline from idea to engine-ready material set.
Constraint
Outputs had to be seamlessly tileable, physically based, and reproducible
— with every channel inspectable before export — running entirely in the
browser.
System we built
A browser-based studio with a guided, linear workflow: text prompt or
reference image in → seamless tileable texture generation → refinement
tools → a full PBR map stack (albedo, normal, roughness, metallic,
ambient occlusion, height, emission) with per-channel preview → packaged
export for the major engines and formats.
Outcome
One connected pipeline replacing several standalone tools, with
deterministic generation so a team can reproduce any material from its
inputs — from solo modders to studio art teams.
Stack
- browser-first
- generative image models
- PBR map derivation
- PNG / WebP / glTF export
Context
Make markets a spectator sport: a risk-free tournament where players
trade virtual assets for their country's standing and watch the
leaderboard move in real time.
Constraint
Real-time everything — live prices across forex, crypto, and
commodities; rankings and broadcast alerts that update as trades land —
with zero real money, so trust rides on the simulation being fair and
consistent.
System we built
A dashboard-style web app on a modern React/Next.js stack: an embedded
trading terminal over live multi-asset market feeds, WebSocket-driven
leaderboards for players and countries, a broadcast layer with
major-trade alerts, and a tournament engine with group stages and
countdowns.
Outcome
A running competition platform that balances spectacle with functional
trading mechanics — entertainment-grade presentation over exchange-grade
data plumbing.
Stack
- Next.js
- WebSockets
- live market feeds
- ranking engine
- simulated execution
Context
LLM agents fail on long tasks because they re-derive the world from scratch
at every step. Planning needs memory and structure, not just bigger prompts.
Constraint
Deterministic, auditable behavior — the property enterprise deployments
actually require and most agent stacks can't offer.
System we built
A planning framework combining graph memory, layered world models, and tree
search for efficient long-horizon reasoning — published on arXiv as GATS.
Outcome
A published, citable framework and the architectural playbook we use when a
client's agent has to be right, not just plausible.
Stack
- Python
- graph memory
- world models
- tree search
Read the research →