Monetization & Tier Packaging (v1)
| Field | Value |
|---|---|
| Status | In execution β P2 packaging met; P3 controls shipped (hard/monitor toggles, tier_gate logs); pilot hard enforce + Stripe alignment still TBD |
| Owner | Scott Asher |
| Target repos | attunelogic-api, attunelogic-landing, attunelogic-service |
| Depends on | Stripe Billing Foundation (already in flight) |
| Related | AI Agent for Trucking β v1 (per-tenant cost ceiling reused here) Β· Tier deliverability checklist |
| Last updated | 2026-04-30 |
Reading order: start here for the what packaging and why. For the how to wire it up on Stripe + feature flags, jump to the Stripe Billing Foundation proposal.
TL;DRβ
Ship AttuneLogic as a three-tier public ladder for trucking (Starter, Growth, Pro) plus a custom Enterprise quote, priced 20β35% below mid-market incumbents (Jobber, Housecall Pro, Workiz, Truckpedia) while matching or beating their feature set. The platform's single biggest differentiator β the conversational AI Agent β is bundled into Pro with a token cap and metered overages, using the per-tenant monthlyCostCeilingUsd infrastructure already designed in the AI agent proposal.
Gating is implemented through the feature-flag registry (src/services/config/default-configs/feature-flags.js) via TIER_DEFAULTS + tenant overrides. Numeric caps use TIER_LIMITS and requireSeatCap / controller checks (default monitor; hard mode via SEAT_CAP_HARD_ENFORCE or per-tenant billing.enforcementMode). Existing FOUNDING_MONTHLY customers stay on legacy pricing; VIP / full-product grandfather is a separate switch: Customer.grandfatherFullAccess (see tier deliverability).
Scope note (v1): This proposal covers trucking only. The platform supports service / repair / home-service verticals under Customer.appType, but public pricing, marketing positioning, and sales collateral are trucking-first for launch. Service-vertical monetization will ship as a v2 addendum once the trucking ladder is validated against paying customers. Feature flags that gate service-only modules (jobs.quotes, inventory, employees, etc.) stay at their registry defaults and are not part of tier gating in v1.
Three non-negotiable guardrails for launch:
- No existing customer gets locked out. Enforcement is new-customer-only at first, behind a feature flag. Grandfather plans stay grandfathered.
- Core operational modules are NEVER gated by tier.
jobs.enabled,dispatch.enabled,schedule.enabled,clients.enabled,invoices.enabled,jobs.legs.enabled,manifests.enabledmust remain default-on across all paid tiers. If a customer can't dispatch a load, the product is broken β not "upsold." - AI cost ceiling is always enforced. The per-tenant monthly USD ceiling and the platform-wide daily ceiling from the AI agent proposal are active even on Enterprise tiers.
Stakeholder review checklistβ
- Founder / Product β sign off on the final tier prices, seat caps, and naming
- Sales / GTM β confirm Enterprise floor ($1,500/mo) and negotiation room
- Finance β validate gross margin on Pro tier given AI bundled tokens
- Engineering β confirm
TIER_DEFAULTSmap + entitlement switch-over is a one-sprint lift - Customer success β confirm Founding-customer grandfather policy
- Legal β review monthly-to-monthly language and cancellation policy on the public pricing page
Contextβ
What already exists in the codebaseβ
This proposal is 90% packaging decisions and 10% code, because the infrastructure is largely built:
| Capability | Location | Current state |
|---|---|---|
| Four-tier scaffold | src/services/constants/billing β PLAN_TIERS.tier1..tier4 | Defined. tier4 reserved for superAdmin. |
| Plan catalog | src/services/billing/catalog.js | 4 offers defined: FOUNDING_MONTHLY (legacy), STARTER_MONTHLY, GROWTH_MONTHLY, PRO_MONTHLY β mapped to tier1/tier1/tier2/tier3. |
| Feature registry | src/services/config/default-configs/feature-flags.js | ~30 module + sub-module flags. All GA, all default-on except jobs.liveUpdates.enabled (default-off). |
| Tier defaults | Same file, TIER_DEFAULTS | Empty { tier1: {}, tier2: {}, tier3: {}, tier4: {} }. This is the single lever this proposal fills in. |
| Entitlement evaluation | src/services/billing/index.js β buildBillingEntitlements | Returns monitorOnly: true, allowProductAccess: true. Nothing enforced today. |
| AI cost ceiling | aiAgent.monthlyCostCeilingUsd config block (proposed) | Part of the AI agent proposal. Reused here. |
| Industry vertical | Customer.appType | Already separate from tier. trucking / service / home-service. |
What the market charges todayβ
Verified against live pricing pages (April 2026):
Field service mid-marketβ
| Tool | Entry | Mid | Top |
|---|---|---|---|
| Jobber | Core $39/mo (1 user) | Connect Team $169/mo (5 users) | Grow Team $349 (10) Β· Plus $599 (15) |
| Housecall Pro | Basic $79/mo (1) | Essentials $189/mo (5) | MAX $329/mo (8), +$35/user |
| Workiz | Kickstart $225/mo (3) | Standard $275/mo (5) | Pro $325/mo (5) Β· Ultimate custom |
| Service Fusion | Starter $245/mo | Plus $382/mo | Pro $627/mo β unlimited users all tiers |
| ServiceM8 | Starter $29/mo (50 jobs) | Growing $79/mo (150) | Premium $149 (500) Β· Premium+ $349 (1500+) |
| FieldEdge | $100/mo office user + $125/mo field tech | β | Custom |
| ServiceTitan | Starter $245/tech/mo | Essentials $325/tech/mo | The Works $398+/tech/mo Β· $5kβ50k implementation Β· 12 mo minimum |
Trucking / TMSβ
| Tool | Pricing |
|---|---|
| Motive (KeepTruckin) | $20/truck Starter, $35/truck Pro + ELD hardware |
| Super Dispatch (Carrier Pro) | $55/seat/mo β counts dispatchers AND drivers |
| Truckbase | $290/mo minimum, annual |
| LoadPro | $60 owner-op Β· $400 small fleet Β· $750 mid Β· $1,250 large |
| Truckpedia | $239.99β$299/mo (up to 10 trucks), $30/extra truck |
Competitive takeawaysβ
- The $149β$349 band is the mid-market gravity well. Jobber Connect Team ($169), Housecall Essentials ($189), Workiz Standard ($275), Service Fusion Starter ($245). This is where 80% of field-service customers land.
- Service Fusion's unlimited-users angle is the single biggest pricing threat at $245/mo. Counter by making field users (drivers, techs) unlimited and only capping office seats β which matches our ICP's actual usage pattern.
- No incumbent bundles a conversational AI agent at mid-market prices. Workiz Pro ($325) bundles narrow AI (scheduling hints, AI phone answering) but not a full tool-using agent. This is our wedge.
- ServiceTitan is 10β30Γ more expensive with contracts and implementation fees. We win enterprise deals on price, speed-to-live, and modern UX.
- Trucking benchmark for our Growth tier is Truckpedia Professional ($239.99β$299 for up to 10 trucks) and Super Dispatch ($55 Γ 5 seats = $275). Our $249 Growth tier clears both.
Proposed public pricingβ
All prices in USD. Monthly billing; annual billing saves ~15% (implemented via a parallel Stripe price set, not in scope of this doc). Payment processing fees pass through at cost.
Tier 1 β Starter β $99/moβ
"Replace your spreadsheets."
- Office seats: 3 (admins, dispatchers, back-office)
- Driver seats: up to 25 on the mobile app
- Core modules on:
jobs,dispatch,schedule,clients,invoices,drivers,jobs.accessories,jobs.tasks,jobs.communications,jobs.legs,manifests. - Gated off:
jobs.liveUpdates,routing(route optimization),reportslimited to 3 saved reports,aiAgent, audit log viewing,settings.advanced,webhooks(outbound), public API tokens, custom notification templates beyond 5. - Support: Email, 48h business-day response.
- Annual equivalent: ~$84/mo ($1,008/yr).
Positioning vs market:
- Beats Jobber Core ($39, 1 user) and Housecall Pro Basic ($79, 1 user) on seats by 3Γ.
- Beats Workiz Kickstart ($225, 3 users, no driver cap framing) on price by 56%.
- Crushes Motive Pro ($35 Γ 25 trucks = $875) on cost by ~$776/mo β they charge per-truck, we charge a flat $99 for the same capacity.
- Beats Truckpedia ($239.99, 10 trucks) on price AND driver capacity (2.5Γ drivers).
- The 25-driver cap is intentional: it's a generous "serious small carrier" cap that discourages hobbyists while giving small fleets room to grow before upgrading.
Tier 2 β Growth β $249/moβ
"Run a real operation." β 80% of customers will land here.
- Office seats: 10
- Driver seats: unlimited
- Everything in Starter, plus:
jobs.liveUpdatesON (real-time job + leg updates)routing.enabledON (route mapping + mileage)reports.enabledfully on (unlimited saved reports)settings.taskTemplates,settings.notificationTemplatesunlimited- QR codes, public lead intake
- CSV export for accounting (QuickBooks-compatible). Two-way QuickBooks sync, outbound webhooks, and Google Calendar sync are deferred β see Feature Roadmap Index.
- Gated off:
aiAgent, audit log, SSO,settings.advanced, outbound webhooks, public API (read or write), QuickBooks two-way sync, Google Calendar sync. - Support: Email + chat, 24h business-day response.
- Annual equivalent: ~$212/mo ($2,544/yr).
Positioning vs market:
- Undercuts Jobber Grow Team ($349, 10 users) by $100 while matching seats.
- Beats Super Dispatch ($55/seat Γ 10 seats = $550) by $300 with unlimited drivers.
- Beats LoadPro Small Fleet ($400/mo) by $150.
- Beats Truckbase ($290 minimum, annual-only) by $40 with month-to-month flexibility.
Tier 3 β Pro β Waitlist (not self-serve in v1)β
"AI-powered dispatch."
Pro is a waitlist card on the public pricing page, not a self-serve plan, until the AI Agent is production-ready. The pricing page renders an AIWaitlistCard in the Pro slot that drops visitors into AIWaitlistModal (a thin wrapper over ContactModal that submits type: "ai_waitlist" leads). The planned self-serve price and scope when the card flips back on:
- Price at launch: $549/mo (subject to re-benchmarking once AI is in beta).
- Office seats: 25
- Driver seats: unlimited
- Everything in Growth, plus:
aiAgent.enabledON with $75/mo in bundled Anthropic tokens, overage metered at cost + 25% (per the AI agent proposal'smonthlyCostCeilingUsdmechanism)- Audit log access (
AuditLogmodel already landed β see security proposal) settings.advancedON- Priority integrations (QuickBooks Desktop, Stripe Connect, Twilio BYO)
- Deferred for v1, with build specs:
- Full public API (read + write) β Public API (v1)
- Outbound webhooks (unlimited endpoints) β Outbound Webhooks (v1)
- Google + Microsoft OAuth SSO β Google + Microsoft SSO (OAuth v1)
- Gated off: SAML SSO, dedicated CSM, custom uptime SLA, custom AI cost ceiling beyond default.
- Support at launch: Email + chat, 8h business-day response, priority queue.
- Annual equivalent at launch: ~$467/mo ($5,604/yr).
Why a waitlist card instead of self-serve:
- The AI Agent is still in active development. Listing Pro as a self-serve plan that advertises an AI-first experience would set expectations we can't meet.
- The waitlist captures warm leads, gives product a concrete cohort to invite into the private beta, and signals honestly that AI is Pro-exclusive when it ships.
- All waitlist leads land on
Leadwithtype: "ai_waitlist"so sales can segment them from general demo requests. Seeattunelogic-landing/src/pages/Home/AIWaitlistModal.jsxandattunelogic-api/src/models/Lead.js.
Positioning once Pro goes self-serve:
- Undercuts Jobber Plus ($599, 15 users, no AI) by $50 and adds 10 seats + AI.
- Beats Housecall MAX ($329, 8 users) at a higher price point with 3Γ seats + real AI.
- Massively undercuts ServiceTitan Essentials ($3,250/mo for 10 techs).
- This tier carries the margin. Sales conversations aim here.
Enterprise β Custom β starts at $1,500/moβ
"Run your fleet at scale."
- Unlimited office seats
- SAML SSO
- Custom AI monthly cost ceiling (negotiable, with platform-wide daily ceiling still enforced)
- Dedicated CSM + onboarding + training
- Uptime SLA (99.9% target)
- Custom integrations + custom contract
- Audit log retention + export guarantees
- Optional: private deployment, dedicated support Slack
Positioning: Massively below ServiceTitan ($20k/mo for a 50-tech shop), McLeod/Trimble ($5k+/mo). Win on price, speed-to-live, and modern UX.
Add-ons (independent of tier)β
| Add-on | Price | Notes |
|---|---|---|
| Extra office seat | $15/user/mo | Below Jobber ($29) and Housecall ($35). Below Super Dispatch ($55). |
| Extra driver seat (Starter only) | $5/driver/mo | Applies once you exceed 25 drivers on Starter. Most customers upgrade to Growth at this point. |
| AI token overage | Cost + 25% margin, metered | Pro tier only. Triggers circuit breaker at per-tenant ceiling. |
| QuickBooks CSV export | Included on Growth | Covers the common-case accounting handoff without the overhead of a two-way sync. Full QuickBooks sync is on the roadmap. |
| Premium integration pack | $49β99/mo each | Samsara, Geotab, specific ELD vendors. Roadmap. |
| Marketing automation | $79/mo | Roadmap. Parity with Jobber's Marketing Suite. |
| Dedicated phone line + SMS | $29/mo + usage | Competitive with ServiceM8 Phone ($19) β ship later. |
Google Calendar sync is not offered as a paid add-on in v1 β it's tracked on the roadmap with a build spec instead. See Google Calendar Sync (v1).
Grandfathering policyβ
- All
FOUNDING_MONTHLYcustomers are grandfathered at their current price FOREVER as long as the subscription remains continuously active. Code already marksFOUNDING_MONTHLYasisLegacy: true. STARTER_MONTHLY,GROWTH_MONTHLY,PRO_MONTHLYexisting customers (if any) stay at their current price for 12 months, then are given 60 days notice before being moved to the new equivalent tier.- Feature gating is not retroactively applied to grandfathered customers. They keep whatever modules they had access to on the day this proposal ships.
- Optional future bookkeeping:
billing.grandfathered+billing.grandfatheredUntilonCustomer.billingfor price cohorts (not yet required for launch). - Full product access (VIP / pilot / βnever tier-tiedβ) is implemented today as
Customer.grandfatherFullAccess(boolean): all GA flags resolve on, tier numeric caps treated as unlimited. Super Admin toggles it per tenant; see Tier deliverability.
Decisions this proposal locks inβ
These are the product decisions. All are reversible, but reversing any of them is more expensive than making them correctly now.
- Flat-per-tier with seat caps, NOT per-seat. Keeps invoices predictable for customers. Seat overage add-ons handle growth without forcing tier upgrades. Matches current
BILLING_MODEL.FLAT_ORG. - Driver seats are unlimited on Growth and Pro, capped at 25 on Starter. The Starter cap is generous enough for serious small carriers (most competitors charge per-truck or per-seat at this scale, meaning Starter is a massive discount vs. market) and acts as a natural upgrade prompt at the point customers start seeing clear ROI from the product.
- Office seats (dispatchers, admins, managers) are always capped. 3 / 10 / 25 across Starter / Growth / Pro.
- AI Agent is Pro-only with bundled tokens + metered overage. NOT pass-through-only (too much checkout friction), NOT fully-included-free (too much margin risk). Hybrid matches the infrastructure already designed.
- Core workflow modules are NEVER gated by tier.
jobs,dispatch,schedule,clients,invoices,jobs.legs,manifestsstay default-on for all paid tiers. Gating these would break the product. - Enterprise is not published. "Starts at $1,500/mo β contact sales."
- v1 public pricing is trucking-only. Service / repair / home-service verticals remain supported by the platform (via
Customer.appType) but are out of scope for public pricing and marketing until a v2 packaging pass. Service-only feature flags (jobs.quotes,inventory,employees,recipes) are not part of the v1 tier gating map.
Feature gating map (new TIER_DEFAULTS values)β
This is the minimal set of overrides to populate in src/services/config/default-configs/feature-flags.js. Everything not listed here keeps its registry default (mostly default-on).
const TIER_DEFAULTS = Object.freeze({
tier1: {
"jobs.liveUpdates.enabled": false,
"routing.enabled": false,
"reports.enabled": true, // limited by count server-side
"aiAgent.enabled": false,
"settings.advanced.enabled": false,
"audit.enabled": false, // new flag (Phase 1)
"api.public.enabled": false, // new flag (Phase 1)
"webhooks.outbound.enabled": false, // new flag (Phase 1)
"sso.enabled": false, // new flag (Phase 1)
},
tier2: {
"jobs.liveUpdates.enabled": true,
"routing.enabled": true,
"aiAgent.enabled": false,
"settings.advanced.enabled": false,
"audit.enabled": false,
"api.public.enabled": true, // read-only enforced in middleware
"webhooks.outbound.enabled": true, // capped at 5 endpoints
"sso.enabled": false,
},
tier3: {
"jobs.liveUpdates.enabled": true,
"routing.enabled": true,
"aiAgent.enabled": true,
"settings.advanced.enabled": true,
"audit.enabled": true,
"api.public.enabled": true, // read + write
"webhooks.outbound.enabled": true, // unlimited
"sso.enabled": true, // OAuth SSO (Google/MS). SAML = Enterprise.
},
tier4: {
// superAdmin-only, full unrestricted access. No changes needed.
},
});
New feature-flag keys to register in FEATURE_REGISTRY during Phase 1 of rollout:
aiAgent.enabled(beta, tenantAdminToggleable) β already planned in AI agent proposalaudit.enabled(GA, default false)api.public.enabled(GA, default false)webhooks.outbound.enabled(GA, default false)sso.enabled(GA, default false)
Seat caps and count-based limits (office seats, driver seats, saved reports, webhook endpoints, notification templates) are NOT feature flags β they're numeric limits enforced in the relevant controllers and surfaced through the tierLimits object returned by buildBillingEntitlements.
Driver-seat enforcement (Starter only) happens at driver creation time:
- On
POST /api/v1/drivers(or equivalent), count the tenant's active drivers via an indexed query scoped toparentCompany. - If
activeDriverCount >= tierLimits.driverSeatsandtierLimits.driverSeats !== null, return a 402 with a friendly upgrade message that links to the billing portal. - Soft-deleted drivers (
deletedAtset) do NOT count toward the cap. - Admins can still view and re-activate drivers above the cap (so downgrade scenarios don't brick the account), but cannot create new ones.
- The cap is advisory in monitor-only mode (Phase 1) β we log the intended block + metric but allow creation. Hard-block flips on in Phase 2 for new customers only.
Entitlement enforcement β staged rolloutβ
Current buildBillingEntitlements / getEntitlementsForCustomer return (v1 shipped shape):
{
monitorOnly: Boolean, // true when seat-cap mode !== "hard" (numeric caps advisory vs blocking)
seatCapEnforcementMode: "hard" | "monitor",
grandfatherFullAccess: Boolean, // Customer.grandfatherFullAccess β unlimited caps + GA-on resolver path
allowProductAccess: Boolean, // today: true unless billing attention logic evolves
requiresBillingAttention: Boolean, // e.g. past_due / canceled β surface in billing UI
planTier: "tier1" | "tier2" | "tier3" | "tier4",
releaseChannel: "stable" | "latest",
gatingSource: "planTier_and_featureFlags" | "grandfather_full_access",
tierLimits: {
officeSeats: Number | null,
driverSeats: Number | null,
savedReports: Number | null,
},
}
Same payload is attached to GET /api/v1/config as config.configs.billingEntitlements so web/mobile can show caps without an extra billing round-trip.
aiAllowance / AI metering remain future until the AI billing slice ships (see AI agent proposal).
webhookEndpointsandnotificationTemplateswere in an earlier draft oftierLimits. They stay out of v1 because outbound webhooks are deferred and template counts are not gated in product yet.
Phase gates for enforcementβ
- Phase 1 (current):
TIER_DEFAULTS+TIER_LIMITS+ seat/report enforcement paths; default monitor (monitorOnly: trueunless hard mode). Grandfather VIP viagrandfatherFullAccess. - Phase 2 (underway): Hard seat-cap enforcement available globally (
SEAT_CAP_HARD_ENFORCE) or per tenant (Customer.billing.enforcementMode, Super Admin UI + API merge). Next: pilot cohorts and Stripe/checkout alignmentβnot blocked on code. - Phase 3: 60-day notice to non-grandfathered legacy customers where needed. Founding (
isLegacy: true) price grandfather stays per policy.
AI Agent monetization specificsβ
Reuses the per-tenant aiAgent config block from the AI agent proposal:
| Setting | Pro default | Enterprise default | Notes |
|---|---|---|---|
monthlyTokenCap | Enforced via cost | Enforced via cost | Dollar-based ceiling is simpler to communicate |
monthlyCostCeilingUsd | 75 (included) | Negotiated | Hard cap. Requests beyond the cap return 402 with a friendly "upgrade for more capacity" message. |
perUserDailyMessageCap | 100 | Negotiated | Anti-abuse ceiling |
platformDailyCostCeilingUsd | 200 | 200 | Circuit breaker across ALL tenants |
Overage billing pattern:
- Per-tenant MTD spend tracked on
AgentSessionaggregation (already in plan). - At month-end, if
mtdUsageCostUsd > bundledCostUsd, emit an invoice line item at cost Γ 1.25 for the overage. - At 80% of ceiling, email the tenant admin; at 100%, the circuit breaker trips and the AI Agent returns 402 until the next billing cycle (or the tenant admin raises the ceiling via Stripe portal upgrade).
This protects us from runaway costs AND gives us an upsell moment.
Public pricing page (attunelogic-landing)β
Replacing the current single-flat-rate src/pages/Home/Pricing.jsx with a 2-tier self-serve ladder + AI Agent waitlist card + Enterprise row. The marketing page intentionally:
- Shows monthly prices by default with a toggle to annual (saves ~15%).
- Uses trucking-first copy (multi-leg jobs, manifests, BOL, drivers) β no technician/service mentions until the v2 packaging lands.
- Calls out the Starter driver cap inline in the seat copy line ("3 office users & up to 25 drivers"), and unlimited drivers on Growth.
- Replaces the self-serve Pro card with an
AIWaitlistCardthat drops visitors intoAIWaitlistModal. The copy is explicit that the AI Agent is coming soon and will be Pro-exclusive when it ships. - Routes Enterprise clicks into the existing
ContactModal, not a separate form. - Updates the FAQ "How is Attune Logic priced?" and adds "When does Pro with the AI Agent launch?" + "What's on the Attune Logic roadmap?" entries pointing at the Feature Roadmap Index.
- Removes any Growth bullets that referenced deferred features (QuickBooks sync, Google Calendar sync, outbound webhooks). Those live on the roadmap with dedicated build specs instead.
Rollout planβ
Week 1 β Decisions & documentation
- Founder sign-off on final numbers
- Publish enforcement map + pricing readiness (living doc)
- Update
FEATURE_REGISTRYwith deferred Phase-1 keys (audit, public API, webhooks, SSO) when those products ship β not blocking Starter/Growth truthfulness for v1 trucking
Week 2 β Infrastructure (no customer impact)
- Populate
TIER_DEFAULTS/TIER_LIMITS(minimal trucking ladder β see code; differs slightly from the aspirational map earlier in this doc) - Extend
buildBillingEntitlementswithtierLimits,seatCapEnforcementMode,grandfatherFullAccess; expose onGET /configasbillingEntitlements - Optional:
billing.grandfathered/grandfatheredUntilfor price cohort tracking (distinct fromgrandfatherFullAccess) - Add Stripe price IDs for new $99/$249 tiers (keep old prices for legacy SKUs)
- Deferred features: audit UI, public API, outbound webhooks, SSO β see Feature Roadmap Index
- Driver + office seat + saved-report cap enforcement (monitor by default; programmatic driver create included)
Week 3 β Public launch
- Ship
Pricing.jsxladder + AI waitlist + FAQ updates (attunelogic-landing) β verify against live flags - Announce to existing customers (grandfather / positioning email)
- Update
docs/customer/*onboarding docs with new tier copy
Week 4 β Enforcement (pilot / new customers)
- Hard vs monitor controls β env var,
billing.enforcementMode, Super Admin Settings; structuredtier_gatelogs (seat_cap_monitor,seat_cap_blocked,feature_disabled) - Config cache β
invalidateCustomerConfigCacheafter Stripe webhook saves soGET /config/billingEntitlementsmatch Stripe-syncedplanTierand billing status - Service app β toast on 402 +
TIER_LIMIT(upgrade prompt when hard enforcement blocks) - Pilot hard enforcement on selected tenants or post-cutover cohort (operational decision)
- Wire log aggregation / alerts on
tier_gate; watch support inbox, Sentry before expanding hard globally
Week 8 β A/B pricing test (optional)
- Run a 6-week A/B test on
attunelogic-landing: control ($99/$249/$549) vs variant ($79/$199/$449) - Measure: checkout conversion, 60-day retention, Pro-tier attach rate
- Decide to keep, adjust, or revert based on data
Risks and mitigationsβ
| Risk | Likelihood | Impact | Mitigation |
|---|---|---|---|
| Existing customers revolt when they see new pricing | Medium | High | Grandfather policy is generous and public. Email before they see the page. |
| AI Agent waitlist leads cool off before Pro launches | Medium | High | Quarterly-or-better product update emails to the waitlist; invite the most engaged carriers into the private beta early to keep the top of the funnel warm. |
| AI token costs exceed $75 bundle for heavy Pro users | Medium | Medium | Circuit breaker + 80%-of-ceiling email already planned. Overage is billable, not absorbed. |
| $99 Starter attracts high-support, low-retention buyers | Medium | Medium | Force Starter customers through self-serve onboarding only. No paid onboarding time below Growth. The 25-driver cap also screens out hobbyists. |
| Carriers hit the 25-driver Starter cap and downgrade instead of upgrading | Low | Medium | Upgrade prompt at 80% of cap (20 drivers) shows ROI-framed Growth comparison. The $5/driver overage add-on gives short-term flexibility before forcing the decision. |
| Per-truck competitors (Motive, Super Dispatch) poach small carriers | Low | Medium | Starter's 25-driver cap at $99 beats them on cost by 5Γ+. Train sales to lead with this comparison in the 5β20 truck segment. |
| Growth prospects who wanted QuickBooks / Google Calendar / webhooks leave for a competitor | Medium | Medium | CSV export + route mapping cover the most common asks today. Every deferred item has a public spec on the Feature Roadmap Index so prospects can see the plan; sales can capture the "must-have" answers to prioritize which spec we execute first. |
| Enterprise floor scares off mid-market buyers | Low | Low | Enterprise is hidden behind "Contact sales." Self-serve up to Growth; Pro is a waitlist CTA. |
| Sales team under-quotes Enterprise | High (always) | Medium | Publish an internal Enterprise pricing guide with floor by company size. Out of scope for this doc. |
| Service-vertical tenants (if any exist) are confused by trucking-only pricing page | Low | Low | appType !== "trucking" tenants get a different pricing view OR fall back to "Contact sales" during v1. Add a v2 pricing proposal once trucking ladder is validated. |
Cross-referencesβ
- Stripe plumbing: Stripe Billing Foundation β checkout sessions, webhooks, idempotency, feature gate service
- AI cost infrastructure: AI Agent for Trucking β v1 β per-tenant ceiling, circuit breaker, dry-run mode
- Deferred feature specs: Feature Roadmap Index, covering QuickBooks Sync, Google Calendar Sync, Outbound Webhooks, Public API, and Google + Microsoft SSO.
- Feature flag registry:
attunelogic-api/src/services/config/default-configs/feature-flags.js - Billing catalog:
attunelogic-api/src/services/billing/catalog.js - Entitlement evaluation:
attunelogic-api/src/services/billing/index.jsβbuildBillingEntitlements - Seat-cap middleware:
attunelogic-api/src/middlewares/requireSeatCap.js(evaluateSeatCap+buildSeatCapResponsehelpers used inline in theusers,drivers, andreportscontrollers) - Tier constants:
attunelogic-api/src/services/constants/billingβPLAN_TIERS,PLAN_KEYS - Public pricing surface:
attunelogic-landing/src/pages/Home/Pricing.jsx,attunelogic-landing/src/pages/Home/FAQs.jsx,attunelogic-landing/src/pages/Home/AIWaitlistModal.jsx