Support Ops

Support

Inbox setup, diagnostics export, ticket categories, refund workflow, Customer Portal support, support visuals, and reply macros.

Support Ops Pack

Open support CSV

Run npm run support:ops-pack after changing support email, domain, Customer Portal, billing backend, legal review, or support evidence. Never paste inbox passwords, recovery codes, raw customer data, API keys, full card numbers, or private files into the dashboard.

Support status Support Ops Waiting On Handoffs Ready
Actions 9 Ready
Waiting 5 Ready
Ready 4 Ready
Support email nyrasupport@gmail.com Ready
Inbox roundtrip No Ready

Support Intake Form

Checking command-center API...

Load file here: support-roundtrip

Safe Command Sequence

PhaseOwnerCommandPurposeNo-Go Rule
0. Dashboard Sync Codex npm run support:ops-pack && npm run test:support-ops-pack Refresh support handoffs, support macros, dashboard state, and support no-go rules. Do not rely on stale support status before enabling paid checkout.
3. Customer Diagnostics Codex npm run test:support-readiness Verify redacted diagnostics, Settings support UI, support runbook, and dashboard Support page wiring. Support diagnostics must never export raw chats, tokens, license blobs, API keys, passwords, screenshots, or transcripts.
3. Customer Diagnostics Codex npm run test:support-diagnostics-runtime Runtime-smoke the diagnostics export and redaction rules. Do not ask customers to send unredacted private data.
2. Public Policy And Domain Codex npm run public:launch-config && npm run test:public-launch-config Verify public domain, support email, policy URLs, billing redirects, and launch-site support links. No public checkout until the support path in app, policies, Stripe, and launch site agree.
5. Billing Support User + Codex npm run payment:launch-pack && npm run billing:live-preflight -- --mode test --allow-blocked Keep billing support, Customer Portal, webhook, backend URL, support inbox, and legal review blockers visible. Recurring billing must stay blocked until cancellation, invoices, support, and refund workflow can be handled.

Support Actions

PhasePriorityOwnerStatusActionWhat To DoPageFieldVerify
1. Public Support Identity P0 User Ready Support email saved Save the support address customers will see in the app, Stripe receipts, public policies, and launch site. pages/support.html decisions.supportEmail npm run support:ops-pack && npm run test:support-ops-pack
1. Public Support Identity P0 User Waiting on handoff Support inbox ticket roundtrip confirmed Send a test customer email to the support inbox, reply from the inbox, and upload sanitized proof of the roundtrip. pages/support.html billingRehearsal.supportInboxConfirmed npm run support:ops-pack && npm run test:support-ops-pack
2. Public Policy And Domain P0 User Ready Public domain and policy support path saved Save the public product domain so privacy, terms, refund, cancellation, support, checkout success, and portal return URLs can match. pages/support.html decisions.domain npm run public:launch-config && npm run test:public-launch-config
3. Customer Diagnostics P0 Codex Ready Redacted support diagnostics export exists Keep Settings diagnostics export available and redacted before every release candidate. pages/support.html supportOps.diagnosticsStatus npm run test:support-readiness && npm run test:support-diagnostics-runtime
4. Support Process P0 Codex Ready Support runbook and inbox setup docs exist Keep support categories, evidence rules, response targets, canned replies, and inbox setup docs current with the shipping product. pages/support.html supportOps.runbookStatus npm run test:support-readiness
5. Billing Support P0 User + Codex Waiting on handoff Customer Portal cancellation and invoice support configured Configure Stripe Customer Portal for cancellation, invoice history, and payment method updates; then test the support reply path. pages/support.html billingRehearsal.customerPortalConfigured npm run payment:launch-pack && npm run test:payment-launch-pack
5. Billing Support P0 User + Codex Waiting on handoff Hosted billing support links saved Save hosted billing backend and Stripe webhook URLs so support can distinguish checkout, portal, webhook, and activation failures. pages/support.html billingRehearsal.backendBaseUrl npm run billing:live-preflight -- --mode test --allow-blocked
6. Legal And Policy Review P0 User Waiting on handoff Support, refund, privacy, and cancellation language reviewed Review final-sale, cancellation, support, privacy, and paid-beta language with an attorney/accountant or explicitly mark approved after review. pages/support.html billingRehearsal.attorneyReviewStatus npm run test:policy-readiness
7. Support Visual Evidence P0 Codex Waiting on product freeze Support screenshots match shipping app Refresh support, diagnostics, billing, cancellation, and activation screenshots after the shipping UI and support paths are frozen. pages/support.html visualProduction.finalScreenshotsApproved npm run visuals:pack && npm run test:visual-production-pack

