Home / Client Stories / Goal Navigator / Hybrid AI Architecture
Solution Story · AI Architecture

Two AIs, one product

Goal Navigator runs two AI systems on purpose: MATE agents own every conversation; a direct Claude pipeline owns structured planning. Not a compromise — a strategy. Because the most common thing a real product already has is an existing AI investment, and the worst pitch in the world is "first, throw yours away."

The design question

Conversation and computation are different jobs

"Add AI to the product" hides two very different problems. A coach chat needs personality, memory, streaming, session handling, cost visibility — platform concerns, solved once, reused everywhere. Route generation needs none of that: it needs strict JSON against a schema, validation before saving, and surgical updates that never overwrite a user's data wholesale. Forcing one system to do both jobs badly is how AI features end up mediocre at everything.

Lane 1 · Conversation — MATE agents

Where personality and sessions live

  • welcome_agent greets visitors, qualifies, hands off to signup
  • coach_agent answers "what's my mission?" with real progress data
  • mission_agent & goal_agent support the daily loop
  • Widget keys per agent · sessions scoped per user · streaming SSE
  • Token costs tracked per agent on the MATE dashboard
Why a platform: personas, keys, audit, and cost ops shouldn't be rebuilt inside every product that wants a chat.
Lane 2 · Structured planning — Claude direct

Where correctness and data safety live

  • Goal → route map: 3–6 milestones, weekly focus, daily missions
  • Output validated against a JSON schema before anything saves
  • Patches, never blind overwrites — small changes return structured diffs
  • Refinement uses Navigator Notes — reflection becomes planning input
  • Every operation logs tokens, model, and estimated cost
Why direct: planning is a data pipeline, not a dialogue. It needs contracts, not charisma.
Where the lanes meet

The context bridge — trust built server-side

The coach agent feels like it knows you because the product tells it — on the server, where the browser can't interfere.

Browser chat "I'm stuck on today's mission" cookie auth Product server (authorized) loads the user's real goals from the DB builds a compact context block: progress · streak · today's mission prepends it server-side — tamper-proof MATE coach agent answers grounded in facts, streams back through the proxy A coach, not a chatbot
The user types five words; the agent receives the truth. The browser never sees — and can never fake — the context block.

Graceful degradation, by config

If the coach's widget key isn't configured yet, the chat falls back to the welcome agent — integration wired and testable before every piece exists. Ship the seam first.

One key, one agent, one blast radius

MATE binds each widget key to exactly one agent, and sessions are scoped per key and user — the same isolation discipline as the MCP tools.

Costs visible on both lanes

MATE's dashboard tracks conversational tokens per agent; the planning pipeline logs cost per operation. When finance asks what AI costs, the answer is a query, not a shrug.

Why it matters

This is the pitch, proven on ourselves

2
AI lanes, each doing what it's best at
4
MATE agents live in the product
0
existing AI code thrown away for the platform
100%
of AI spend attributable per operation
Your product probably already has some AI. The right platform doesn't replace it — it takes the conversations, leaves the pipelines, and makes both cheaper to run.
Hybrid isn't a compromise; it's the architecture