{
  "meta": {
    "canonicalName": "Operon",
    "canonicalUrl": "https://www.operon-app.com",
    "description": "Operon is an all-in-one operations platform for home-service businesses (lawn care, landscaping, cleaning, and field services). It combines CRM, scheduling, invoicing and payments, estimates, contracts, accounting, analytics, and an embedded AI operator named Travis.",
    "version": "1.1.0",
    "lastUpdated": "2026-06-16",
    "statusTaxonomy": {
      "Live": "Implemented, wired to UI/API, enforced gates, verifiable in production code and/or tests.",
      "Beta": "Implemented but behind a rollout guard or limited audience; behavior may change.",
      "Limited": "Implemented but gated by a default-off feature flag, paid add-on rollout, or platform restriction; not broadly available to all eligible plans yet.",
      "Internal": "Operator/ops-only; not exposed to customers.",
      "Disabled": "Present in code but turned off by default and not part of the primary product surface.",
      "Deprecated": "Superseded; retained only for backward compatibility.",
      "Planned": "Referenced or scaffolded but not implemented; must not be marketed as available."
    },
    "note": "Public projection. Internal source files, tests, environment variable names, infrastructure, and security-implementation details are intentionally omitted."
  },
  "organization": {
    "name": "Operon",
    "legalNote": "Operavalla LLC",
    "url": "https://www.operon-app.com",
    "product": "Operon — operations software for home-service businesses",
    "platforms": [
      "Web (responsive)",
      "iOS (Capacitor native app)"
    ],
    "supportedIndustries": [
      "Lawn care and landscaping",
      "Cleaning services",
      "General home and field services"
    ],
    "intendedUsers": [
      "Home-service business owners and operators",
      "Office/admin staff (owner/admin/manager roles)",
      "Field employees and contractors (scoped employee portal access)"
    ]
  },
  "plans": [
    {
      "id": "free",
      "name": "Free",
      "priceUsdMonthly": 0,
      "limits": {
        "customers": 50,
        "employees": 5,
        "invoicesPerMonth": 0,
        "aiTokensPerMonth": 0
      },
      "includes": [
        "dashboard",
        "customers",
        "scheduling",
        "employees",
        "travis_chat_readonly"
      ]
    },
    {
      "id": "starter",
      "name": "Starter",
      "priceUsdMonthly": 29.99,
      "limits": {
        "customers": 500,
        "employees": 25,
        "invoicesPerMonth": 100,
        "aiTokensPerMonth": 100
      },
      "includes": [
        "+ invoices",
        "operon_pay",
        "revenue",
        "mileage",
        "equipment",
        "proposals",
        "estimates",
        "travis_chat_full"
      ]
    },
    {
      "id": "pro",
      "name": "Pro",
      "priceUsdMonthly": 44.99,
      "limits": {
        "customers": 2000,
        "employees": 100,
        "invoicesPerMonth": 500,
        "aiTokensPerMonth": 500
      },
      "includes": [
        "+ analytics",
        "reports",
        "accounting",
        "travis_actions",
        "autopilot",
        "estimateai",
        "instasign",
        "landscape_design",
        "route_optimization",
        "quote_closers"
      ]
    },
    {
      "id": "enterprise",
      "name": "Enterprise",
      "priceUsdMonthly": 99.99,
      "limits": {
        "customers": "unlimited",
        "employees": "unlimited",
        "invoicesPerMonth": "unlimited",
        "aiTokensPerMonth": 2000
      },
      "includes": [
        "+ leadflow",
        "callpilot",
        "revboost",
        "sms",
        "travis_settings",
        "advanced_automation"
      ]
    }
  ],
  "addOns": [
    {
      "id": "website_studio",
      "name": "Website Studio",
      "status": "Limited",
      "purchasable": true,
      "basePlanRequired": [
        "pro",
        "enterprise"
      ],
      "bundledWithPlan": false
    }
  ],
  "features": [
    {
      "id": "customers",
      "canonicalName": "Customers (CRM)",
      "description": "Customer contact database with profiles, tags, status, service interests, spend totals, and job/invoice associations.",
      "status": "Live",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "free",
        "starter",
        "pro",
        "enterprise"
      ],
      "requiredAddOns": [],
      "ownerAdminRestrictions": "Reads available to all roles; create/update available to owner/admin/manager.",
      "capabilities": [
        "Create/read/update customers",
        "Search, filter, paginate",
        "Track creator, spend, last job date",
        "Auto-create customer during invoice creation"
      ],
      "limitations": [
        "No automatic de-duplication (manual merge)",
        "No customer segmentation hierarchy",
        "Basic email presence validation only"
      ],
      "integrations": [
        "Postgres/Prisma"
      ],
      "automation": {
        "travisSupported": true
      }
    },
    {
      "id": "scheduling",
      "canonicalName": "Scheduling",
      "description": "Calendar-based job scheduling with crew assignment, recurring/multi-day jobs, and (Pro) route optimization.",
      "status": "Live",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "free",
        "starter",
        "pro",
        "enterprise"
      ],
      "requiredAddOns": [],
      "ownerAdminRestrictions": "Route apply (reorder) restricted to owner/admin.",
      "capabilities": [
        "Create/list jobs with status",
        "Assign employees/crews",
        "Recurring and multi-day jobs",
        "Route optimization with Google Maps distance matrix (Pro)",
        "Fixed-appointment protection during optimization"
      ],
      "limitations": [
        "Route optimization is web-only and requires a Google Maps key",
        "No real-time GPS tracking (manual status updates)",
        "Quote appointments are not auto-scheduled"
      ],
      "integrations": [
        "Google Maps API",
        "Postgres/Prisma"
      ],
      "automation": {
        "travisSupported": true
      }
    },
    {
      "id": "employees",
      "canonicalName": "Employees",
      "description": "Team management: employee/contractor profiles, role-based permissions, pay types, crews, timesheets (clock in/out), payroll period summaries, and tax-document tracking.",
      "status": "Live",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "free",
        "starter",
        "pro",
        "enterprise"
      ],
      "requiredAddOns": [],
      "ownerAdminRestrictions": "Permission and pay editing restricted to owner/admin; employees use the scoped Employee Portal.",
      "capabilities": [
        "Create/update employee profiles",
        "Role-based permission schema",
        "Pay types (hourly, per-job, %, flat, commission)",
        "Employee vs contractor tax classification",
        "Crews and crew assignment",
        "Clock in/out timesheets",
        "Payroll period and missing-tax-doc summaries",
        "Invite/onboarding flow"
      ],
      "limitations": [
        "No payroll disbursement (summaries only)",
        "Tax document upload only (no form generation)",
        "No background-check or insurance verification"
      ],
      "integrations": [
        "Email (invites)",
        "Postgres/Prisma"
      ],
      "automation": {
        "travisSupported": true
      }
    },
    {
      "id": "invoices",
      "canonicalName": "Invoices",
      "description": "Create, send, and track invoices with line items, due dates, and draft/sent/paid/overdue status; supports creation from completed jobs.",
      "status": "Live",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "starter",
        "pro",
        "enterprise"
      ],
      "requiredAddOns": [],
      "ownerAdminRestrictions": "Manual mark-paid restricted to owner/admin.",
      "capabilities": [
        "Create invoices manually or from jobs",
        "Line items and tax",
        "Send via email (Gmail) or SMS (Twilio)",
        "Stripe checkout payment links",
        "Manual mark-paid (idempotent) with linked accounting entry",
        "Refresh status from Stripe"
      ],
      "limitations": [
        "Sequential invoice numbering (no custom templates)",
        "No installment/payment plans",
        "No automatic dunning/retry",
        "Email send requires Gmail connection"
      ],
      "integrations": [
        "Stripe",
        "Gmail",
        "Twilio (optional)"
      ],
      "automation": {
        "travisSupported": true
      }
    },
    {
      "id": "operon_pay",
      "canonicalName": "Operon Pay",
      "description": "Payment collection built on Stripe Connect (businesses connect their own Stripe account for direct payouts). Supports online checkout everywhere and Tap to Pay on supported iPhones.",
      "status": "Live",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "starter",
        "pro",
        "enterprise"
      ],
      "requiredAddOns": [],
      "ownerAdminRestrictions": "Connect onboarding and payouts tied to the connected Stripe account.",
      "capabilities": [
        "Stripe Connect onboarding",
        "Online Stripe Checkout (web + mobile)",
        "Tap to Pay via Stripe Terminal on supported iPhones",
        "Payment intent tracking and webhook sync"
      ],
      "limitations": [
        "Requires the business to own a Stripe account (no Operon-hosted processing)",
        "Tap to Pay requires a supported iPhone; no Android tap-to-pay (needs a Terminal reader)",
        "No installment plans"
      ],
      "integrations": [
        "Stripe",
        "Stripe Terminal"
      ],
      "automation": {
        "travisSupported": true
      }
    },
    {
      "id": "revenue",
      "canonicalName": "Revenue",
      "description": "Revenue tracking and goal-setting (targets by period stored as business benchmarks).",
      "status": "Live",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "starter",
        "pro",
        "enterprise"
      ],
      "requiredAddOns": [],
      "ownerAdminRestrictions": "Standard role access.",
      "capabilities": [
        "Revenue summaries",
        "Revenue goals (create/read/update/delete) by period"
      ],
      "limitations": [
        "No alerts when goals are met/missed",
        "No trend prediction"
      ],
      "integrations": [
        "Postgres/Prisma"
      ],
      "automation": {
        "travisSupported": true
      }
    },
    {
      "id": "accounting",
      "canonicalName": "Accounting",
      "description": "Expense and receipt tracking with AI (OpenAI) receipt OCR for date/amount/category extraction, plus an approval workflow.",
      "status": "Live",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "pro",
        "enterprise"
      ],
      "requiredAddOns": [],
      "ownerAdminRestrictions": "Employee expense logging gated by can_log_expenses with per-expense limits; approve/reject by owner/admin.",
      "capabilities": [
        "Expense CRUD",
        "Receipt image upload with OCR extraction",
        "Approval workflow (pending → approved/rejected)"
      ],
      "limitations": [
        "PDF receipts not supported for OCR (image only)",
        "No manual data-entry fallback when OCR fails",
        "Basic income/expense ledger (not full double-entry accounting)"
      ],
      "integrations": [
        "OpenAI (receipt OCR)",
        "Postgres/Prisma"
      ],
      "automation": {
        "travisSupported": false
      }
    },
    {
      "id": "analytics_reports",
      "canonicalName": "Analytics and Reports",
      "description": "Business analytics dashboard and reports/exports; plus first-party website analytics for published Website Studio sites.",
      "status": "Live",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "pro",
        "enterprise"
      ],
      "requiredAddOns": [],
      "ownerAdminRestrictions": "Export rate-limited (10/hour/user).",
      "capabilities": [
        "Analytics summaries",
        "Reports/exports",
        "Website analytics (page views, form funnel, traffic sources, qualified leads) for published sites"
      ],
      "limitations": [
        "Website analytics tracks no visitor-level PII (opaque session/visitor IDs only)",
        "Limited to 4 standard website event types",
        "Report generation is primarily UI-driven"
      ],
      "integrations": [
        "Postgres/Prisma"
      ],
      "automation": {
        "travisSupported": true
      }
    },
    {
      "id": "estimateai",
      "canonicalName": "EstimateAI",
      "description": "AI-generated project estimates with line items, labor hours, materials, and a customer summary based on configurable business pricing; rule-based fallback when AI is unavailable.",
      "status": "Live",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "pro",
        "enterprise"
      ],
      "requiredAddOns": [
        "estimateai (bundled with Pro/Enterprise; legacy standalone for Starter holders)"
      ],
      "ownerAdminRestrictions": "Standard role access.",
      "capabilities": [
        "AI line-item generation (structured JSON)",
        "Scope, labor, materials, summary",
        "Configurable pricing (labor rate, markup, material pricing)",
        "Photo-aware context (captions)",
        "Convert estimate to job/invoice/proposal",
        "Down-payment request"
      ],
      "limitations": [
        "AI fallback is rule-based and simpler",
        "No live material-price lookup",
        "Tuned for landscape/home services",
        "120s AI timeout"
      ],
      "integrations": [
        "OpenAI"
      ],
      "automation": {
        "travisSupported": true
      }
    },
    {
      "id": "landscape_design",
      "canonicalName": "Landscape Design",
      "description": "AI image generation for landscape/yard design visualizations.",
      "status": "Live",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "pro",
        "enterprise"
      ],
      "requiredAddOns": [],
      "ownerAdminRestrictions": "Standard role access.",
      "capabilities": [
        "AI image generation for outdoor/landscape visualizations",
        "Routing from Travis when a yard image is detected"
      ],
      "limitations": [
        "Image generation only; not a CAD/measurement tool"
      ],
      "integrations": [
        "OpenAI image models"
      ],
      "automation": {
        "travisSupported": true
      }
    },
    {
      "id": "instasign",
      "canonicalName": "InstaSign",
      "description": "Digital service contracts with AI drafting, secure tokenized signing links, signature capture, immutability after signing, PDF export, and an audit trail.",
      "status": "Live",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "pro",
        "enterprise"
      ],
      "requiredAddOns": [
        "instasign (bundled with Pro/Enterprise; legacy standalone for Starter holders)"
      ],
      "ownerAdminRestrictions": "Standard role access for drafting/sending.",
      "capabilities": [
        "AI contract draft generation",
        "Send for signature via email",
        "Public time-limited signing link (hashed token)",
        "Signature capture with IP/user-agent/timestamp",
        "Lock contract on signing (immutable)",
        "PDF of signed contract"
      ],
      "limitations": [
        "Single signer only (no multi-party)",
        "Not certified legal-grade e-signature (ESIGN/UETA compliance not claimed)",
        "No counterparty amendment flow"
      ],
      "integrations": [
        "OpenAI",
        "Gmail/email",
        "Stripe (embedded payment links)"
      ],
      "automation": {
        "travisSupported": true
      }
    },
    {
      "id": "leadflow",
      "canonicalName": "LeadFlow",
      "description": "Lead management with AI aerial auto-quoting (satellite imagery + AI lawn-size estimation) and AI ad-copy generation/presets.",
      "status": "Live",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "enterprise"
      ],
      "requiredAddOns": [
        "leadflow (bundled with Enterprise; legacy standalone for Starter holders)"
      ],
      "ownerAdminRestrictions": "Standard role access; auto-quote send requires approval.",
      "capabilities": [
        "AI aerial lawn-size estimate from Google Maps satellite imagery",
        "Auto-quote draft create/list/update/approve-and-send",
        "SMS auto-quote delivery",
        "AI ad-copy generation and presets"
      ],
      "limitations": [
        "Auto-quotes are SMS-only (no email delivery)",
        "Static fallback estimate (5000 sq ft) when AI fails",
        "Ad video generation (HeyGen) is referenced but NOT implemented"
      ],
      "integrations": [
        "Google Maps API",
        "OpenAI",
        "Twilio/SMS"
      ],
      "automation": {
        "travisSupported": true
      }
    },
    {
      "id": "revboost",
      "canonicalName": "RevBoost",
      "description": "Automated Google review requests sent to customers via SMS using configurable templates and a review link.",
      "status": "Live",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "enterprise"
      ],
      "requiredAddOns": [
        "revboost (bundled with Enterprise)"
      ],
      "ownerAdminRestrictions": "Send requires RevBoost active and approval.",
      "capabilities": [
        "Review settings (link, template, channel, suppression days)",
        "Templated SMS review requests via Twilio",
        "Phone normalization/validation"
      ],
      "limitations": [
        "SMS-only (email channel field exists but is not used)",
        "Suppression window is tracked but not enforced on send",
        "No Google Business Profile API integration (manual review link)",
        "No review-conversion tracking"
      ],
      "integrations": [
        "Twilio/SMS",
        "Postgres/Prisma"
      ],
      "automation": {
        "travisSupported": true
      }
    },
    {
      "id": "callpilot",
      "canonicalName": "CallPilot",
      "description": "Call tracking and missed-call SMS follow-up for inbound business calls.",
      "status": "Live",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "enterprise"
      ],
      "requiredAddOns": [
        "callpilot (bundled with Enterprise; never sold standalone)"
      ],
      "ownerAdminRestrictions": "Send requires approval; SMS integration required.",
      "capabilities": [
        "Call logging/list",
        "Missed-call SMS follow-up"
      ],
      "limitations": [
        "Requires Twilio/SMS configured",
        "Scope limited to call logging and SMS follow-up"
      ],
      "integrations": [
        "Twilio/SMS"
      ],
      "automation": {
        "travisSupported": true
      }
    },
    {
      "id": "mileage",
      "canonicalName": "Mileage",
      "description": "Vehicle mileage trip logging for tax/expense purposes with sync into accounting.",
      "status": "Live",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "starter",
        "pro",
        "enterprise"
      ],
      "requiredAddOns": [],
      "ownerAdminRestrictions": "Standard role access.",
      "capabilities": [
        "Create/list mileage trips",
        "Distance calculation",
        "Sync to accounting"
      ],
      "limitations": [
        "Manual trip entry (no automatic GPS auto-logging)",
        "No dedicated mileage report export"
      ],
      "integrations": [
        "Postgres/Prisma"
      ],
      "automation": {
        "travisSupported": false
      }
    },
    {
      "id": "equipment",
      "canonicalName": "Equipment",
      "description": "Equipment inventory with maintenance logging and mark-as-sold.",
      "status": "Live",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "starter",
        "pro",
        "enterprise"
      ],
      "requiredAddOns": [],
      "ownerAdminRestrictions": "Standard role access.",
      "capabilities": [
        "Equipment CRUD",
        "Maintenance logging",
        "Mark sold"
      ],
      "limitations": [
        "No automated maintenance reminders surfaced",
        "Tracking only (not stock/inventory levels)"
      ],
      "integrations": [
        "Postgres/Prisma"
      ],
      "automation": {
        "travisSupported": true
      }
    },
    {
      "id": "website_studio",
      "canonicalName": "Website Studio",
      "description": "AI-assisted website builder for service businesses: site generation, AI editing, stock imagery, publishing to an operon-app.com subdomain or custom domain, and built-in lead capture.",
      "status": "Live",
      "platforms": [
        "web"
      ],
      "eligiblePlans": [
        "pro",
        "enterprise"
      ],
      "requiredAddOns": [
        "website_studio (paid add-on)"
      ],
      "ownerAdminRestrictions": "Standard role access for entitled businesses.",
      "capabilities": [
        "AI site creation and section regeneration",
        "AI-assisted editing (preset or free-form)",
        "Stock image selection (Pexels/Unsplash)",
        "Publish to subdomain or custom domain",
        "Custom domain set/verify/remove (manual DNS)",
        "Built-in lead inbox"
      ],
      "limitations": [
        "Web-only (builder not on iOS; the Website Leads inbox can ship to iOS separately)",
        "Custom domains require manual DNS configuration",
        "Legacy prompt-to-site AI builder is retired (dev-only)"
      ],
      "integrations": [
        "OpenAI (gpt-5.5 generation, gpt-5.4-mini micro-copy)",
        "OpenAI image models",
        "Pexels",
        "Unsplash",
        "Google Maps (address validation)"
      ],
      "automation": {
        "travisSupported": true
      }
    },
    {
      "id": "website_leads",
      "canonicalName": "Website Leads",
      "description": "Lead inbox for submissions captured by published Website Studio sites, with a shared conversation engine that lets Travis qualify, draft/send replies, offer quote times, and book quote visits.",
      "status": "Live",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "pro",
        "enterprise"
      ],
      "requiredAddOns": [
        "website_studio (for the inbox); public lead capture works for any published site"
      ],
      "ownerAdminRestrictions": "Travis-assisted replies follow normal approval rules; fully-unattended autonomous reply/booking is governed by Travis Autopilot (see autopilot entry).",
      "capabilities": [
        "Public lead capture from published sites (token-auth, IP rate-limited)",
        "Authenticated lead inbox",
        "Travis reply drafting/sending and quote booking"
      ],
      "limitations": [
        "Fully-unattended (no-approval) reply/booking is governed by Travis Autopilot, which is rolling out (see autopilot entry)",
        "No external CRM webhook delivery",
        "No lead scoring beyond Travis intent detection"
      ],
      "integrations": [
        "Gmail (reply sync)",
        "Twilio/SMS",
        "Postgres/Prisma"
      ],
      "automation": {
        "travisSupported": true
      }
    },
    {
      "id": "travis",
      "canonicalName": "Travis (AI Operator)",
      "description": "Embedded AI assistant that answers questions and executes business actions through a permissioned tool registry, with approvals, tenant isolation, autonomy modes, and cost-aware model routing.",
      "status": "Live",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "free",
        "starter",
        "pro",
        "enterprise"
      ],
      "requiredAddOns": [],
      "ownerAdminRestrictions": "Free/Starter: chat + read-only and basic create. Write/execute actions (invoicing, estimates, email, contracts, analytics) require Pro+. Lead/SMS/review tools require Enterprise. Write tools require owner/admin/manager role.",
      "capabilities": [
        "Conversational chat with business context",
        "Read tools (customers, jobs, invoices, leads, equipment, employees, revenue/analytics summaries)",
        "Create/update via permissioned write tools",
        "Communication tools (email/SMS/contract/invoice/review) — always require approval",
        "Routing to EstimateAI, Landscape Design, InstaSign, and pages",
        "Cost-aware model routing across tiers"
      ],
      "limitations": [
        "Always requires human approval for money movement and all customer-facing sends (NEVER_AUTO_APPROVE set) — cannot be bypassed even in full-auto mode",
        "Free = read/basic only; Starter = no Pro+ actions; tenant-scoped to one business",
        "Per-business rate limits (10/min, 60/hour) and monthly AI token budgets (Free 0 / Starter 100 / Pro 500 / Enterprise 2000)",
        "Max 5 tool-calling rounds per turn; 50% monthly-token burn cap per session; per-customer 2 automated messages/day",
        "Blocked by missing integrations (Gmail/Twilio/Stripe) and by abusive-content filter",
        "No payroll disbursement, tax calculation, or live website publishing without entitlement"
      ],
      "integrations": [
        "OpenAI (primary)",
        "Anthropic Claude Haiku (fallback only)",
        "Gmail",
        "Twilio/SMS",
        "Stripe"
      ],
      "automation": {
        "travisSupported": false
      }
    },
    {
      "id": "autopilot",
      "canonicalName": "Travis Autopilot",
      "description": "Proactive, autonomous Travis workflows (e.g., reply-and-book on inbound Gmail/website leads, follow-ups) governed by autonomy modes, per-day caps, and an emergency halt.",
      "status": "Beta",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "pro",
        "enterprise"
      ],
      "requiredAddOns": [],
      "ownerAdminRestrictions": "Configured via Travis Settings (Enterprise route gate); per-day send caps and emergency halt apply.",
      "capabilities": [
        "Autonomy modes (assist/execute/full_auto)",
        "Per-day send caps (SMS, invoices, contracts, jobs, emails)",
        "Per-customer spam guard",
        "Emergency halt switch"
      ],
      "limitations": [
        "Autonomous Gmail/website-lead send & booking are fail-closed behind a Phase 4 rollout guard",
        "Money movement and customer-facing sends still require approval regardless of mode",
        "Daily caps enforced; manual approvals bypass caps"
      ],
      "integrations": [
        "Gmail",
        "Twilio/SMS",
        "OpenAI"
      ],
      "automation": {
        "travisSupported": true
      }
    },
    {
      "id": "gmail_integration",
      "canonicalName": "Gmail Integration",
      "description": "OAuth connection to Gmail for sending and reading email, plus a background reply-sync cron that pulls customer replies into Operon.",
      "status": "Live",
      "platforms": [
        "web",
        "ios"
      ],
      "eligiblePlans": [
        "free",
        "starter",
        "pro",
        "enterprise"
      ],
      "requiredAddOns": [],
      "ownerAdminRestrictions": "Connected per business; tokens stored server-side.",
      "capabilities": [
        "OAuth connect (send + readonly + email scopes)",
        "Automatic token refresh",
        "Reply-sync cron (incremental by history ID, per-business lock)"
      ],
      "limitations": [
        "No mailbox-mutation scopes (no label/modify/trash)",
        "Re-auth required if the user revokes access"
      ],
      "integrations": [
        "Gmail API",
        "Google OAuth"
      ],
      "automation": {
        "travisSupported": true
      }
    }
  ],
  "integrations": [
    {
      "name": "Stripe",
      "purpose": "Subscriptions, Operon Pay (Connect), checkout, webhooks",
      "status": "Live"
    },
    {
      "name": "Apple In-App Purchase",
      "purpose": "iOS subscription billing (required by App Store)",
      "status": "Live"
    },
    {
      "name": "Twilio",
      "purpose": "SMS for RevBoost, CallPilot, lead/customer messaging",
      "status": "Live"
    },
    {
      "name": "Gmail / Google OAuth",
      "purpose": "Email send/read + reply sync",
      "status": "Live"
    },
    {
      "name": "Google Maps",
      "purpose": "Route optimization, address validation, aerial imagery",
      "status": "Live"
    },
    {
      "name": "OpenAI",
      "purpose": "Primary AI for Travis, EstimateAI, InstaSign, Website Studio, receipt OCR, images",
      "status": "Live"
    },
    {
      "name": "Anthropic (Claude Haiku)",
      "purpose": "Travis fallback only",
      "status": "Live"
    },
    {
      "name": "Pexels / Unsplash",
      "purpose": "Website Studio stock imagery",
      "status": "Live"
    },
    {
      "name": "Supabase / PostgreSQL (Prisma)",
      "purpose": "Primary multi-tenant database",
      "status": "Live"
    }
  ],
  "platformDifferences": {
    "ios": [
      "Billing uses Apple In-App Purchase (Stripe checkout is not used for plan purchases on iOS).",
      "Website Studio builder is hidden on iOS; the Website Leads inbox can ship to iOS independently.",
      "Operon Pay Tap to Pay available on supported iPhones via Stripe Terminal.",
      "Some setup CTAs (e.g., phone/SMS) show informational notes instead of external links, per App Store guidelines."
    ],
    "web": [
      "Stripe checkout for plan purchases and add-ons.",
      "Full desktop sidebar navigation; Website Studio builder available."
    ]
  },
  "security": {
    "summary": "Operon enforces per-business tenant isolation on every request, authenticated access with role-based permissions, server-side plan/feature gating that never trusts client-supplied plan data, rate limiting on sensitive and public endpoints, signed-token signing links for contracts, and content filtering on AI input. Secrets are never logged."
  }
}
