Technical Advisor
Agentic Architecture Advisory
Advised an AI startup on agentic system architecture — orchestration, memory and retrieval boundaries, framework selection, and safe-action design.
An AI startup engaged me as a technical advisor while designing its agentic product architecture. The team had strong ML instincts but wanted an outside perspective on system design before committing to an orchestration stack and tenancy model. My role was advisory: evaluating options, shaping the reference architecture, and stress-testing design decisions — not implementing or operating their agents in production.
The workshop series
I ran a structured architecture workshop series with the founding team. Each session had a defined scope and written output: first objectives and constraints (latency budgets, compliance posture, team size, runway), then orchestration patterns, then memory and RAG boundaries (what lives in context, what lives in retrieval, what lives in durable state), then observability (tracing agent runs end-to-end, evaluating tool-call quality), and finally LLM strategy — provider mix, fallback behavior, and cost envelopes. The written outputs became the client’s decision record.
Framework evaluation
We evaluated roughly seven agent and orchestration frameworks against the client’s stated constraints: Pydantic AI, OpenAI Agents SDK, Agno, Hatchet, DBOS Transact, LangGraph, and AWS Step Functions. The comparison used explicit criteria agreed in the first workshop — type safety, provider flexibility, durability of long-running work, multi-tenancy fit, operational weight, and the size of the team that would own the choice. Every candidate had real strengths; the evaluation’s job was to make the trade-offs visible rather than to crown a universal winner. To ground the recommendation, I also ran a supporting competitive scan of around fifty adjacent tools so the shortlist wasn’t an accident of familiarity.
The agent loop mental model
The deliverable the team reused most was a reference mental model for the agent loop: message routing → intent classification → tool dispatch → response generation → state management. Naming the stages explicitly gave the team a shared vocabulary for where retries belong, where context is assembled, where cost is spent, and where a human can intervene — and it mapped cleanly onto whichever framework they ultimately chose.
Safety and tenancy
On the design side, I helped draw multi-tenancy boundaries (isolation of per-tenant state, retrieval scoping, and rate/cost attribution), human-approval gates for consequential actions, and safe-action patterns — least-privilege tool scopes, idempotent side effects, and reversible operations by default. The goal was an architecture where autonomy is granted deliberately per action class, not globally.