How it works

Ezra is the conversation. Trcker is the engine.

Two products, one stack. Ezra handles user experience, conversational matching, and the Slack + email surface. Trcker handles every click, conversion, attribution decision, and payout. Together they collapse a 6-week onboarding into a 24-hour Slack thread.

The architecture.

Channels are interchangeable. Trcker is the source of truth for transactional data. Composio handles user-connected commodity APIs (Shopify, Stripe, Meta, Gmail).

                       ┌──────────────────────────────────────┐
                       │              Ezra core               │
                       │   Claude Agent SDK + Voice + Memory  │
                       └──────────────────┬───────────────────┘
                                          │
              ┌──────────────┬────────────┼────────────────────┐
              │              │            │                    │
        Composio MCP    Trcker MCP    Local tools         Channel adapter
        (per user)      (per brand)   (memory,            (Slack Events API
                                       reminders)          + Composio mailto)
              │              │            │                    │
        Gmail / Cal     get_partner_                       Slack /
        Slack / Notion  stats / create                     Email
        Shopify / Meta  _offer / etc.
        Stripe /        (12 tools)
        HubSpot
        (1015 toolkits)

Two products, two responsibilities.

Each owns a different layer. Ezra never tries to be a database; Trcker never tries to be a chat agent.

Conversation layer

Ezra

The AI partner you text. Built on Claude Agent SDK. Hosts the voice, the matching intelligence, the conversational onboarding flow, and the multi-channel adapter.

  • Claude Agent SDK runner with 8-hop tool-use cap
  • Three-layer memory (profile + episodic via pgvector + learned patterns)
  • Composio MCP Tool Router (per-user dynamic toolset)
  • Trcker MCP client (per-brand)
  • Channel adapters for Slack (Events API + Block Kit + slash commands) and Email (Gmail or Outlook via Composio — routed server-side)
  • Custom artifact generation: PDFs, CSVs, Excel exports, charts, hosted dashboard views (`trcker.io/[brand]/views/[slug]`)
  • LLM provider router with rate-limit fallback (Anthropic direct → AWS Bedrock → Vertex AI → OpenAI catastrophic fallback)
  • Conversational onboarding state machine
  • Privacy commands (delete me, what do you know, pause business)

Stack: Python 3.12, FastAPI, Anthropic SDK, Postgres+pgvector, Composio, LoopMessage relay, Twilio, Stripe.

Infrastructure layer

Trcker

The affiliate tracking platform underneath. Owns every click, conversion, attribution decision, fraud signal, and payout. Brand-grade reporting available at trcker.io for users who want the dashboard.

  • Click capture + redirect with sub-ID passthrough
  • Inbound postback endpoint with HMAC validation
  • 9 server-side CAPI integrations (Meta, Google, TikTok, Reddit, Pinterest, LinkedIn, Snap, Microsoft, X)
  • Fraud detection (Trcker Radar): velocity, fingerprint, geo, free-email gate
  • Multi-touch attribution (last-click, linear, position-based, time-decay)
  • Incrementality holdouts with Wald 95% CI
  • Stripe Connect direct payouts on the brand's chosen schedule
  • WorkOS audit logs for every write op
  • 12 MCP tools exposed to Ezra (5 read + 5 write + 2 attribution)

Stack: Next.js 16, Vercel, Neon Postgres, Drizzle ORM, WorkOS AuthKit, Upstash Redis + QStash, Sentry.

A conversion, end to end.

What actually happens when a creator's Ezra-generated link gets clicked and converts on a brand's site.

1

Click on creator's tracked link

Fan taps trk.io/x9k2q4 in the creator's TikTok. Trcker logs the click, generates a click_id, captures fingerprint signals, fires-and-forgets fraud scoring, then redirects to the brand's site with click_id appended.

2

Conversion on brand's site

Fan completes purchase. Path varies by platform: Shopify webhook fires to Trcker → matched by referrer URL or order note. Stripe webhook fires for SaaS → matched by Checkout metadata. Custom site fires POST /api/postback/[brand]/[offer]?click_id=... to Trcker.

3

Attribution + fraud check

Trcker resolves the click_id → matches to the original click → calculates payout based on offer config → runs final fraud check via Trcker Radar → creates conversion record. Approved or flagged for review.

4

CAPI fan-out (server-side)

If brand has CAPI configured, Trcker fires server-side conversion events to Meta, Google, TikTok, Reddit, etc. Brand's ad attribution gets dramatically better signal.

5

Brand notification (Ezra)

If conversion is high-value or first-of-day, Ezra surfaces it via the brand's preferred channel: "Just attributed: $84 conversion to @mike_lifts. EPC trending up 40% this week."

6

Brand-funded payout

On the cadence the brand committed to at launch (weekly / bi-weekly / monthly), Stripe Connect transfers earned commissions from the brand's account to the creator's. Trcker calculates and queues the disbursement; Stripe handles the funds movement. Ezra texts the creator: "$312 just hit your Stripe from Bedrock."

Channels Ezra speaks.

One brain, many surfaces. Each user picks the channel they actually use.

Channel
What it's for
Status
Slack
Live ops surface. Slash commands, Block Kit interactive views, file uploads (PDFs, CSVs, charts), scheduled canvases, custom hosted dashboard generation. Workspace-wide with role-based permissions. Signed-secret + 5-min replay window.
Live at launch
Email
Async surface. One tab in the UI; Composio routes Gmail vs Outlook server-side based on which provider the user connects. Threaded replies, attached PDFs (contracts, reports), Outlook-out-of-office detection so Ezra doesn't reply-loop with autoresponders.
Live at launch
iMessage / SMS / WhatsApp / Telegram
Intentionally not in scope. Every additional channel is another inbound-webhook signing scheme, another auth-token refresh dance, and another rate-limit profile to monitor. Slack + email cover the brand-operator persona without the long-tail reliability cost.
Not planned

Privacy is layered, not bolted on.

Personal mode and business mode have separate commitments. The personal-mode floor applies to everyone — business mode is additive only.

Personal mode (default)

Ezra reads only what you ask. No background polling. No scraping. Email and calendar accessed only when you make a specific request. Delete in one message.

Business mode (opt-in)

Ezra polls your conversion data and brand-deal inbox to do its job. Each activity is opt-in. Pause monitoring any time with one text. Full audit log on demand.

Data ownership

Conversion data lives in Trcker (your account). You own it, can export it any time, delete it in 24 hours. Ezra doesn't keep a parallel copy.

No AI training

Anthropic API calls explicitly use no-training mode. Voice models for caption drafting are user-scoped — your patterns never inform anyone else's account.

vs. the alternatives.

Capability
ShopMy / LTK
Mavely
Ezra + Trcker
Surface
Web dashboard
Mobile app
Text conversation
Owns tracking infra
Built on Impact
Built on Impact
Trcker (own stack)
Brand-side install
Manual
Limited
OAuth + auto
9 CAPI integrations
No
No
Yes
Payout transparency
Opaque net-X
Limited visibility
Per-conversion ETA, brand-committed schedule
Conversational interface
Web dashboard only
App only
Slack + Email + dashboard
Vertical fit
Fashion/lifestyle
Amazon-skewed
Cross-vertical (esp. finance, fitness, tech)

Want to go deeper?

The full stack, every endpoint, every privacy guarantee — all documented.

Back to home →