Reply Macros

CategorySubjectReply
Diagnostics Request NyrA support diagnostics needed Please open NyrA Settings, choose Export Support Diagnostics, review the JSON file, and attach it in your reply to nyrasupport@gmail.com. Do not send passwords, API keys, full card numbers, recovery codes, private documents, or screenshots with secrets visible.
License Activation NyrA license activation help Please send the checkout email address, app version, Windows version, exact error text, and the redacted support diagnostics file from Settings. Do not send full card numbers, API keys, passwords, or recovery codes.
Billing Review NyrA billing request received Purchases are final except where required by law or where we confirm a billing error, duplicate charge, unauthorized charge, or license delivery failure caused by our billing system. Please send the checkout email, charge date, and a short description of the issue. Do not send full card numbers.
Computer Control NyrA computer-control issue Please describe the exact command you gave NyrA, what happened, what should have happened, and whether the app showed a high-impact approval message. Attach the redacted support diagnostics file from Settings.

NyrA Support Inbox Setup

Scope: Swarm Little Buddy desktop app only

The preferred support address is currently:

This mailbox must be created or confirmed by the user because email account creation requires a real owner, recovery method, and provider verification. Do not put the password or recovery codes in the repo.

Minimum Setup

  1. Create or confirm control of nyrasupport@gmail.com.
  2. Turn on two-factor authentication.
  3. Add a recovery email/phone controlled by the business owner.
  4. Add the support address to Stripe customer receipts.
  5. Add the support address to the refund and cancellation policy.
  6. Add the support address to the privacy policy.
  7. Add the support address to the terms and EULA.
  8. Add the support address to the app settings/help screen.
  9. Add the support address to the landing page.

Support Labels

Create labels or folders:

First Reply Targets

Do not promise a support SLA until it can be staffed. For beta, use:

Canned Reply: Billing Final Sale

Subject: NyrA billing request received

Thanks for contacting NyrA support. Purchases are final except where required by law or where we confirm a billing error, duplicate charge, unauthorized charge, or license delivery failure caused by our billing system.

We will review the charge and reply with the next step. Please include the email used at checkout, charge date, and the last four digits of the payment method. Do not send full card numbers, passwords, API keys, screenshots containing secrets, or recovery codes.

Canned Reply: License Activation

Subject: NyrA license activation help

We can help with activation. Please send the checkout email address, your app version, Windows version, and the exact error shown in the app. Do not send API keys, passwords, or screenshots containing private data.

NyrA Support Operations Runbook

Scope: Swarm Little Buddy desktop app only.

This runbook is the operating process for paid beta support. It assumes the customer support inbox is controlled by the business owner and that no customer secrets are requested or stored in the repo.

Support Intake

Every support ticket should capture:

Do not ask for passwords, API keys, full card numbers, recovery codes, raw transcripts, private files, or screenshots containing secrets.

Ticket Categories

