Skip to main content

Zyphr Muse — AI Authoring

Zyphr Muse is the AI assistant baked into the dashboard. It writes subject lines, drafts templates, rewrites blocks, generates whole workflows from a sentence, and analyzes broadcasts before you send — all grounded in your project's real data, not generic templates.

Muse is a paid-plan entitlement. Free accounts see the entry points with an upgrade prompt; only Starter+ plans can invoke.

What Muse can do

SurfaceWhat it doesModel tierWhere it lives
Subject suggestionsRanks 5 candidate subject lines for an email or push template by predicted open rateHaiku 4.5Template editor → "Suggest with Muse"
Draft templateGenerates a full template (subject + HTML + text, or push/SMS bodies) from a one-paragraph briefSonnet 4.6Templates → "Generate with AI"
Rewrite blockRewrites a selected block per a natural-language instruction ("make it shorter", "more formal")Sonnet 4.6Template editor → selection toolbar
Generate workflowTurns a sentence into a fully-structured workflow with triggers, delays, branches, and channel stepsOpus 4.7Workflows → "Generate with AI"
Analyze before sendingPre-send advisory citing deliverability risks, frequency conflicts, audience warnings, content notes, and a recommended actionOpus 4.7Template editor → "Analyze before sending"

Plan tiers and monthly quotas

Each paid plan grants per-action monthly quotas. Quotas reset on the first of each calendar month UTC.

ActionStarterProScaleEnterprise
Subject suggestions2001,0005,000Unlimited
Template drafts25150750Unlimited
Block rewrites503001,500Unlimited
Workflow generations525100Unlimited
Broadcast analyses430150Unlimited

Free plan is not eligible — Muse entry points show an upgrade prompt.

Once any per-action quota is exhausted, calls to that action return a muse_quota_exceeded error until the next month. Other actions continue to work — running out of workflow generations does NOT stop you from drafting templates. The dashboard's Usage tab shows real-time progress against every quota.

Enterprise quotas are unlimited, sized to a customer-specific monthly volume as part of your negotiated contract.

Per-call cost is shown in the dashboard for transparency, but customers pay for calls, not Bedrock dollars — we absorb the underlying model cost.

What Muse can see — grounding

Muse never sees other customers' data. Every prompt is scoped to a single project_id, and the grounding context is pulled from your project's own database rows:

  • Subject suggestions — your project's send history (open rates by pattern, spammy-word frequency, brand-voice examples from recent subjects)
  • Draft template / Rewrite — your template library (available Handlebars variables, tone examples from your existing templates, optional reference template)
  • Generate workflow — your configured channels, known event types from existing triggers, names of existing workflows (to mirror naming style)
  • Analyze broadcast — your project's reputation metrics (bounce rate, complaint rate, rolling send counters), suppression list breakdown by reason, 24h and 7d send activity, topic health, scheduled-overlap window, and sender-domain verification status

Project isolation is enforced at the query layer: every grounding fetch requires project_id and every query filters on it. There is no cross-project leakage.

Privacy and PII

Muse uses AWS Bedrock as the model gateway, running Claude models in your AWS region. Anthropic does not retain prompts or completions submitted via Bedrock.

The audit layer logs only scrubbed request data — counts and shapes, not raw content. For example, the audit row for a "draft template" call includes the brief length and the number of available variables, but never the brief text or the recipient list. The full response text is persisted on the audit row because it's the generated artifact itself — review it from the dashboard audit log.

If a brief or block you paste into Muse contains real PII (a customer's name, email, support ticket text), that content is sent to Bedrock as part of the prompt. We scrub on the way in and warn you when we detect PII-shaped input in a brief, but the safest practice is to avoid pasting customer data into AI fields when you can paraphrase instead.

Invoking from the dashboard

Every Muse entry point is an "AI" sparkle button next to the existing manual control:

  • Template subject field → "Suggest with Muse" popover (5 ranked candidates with rationale)
  • Templates page → "Generate with AI" → brief-input modal with streaming preview
  • Template editor → "Analyze before sending" → severity-coded advisory card stack
  • Workflows page → "Generate with AI" → describes-in-English → step-tree preview with per-step accept/reject

Streaming endpoints emit tokens as they arrive (SSE), then a final complete event with the validated payload and cost metadata. The dashboard renders the streaming text so you see progress.

How to use Muse

Muse is a dashboard feature, not a public API. Every capability is invoked from the Zyphr dashboard — there is no customer-facing Muse API, no SDK method, and API keys cannot call it. The underlying /v1/muse/* endpoints are authenticated with your dashboard session only and are intentionally excluded from the public API surface and SDKs.

Muse capabilities and where they live in the dashboard:

  • Suggest subject lines — the "Suggest with Muse" popover on a template's subject field (5 ranked candidates with rationale).
  • Draft a template — Templates page → "Generate with AI" → brief-input modal with streaming preview.
  • Rewrite a block — the block-level "Rewrite with Muse" action in the template editor.
  • Generate a workflow — Workflows page → "Generate with AI" → describe-in-English → step-tree preview with per-step accept/reject. Generated workflows are schema-validated before anything is created; the platform never auto-creates workflows from unvalidated AI output.
  • Analyze a broadcast before sending — the template editor's "Analyze before sending" advisory card stack. The advisory is advisory only — Zyphr never blocks a send based on AI output.

Streaming actions render token-by-token in the dashboard as the model responds, then settle on a validated result with cost metadata. Usage and remaining monthly budget are shown in the dashboard's Usage tab.

The advisory analysis returns this shape internally:

{
"summary": "...",
"recommended_action": "send" | "send_with_caution" | "delay" | "revise_before_send",
"deliverability_risks": [ { "severity": "high|medium|low", "title": "...", "detail": "...", "fix": "..." } ],
"frequency_conflicts": [ ... ],
"audience_warnings": [ ... ],
"send_time_suggestions": [ { "suggested_at": "...", "reason": "..." } ],
"content_notes": [ ... ]
}

Limits and errors

Error codeHTTPMeaning
feature_not_enabled403Your plan doesn't include Muse — upgrade required
muse_quota_exceeded402Per-action monthly quota reached for your plan. Response includes action, used, limit
muse_budget_exceeded402Internal safety ceiling reached (should never happen before quota under normal use)
muse_rate_limited429Per-user generation cap hit (default 60/hour); retry after Retry-After seconds
bedrock_throttled503AWS Bedrock returned ThrottlingException; back off with jitter
muse_workflow_invalid502Generated workflow failed schema validation; the dashboard will surface the error
muse_advisory_invalid502Generated broadcast advisory failed schema validation

Rate limiting is keyed per user-per-action, so a buggy script can't burn through your whole account's budget by spawning many "users".

Eval harness and quality

Every Muse prompt has a committed eval baseline in source control. Each prompt is judged across 5–6 rubric dimensions by Claude Sonnet against 20+ fixtures covering edge cases. CI fails on baseline regressions. Current overall scores (higher is better, 1.0 max):

PromptOverall baseline
suggest-subjects.v1~0.93
draft-template.v1~0.91
rewrite-block.v1~0.92
generate-workflow.v10.94
analyze-broadcast.v10.90

If a prompt regresses by more than 5% in production traffic, we ship a patched prompt version (e.g. v1v1.1) without changing the public contract.