Building a Facebook Messenger ↔ AI ↔ Metaverse Bridge with MyZubster and Zorgax
We recently completed and documented a production bridge connecting Facebook Messenger, Zorgax, and the wider MyZubster ecosystem.
What started as a simple “reply to Messenger messages with AI” task quickly turned into a more interesting systems problem involving webhooks, serverless execution, routing, conversational context, media delivery, grounding, and observability.
The production flow now looks like this:
Facebook User
↓
MyZubster Community Page
↓
Meta Messenger Webhook
↓
MyZubster API
↓
Validation / Normalization / Deduplication
↓
Zorgax or Deterministic Route
↓
Marketplace / Seller / Metaverse / LIFE Pilot / Comic Universe
↓
Meta Send API
↓
Messenger
One of the most important design decisions was to treat Messenger as a gateway, not as the source of truth.
Zorgax can explain, guide and maintain conversational context, but the application remains responsible for known facts, canonical URLs, commercial configuration, and deterministic behavior.
That distinction became necessary during real testing.
In one case, the AI generated unsupported assumptions about Seller pricing. In another, it incorrectly said the Comic Universe was not publicly available even though the application already knew the route and assets existed.
That led us to formalize an architecture rule:
When application state already knows the answer, application truth should take precedence over generative output.
We documented this as ADR-001: Application Truth Before Generative Output.
The bridge now supports text messages, quick replies, postbacks, attachment-only messages, is_echo protection, inbound-event deduplication, multilingual responses, short-term conversational context, deterministic Comic Universe routing, image delivery through the Meta Send API, and runtime observability.
The Metaverse is part of the same conversational routing model.
A user doesn't have to know the MyZubster navigation structure first. They can simply ask Zorgax something like:
Tell me about the Metaverse.
and the assistant can guide them toward the canonical MyZubster Metaverse experience.
Conceptually:
Messenger
↓
Zorgax
↓
Intent / Context
↓
MyZubster
├── Marketplace
├── Seller
├── Metaverse
├── LIFE Pilot
├── Community
└── Comic Universe
We also added deterministic media routing.
For example:
Show me the MyZubster comic
can trigger:
Comic intent
↓
Select public visual
↓
Meta image attachment
↓
Grounded response
↓
Comic Universe URL
This is useful because media delivery is handled by application logic while Zorgax handles the conversational layer around it.
We also explicitly separate FICTION / CONCEPT content from real-world evidence, so narrative visuals are not presented as proof of real events.
A few production lessons from the work:
200 OK from a webhook does not mean downstream AI work completed.
In serverless environments, asynchronous work must be kept alive explicitly.
Generative models should not invent commercial or product-state facts the application already knows.
Deterministic routing is often better than another LLM call for known resources.
Media delivery needs its own observability, not just “intent detected”.
Echo protection and deduplication matter quickly once a messaging bridge is live.
We documented the whole integration in two guides.
Architecture and design
docs/META_MESSENGER_ZORGAX_BRIDGE.md
Read the architecture guide on GitHub
Production operations and incident response
docs/META_MESSENGER_OPERATIONS_RUNBOOK.md
Read the operations runbook on GitHub
The full repository is open source:
MyZubster on GitHub
And the connected experiences are public:
MyZubster Metaverse
MyZubster Marketplace
MyZubster Comic Universe
The main takeaway for us was that building an AI messaging integration is not mainly about “calling an LLM”.
The harder and more interesting part is deciding:
what the model controls, what the application controls, what must be deterministic, what must be grounded, and how all of it behaves under real production constraints.
That is the direction we are continuing with MyZubster and Zorgax.