Category First Action Needed Evidence Escalate When
Install or launch Confirm app version, Windows version, installer path, antivirus message, and signing status Screenshot, app version, install log if available Installer is blocked by trust/signing or app crashes before Settings opens
License activation Confirm checkout email, billing URL, checkout session ID status, and device status Redacted diagnostics, Stripe customer/session lookup Paid customer cannot activate after successful charge
Billing or cancellation Send Customer Portal path and confirm charge date/email Stripe customer ID or checkout email, no full card data Duplicate charge, unauthorized charge, legal refund requirement, or portal failure
Voice or listening Confirm microphone consent, wake/trigger settings, muted state, and Windows input device Redacted diagnostics, screenshot of privacy settings Realtime voice fails after consent and provider health are good
Screen or camera Confirm consent state and that the user explicitly requested the capture Redacted diagnostics, Windows privacy settings screenshot App captures without consent or fails after consent
Computer control Confirm paid license, computer-control consent, and high-impact approval category Redacted diagnostics, action description Action is unsafe, destructive, payment/account changing, or repeatedly fails
Provider/API issue Confirm provider availability and configured key owner Redacted diagnostics only; never ask for raw keys Provider is down or all providers fail after key setup
Privacy/delete request Route to privacy workflow and confirm identity path Customer email and requested action Legal/account deletion, data export dispute, or breach concern
Bug report Reproduce locally or mark unable to reproduce Redacted diagnostics, steps, expected result, actual result Data loss, billing impact, security impact, or crash loop
Feature request Record request and attach product lane Customer use case Request touches safety, legal, billing, or privacy promises

Redacted Diagnostic Bundle

The app now exposes Export Support Diagnostics in Settings. The file is meant to be attached by the customer after they review it.

The bundle includes:

The bundle excludes:

Response Targets

Do not sell a strict support SLA until staffing exists. For paid beta, use these public-facing targets:

Billing And Refund Workflow

  1. Confirm the request category: cancellation, duplicate charge, unauthorized charge, billing error, license delivery failure, or general refund request.
  2. Use Stripe to locate the customer by checkout email or customer ID.
  3. Never ask for full card numbers.
  4. If it is cancellation only, send Customer Portal instructions.
  5. If it is duplicate charge, unauthorized charge, billing error, or verified license delivery failure, mark for refund review.
  6. If the final-sale policy applies, reply with the final-sale language and explain the cancellation path for future renewals.
  7. Log the ticket category and outcome in the command center team updates.

Canned Replies

Diagnostics Request

Subject: NyrA support diagnostics needed

Thanks for the report. Please open NyrA Settings, choose Export Support Diagnostics, review the JSON file, and attach it here. Hide or remove anything you do not want to send. Do not send passwords, API keys, full card numbers, recovery codes, private documents, or screenshots with secrets visible.

Activation Help

Subject: NyrA license activation help

We can help with activation. Please send the checkout email address, app version, Windows version, exact error text, and the redacted support diagnostics file from Settings. Do not send full card numbers, API keys, passwords, or recovery codes.

Billing Review

Subject: NyrA billing request received

Thanks for contacting NyrA support. Purchases are final except where required by law or where we confirm a billing error, duplicate charge, unauthorized charge, or license delivery failure caused by our billing system. Please send the checkout email, charge date, and a short description of the issue. Do not send full card numbers.

Computer-Control Issue

Subject: NyrA computer-control issue

Please describe the exact command you gave NyrA, what happened, what should have happened, and whether the app showed a high-impact approval message. Attach the redacted support diagnostics file from Settings. Do not ask NyrA to perform destructive, credential, payment, or account-changing actions while we are diagnosing the issue.

No-Go Conditions

Paid beta support is not live until:

Agent Run Log

Each manual intake or scheduled cloud marker becomes a visible build handoff. Use this to confirm the dashboard was read and routed.

No intake runs loaded yet.

Support Ops Pack JSON

{
  "schemaVersion": 1,
  "generatedAt": "2026-06-17T22:59:04.190Z",
  "status": "SUPPORT_OPS_WAITING_ON_HANDOFFS",
  "label": "Support Ops Waiting On Handoffs",
  "supportEmail": "nyrasupport@gmail.com",
  "supportInboxConfirmed": "No",
  "dashboardFields": [
    "decisions.supportEmail",
    "decisions.domain",
    "billingRehearsal.supportInboxConfirmed",
    "billingRehearsal.customerPortalConfigured",
    "billingRehearsal.attorneyReviewStatus",
    "billingRehearsal.backendBaseUrl",
    "billingRehearsal.webhookEndpointUrl",
    "visualProduction.finalScreenshotsApproved"
  ],
  "uploadSlots": [
    "support-roundtrip",
    "domain-email",
    "legal-review",
    "stripe-screenshots",
    "product-screenshots",
    "qa-evidence"
  ],
  "actions": [
    {
      "id": "support-email-saved",
      "source": "support-ops-pack",
      "phase": "1. Public Support Identity",
      "priority": "P0",
      "owner": "User",
      "status": "Ready",
      "label": "Support email saved",
      "detail": "nyrasupport@gmail.com",
      "action": "Save the support address customers will see in the app, Stripe receipts, public policies, and launch site.",
      "evidenceNeeded": "Save decisions.supportEmail in the dashboard and upload sanitized support evidence to domain-email.",
      "dashboardPage": "pages/support.html",
      "dashboardField": "decisions.supportEmail",
      "uploadSlot": "domain-email",
      "verificationCommand": "npm run support:ops-pack && npm run test:support-ops-pack",
      "noGoRule": "No paid checkout without a public support contact."
    },
    {
      "id": "support-inbox-roundtrip",
      "source": "support-ops-pack",
      "phase": "1. Public Support Identity",
      "priority": "P0",
      "owner": "User",
      "status": "Waiting on handoff",
      "label": "Support inbox ticket roundtrip confirmed",
      "detail": "supportInboxConfirmed=No",
      "action": "Send a test customer email to the support inbox, reply from the inbox, and upload sanitized proof of the roundtrip.",
      "evidenceNeeded": "Save billingRehearsal.supportInboxConfirmed in the dashboard and upload sanitized support evidence to support-roundtrip.",
      "dashboardPage": "pages/support.html",
      "dashboardField": "billingRehearsal.supportInboxConfirmed",
      "uploadSlot": "support-roundtrip",
      "verificationCommand": "npm run support:ops-pack && npm run test:support-ops-pack",
      "noGoRule": "No paid beta until a real support inbox can receive and answer a customer ticket."
    },
    {
      "id": "public-domain-support-path",
      "source": "support-ops-pack",
      "phase": "2. Public Policy And Domain",
      "priority": "P0",
      "owner": "User",
      "status": "Ready",
      "label": "Public domain and policy support path saved",
      "detail": "porterlabz.com",
      "action": "Save the public product domain so privacy, terms, refund, cancellation, support, checkout success, and portal return URLs can match.",
      "evidenceNeeded": "Save decisions.domain in the dashboard and upload sanitized support evidence to domain-email.",
      "dashboardPage": "pages/support.html",
      "dashboardField": "decisions.domain",
      "uploadSlot": "domain-email",
      "verificationCommand": "npm run public:launch-config && npm run test:public-launch-config",
      "noGoRule": "No public checkout unless policy/support URLs are on the intended public domain."
    },
    {
      "id": "diagnostics-export",
      "source": "support-ops-pack",
      "phase": "3. Customer Diagnostics",
      "priority": "P0",
      "owner": "Codex",
      "status": "Ready",
      "label": "Redacted support diagnostics export exists",
      "detail": "Settings diagnostics UI and Electron redaction handler exist.",
      "action": "Keep Settings diagnostics export available and redacted before every release candidate.",
      "evidenceNeeded": "Save supportOps.diagnosticsStatus in the dashboard and upload sanitized support evidence to qa-evidence.",
      "dashboardPage": "pages/support.html",
      "dashboardField": "supportOps.diagnosticsStatus",
      "uploadSlot": "qa-evidence",
      "verificationCommand": "npm run test:support-readiness && npm run test:support-diagnostics-runtime",
      "noGoRule": "Support must not ask customers for raw chats, API keys, tokens, full card numbers, screenshots with secrets, or private files."
    },
    {
      "id": "support-runbook",
      "source": "support-ops-pack",
      "phase": "4. Support Process",
      "priority": "P0",
      "owner": "Codex",
      "status": "Ready",
      "label": "Support runbook and inbox setup docs exist",
      "detail": "runbook=true; inboxSetup=true",
      "action": "Keep support categories, evidence rules, response targets, canned replies, and inbox setup docs current with the shipping product.",
      "evidenceNeeded": "Save supportOps.runbookStatus in the dashboard and upload sanitized support evidence to qa-evidence.",
      "dashboardPage": "pages/support.html",
      "dashboardField": "supportOps.runbookStatus",
      "uploadSlot": "qa-evidence",
      "verificationCommand": "npm run test:support-readiness",
      "noGoRule": "No paid beta without a written support process for install, activation, billing, cancellation, privacy, and computer-control tickets."
    },
    {
      "id": "billing-cancellation-support",
      "source": "support-ops-pack",
      "phase": "5. Billing Support",
      "priority": "P0",
      "owner": "User + Codex",
      "status": "Waiting on handoff",
      "label": "Customer Portal cancellation and invoice support configured",
      "detail": "customerPortalConfigured=No",
      "action": "Configure Stripe Customer Portal for cancellation, invoice history, and payment method updates; then test the support reply path.",
      "evidenceNeeded": "Save billingRehearsal.customerPortalConfigured in the dashboard and upload sanitized support evidence to stripe-screenshots.",
      "dashboardPage": "pages/support.html",
      "dashboardField": "billingRehearsal.customerPortalConfigured",
      "uploadSlot": "stripe-screenshots",
      "verificationCommand": "npm run payment:launch-pack && npm run test:payment-launch-pack",
      "noGoRule": "Do not take recurring subscription money without a customer cancellation path."
    },
    {
      "id": "hosted-billing-support-links",
      "source": "support-ops-pack",
      "phase": "5. Billing Support",
      "priority": "P0",
      "owner": "User + Codex",
      "status": "Waiting on handoff",
      "label": "Hosted billing support links saved",
      "detail": "backend=blank; webhook=blank",
      "action": "Save hosted billing backend and Stripe webhook URLs so support can distinguish checkout, portal, webhook, and activation failures.",
      "evidenceNeeded": "Save billingRehearsal.backendBaseUrl in the dashboard and upload sanitized support evidence to cloud-handoff.",
      "dashboardPage": "pages/support.html",
      "dashboardField": "billingRehearsal.backendBaseUrl",
      "uploadSlot": "cloud-handoff",
      "verificationCommand": "npm run billing:live-preflight -- --mode test --allow-blocked",
      "noGoRule": "Support cannot debug real customer billing until hosted backend and webhook URLs are known."
    },
    {
      "id": "legal-support-review",
      "source": "support-ops-pack",
      "phase": "6. Legal And Policy Review",
      "priority": "P0",
      "owner": "User",
      "status": "Waiting on handoff",
      "label": "Support, refund, privacy, and cancellation language reviewed",
      "detail": "attorneyReviewStatus=Not approved",
      "action": "Review final-sale, cancellation, support, privacy, and paid-beta language with an attorney/accountant or explicitly mark approved after review.",
      "evidenceNeeded": "Save billingRehearsal.attorneyReviewStatus in the dashboard and upload sanitized support evidence to legal-review.",
      "dashboardPage": "pages/support.html",
      "dashboardField": "billingRehearsal.attorneyReviewStatus",
      "uploadSlot": "legal-review",
      "verificationCommand": "npm run test:policy-readiness",
      "noGoRule": "Do not launch paid beta while support/refund/cancellation language is unreviewed."
    },
    {
      "id": "support-visuals-current",
      "source": "support-ops-pack",
      "phase": "7. Support Visual Evidence",
      "priority": "P0",
      "owner": "Codex",
      "status": "Waiting on product freeze",
      "label": "Support screenshots match shipping app",
      "detail": "finalScreenshotsApproved=No",
      "action": "Refresh support, diagnostics, billing, cancellation, and activation screenshots after the shipping UI and support paths are frozen.",
      "evidenceNeeded": "Save visualProduction.finalScreenshotsApproved in the dashboard and upload sanitized support evidence to product-screenshots.",
      "dashboardPage": "pages/support.html",
      "dashboardField": "visualProduction.finalScreenshotsApproved",
      "uploadSlot": "product-screenshots",
      "verificationCommand": "npm run visuals:pack && npm run test:visual-production-pack",
      "noGoRule": "Do not use support visuals that show stale UI, wrong support email, wrong policy URLs, or incomplete billing flow."
    }
  ],
  "supportCommands": [
    {
      "id": "refresh-support-pack",
      "phase": "0. Dashboard Sync",
      "owner": "Codex",
      "command": "npm run support:ops-pack && npm run test:support-ops-pack",
      "purpose": "Refresh support handoffs, support macros, dashboard state, and support no-go rules.",
      "noGoRule": "Do not rely on stale support status before enabling paid checkout."
    },
    {
      "id": "support-readiness",
      "phase": "3. Customer Diagnostics",
      "owner": "Codex",
      "command": "npm run test:support-readiness",
      "purpose": "Verify redacted diagnostics, Settings support UI, support runbook, and dashboard Support page wiring.",
      "noGoRule": "Support diagnostics must never export raw chats, tokens, license blobs, API keys, passwords, screenshots, or transcripts."
    },
    {
      "id": "support-diagnostics-runtime",
      "phase": "3. Customer Diagnostics",
      "owner": "Codex",
      "command": "npm run test:support-diagnostics-runtime",
      "purpose": "Runtime-smoke the diagnostics export and redaction rules.",
      "noGoRule": "Do not ask customers to send unredacted private data."
    },
    {
      "id": "public-support-config",
      "phase": "2. Public Policy And Domain",
      "owner": "Codex",
      "command": "npm run public:launch-config && npm run test:public-launch-config",
      "purpose": "Verify public domain, support email, policy URLs, billing redirects, and launch-site support links.",
      "noGoRule": "No public checkout until the support path in app, policies, Stripe, and launch site agree."
    },
    {
      "id": "payment-support-gate",
      "phase": "5. Billing Support",
      "owner": "User + Codex",
      "command": "npm run payment:launch-pack && npm run billing:live-preflight -- --mode test --allow-blocked",
      "purpose": "Keep billing support, Customer Portal, webhook, backend URL, support inbox, and legal review blockers visible.",
      "noGoRule": "Recurring billing must stay blocked until cancellation, invoices, support, and refund workflow can be handled."
    }
  ],
  "cannedReplies": [
    {
      "id": "diagnostics-request",
      "category": "Diagnostics Request",
      "subject": "NyrA support diagnostics needed",
      "body": "Please open NyrA Settings, choose Export Support Diagnostics, review the JSON file, and attach it in your reply to nyrasupport@gmail.com. Do not send passwords, API keys, full card numbers, recovery codes, private documents, or screenshots with secrets visible."
    },
    {
      "id": "activation-help",
      "category": "License Activation",
      "subject": "NyrA license activation help",
      "body": "Please send the checkout email address, app version, Windows version, exact error text, and the redacted support diagnostics file from Settings. Do not send full card numbers, API keys, passwords, or recovery codes."
    },
    {
      "id": "billing-review",
      "category": "Billing Review",
      "subject": "NyrA billing request received",
      "body": "Purchases are final except where required by law or where we confirm a billing error, duplicate charge, unauthorized charge, or license delivery failure caused by our billing system. Please send the checkout email, charge date, and a short description of the issue. Do not send full card numbers."
    },
    {
      "id": "computer-control-issue",
      "category": "Computer Control",
      "subject": "NyrA computer-control issue",
      "body": "Please describe the exact command you gave NyrA, what happened, what should have happened, and whether the app showed a high-impact approval message. Attach the redacted support diagnostics file from Settings."
    }
  ],
  "counts": {
    "totalActions": 9,
    "userActions": 6,
    "codexActions": 5,
    "waitingActions": 5,
    "readyActions": 4,
    "supportCommands": 5,
    "cannedReplies": 4
  },
  "outputs": {
    "json": "docs/launch_command_center/support-ops-pack.json",
    "csv": "docs/launch_command_center/support-ops-pack.csv",
    "report": "docs/launch_command_center/SUPPORT_OPS_PACK.md",
    "dashboard": "docs/launch_command_center/pages/support.html"
  }
}