K
Kodama Vault
knowledge hub
Vault
HomeBoardMap of ContentChatConversasAuditoria
Agentes
AgentsIssuesTerminalPreviews
Sistema
MCPSetup MCPSettings
Brain
Global agent instructions
Análise custos migração — evitar senha no payloadLevantamento fluxo registro + duplicados StripeRelatório segurança + pentes finos (Cláudio)Revisão security concerns e race conditionsMagic link / esqueceu senha via SupabaseCorrigir erros pós-upgrade TypeScriptTestar PRs do agente Vault para mergeAnálise de 3 issues para iniciarErro no terminal do VSCodePR #173 — aguardando aprovação do LeoTestar fluxo ponta a ponta — criação de clients no StripePR #172 — testar e subir correção de funções deprecatedPitch de vendas SaaS — agendar call de conversãoOrganizar issues e bugs rápidos para a semanaMerge PR cadastro-novo — funcionalidades e correçõesCorrigir bugs PR #173 e #172 — image domainsPR mesosóico — página de acesso mobile + segurança OTPRefatoração de códigos — PR #202Ajustes em PRs abertos de ontemEstudo de jornada de compra e técnicas de fechamentoDefinir preço e entregável do produtoProspecção de reuniões para esta semanaAgente anti AI slop — centralização de conhecimento ConnfitPR #179 — resolver conflitos e erros de teste CLIAlinhamento de preços e usos da ConffitFix adicional para PR #183 — perfil do usuárioCorrigir estilização da Connfit para identidade visualSubir modificações no copy da ConnfitCriação de 4 campanhas no Meta AdsRevisão de PRs do GilinesExploração do Roblox EditorRelatório João — devolutiva TikTok ShopReunião presencial Zassi Uniformes — diagnóstico automaçõesCriar repositório de diagnósticos e relatórios de entrevistasDiagnóstico da ZassiGeração de relatórios para reuniões de fechamentoProposta Zassi — apresentação amanhãProspecção — Clínica Odontológica Dr. But
VPS Hermes — acesso e estrutura
Always Commit Push DeployHermes Voice GeminiHermes VPSKodama Prospects TrackerMEMORYObsidian VaultRoblox Mining Sim
OpenSpec -- Spec-Driven Development no VaultPlano de Teste — OpenSpec Vault Persistence
CaumzitoNyxzZanini
vek1 — arquiteturavek1 — autenticaçãovek1 — contextovek1 — regras de copy e marketingvek1 — modelo de dadosvek1 — decisões técnicasvek1 — domínio e modelo de negóciovek1 — featuresvek1 — gaps e riscosvek1 — gotchasvek1 — integrações externasvek1 — pricing design (Stripe sub + topup)vek1 — atividade recentevek1 — roteiro de vendas (SDR → fechamento)vek1 — estado e maturidadevek1 — Migração Evolution API → WhatsApp Cloud API (Meta oficial)
Claude Code — Setup MCP VaultClaude Desktop — Setup MCP Vault (remote)VS Code + Copilot — Setup MCP Vault
Skill — Carousel Designer (Paper Style)
Standup 2026-05-14Standup 2026-05-15Standup 2026-05-16Standup 2026-05-17Standup 2026-05-18Standup 2026-05-19Standup 2026-05-20Standup 2026-05-21Standup 2026-05-22Standup 2026-05-25Standup 2026-05-26Standup 2026-05-27Standup 2026-05-28Standup 2026-05-29Standup 2026-06-01Standup 2026-06-02Standup 2026-06-03Standup 2026-06-05Standup 2026-06-11Standup 2026-06-15Standup 2026-06-16Standup 2026-06-17Standups
MOCWelcome
v0.3
K
Kodama Vault
brain / projects / vek1

vek1 — pricing design (Stripe sub + topup)

Pricing — Stripe subscription + metered + topup

Originalmente spec em docs/superpowers/specs/2026-05-20-pricing-stripe-design.md.
Esta nota agora documenta o estado live em prod após PRs A→B→C+UI + premium positioning.

Status

LIVE em prod. Pricing operacional Starter R$ 199 / Pro R$ 599 / Business R$ 1.499. Stripe test mode atualmente (não live mode ainda).

Princípios da brainstorm (todos mantidos)

  • Modelo Anthropic: mensalidade com cota inclusa + overage metered acima da cota ✅
  • Cliente em controle: cap próprio de overage em R$ + topup avulso ✅
  • Stripe gateway vek ↔ lojista. AbacatePay intacto pro lojista ↔ cliente final ✅
  • Bônus 50% na primeira carga topup ever (em vez de trial) ✅
  • Sem gating de channels (WhatsApp + website em todos os planos) ✅

Tiers live (premium positioning — 2026-05-21)

Starter Pro Business
Mensalidade R$ 199 R$ 599 R$ 1.499
Lojas 1 3 ilimitadas
Agentes ativos 1 5 ilimitados
Produtos 100 5.000 ilimitados
Tokens inclusos / mês 1M 5M 30M
Overage / 1M tokens R$ 39 R$ 28 R$ 20

Conversas estimadas/mês (~1k tokens por mensagem):

  • Starter: ~1 mil conversas
  • Pro: ~5 mil
  • Business: ~30 mil

Pricing v1 (descontinuado, ainda existe no Stripe)

Pricing inicial era Starter R$ 79 / Pro R$ 299 / Business R$ 899. Subprecificado vs valor entregue (~2.5% capture vs custo CLT substituído). Premium positioning aplicado em PR #80 — Stripe Prices versionados _v2; v1 ainda existe pra subs pré-existentes.

Arquitetura (implementada)

  • Stripe Products (3) com metadata.slug — prod_UYOf5a6xvphEN8 (starter), prod_UYOgIwPK21JfGt (pro), prod_UYOgi2jFH6S7cd (business)
  • 6 Prices _v2 — recurring monthly + metered overage por tier
  • Meter vek1.tokens_consumed (sum aggregation, customer mapping by-id)
  • Customer 1:1 com company_profiles.id
  • Subscription com 2 items (recurring + metered) por company

Schema implementado (Drizzle)

4 tabelas em prod:

  • subscription_plans (espelho Stripe Price IDs)
  • company_subscriptions (status, period, plan FK, stripe_customer_id, stripe_subscription_id, cancel_at_period_end, trial_end)
  • company_billing_settings (overage_cap_cents, auto_overage_enabled, payment_method_id, grace_until + grace_started_at + grace_overage_charge_attempted_at, low_balance_alert_at_pct + alerted_at_{80,100,cap})
  • token_topups (stripe_payment_intent_id unique, amount_cents, tokens_credited com bônus 50%, tokens_remaining FIFO, bonus_applied_pct, status)
  • token_usage (alter): +billable, +topup_id, +reported_to_stripe_at

Caminho crítico (check_quota_or_block — implementado)

1. SELECT subscription. Status not in active/trialing → BLOCK
2. SELECT used (token_usage no current_period)
3. SELECT topup_remaining FIFO
4. available = included + topup_remaining
5. used < available → ALLOW + maybe_alert_80_pct
6. Overage zone:
   - overage_cents >= cap_cents → BLOCK (cap_reached)
   - auto_overage_enabled + dentro cap → ALLOW (overage_within_cap)
   - default (auto=false ou cap=0):
     - grace_until NULL → start grace 3-dias + email → ALLOW (grace_started)
     - now < grace_until → ALLOW (in_grace)
     - now >= grace_until → BLOCK + email (grace_expired)

Cache em memória TTL 30s não foi implementado (over-engineering por enquanto; load atual baixo).

Worker reporting Stripe (implementado)

apscheduler in-process no vek1-api, interval 5min (BILLING_REPORT_INTERVAL_MIN env). Função billing_service.report_usage_to_stripe():

  1. SELECT pending token_usage (reported_to_stripe_at IS NULL AND billable = true AND created_at < now() - 1min) agrupado por company
  2. Pra cada company com overage zone: stripe.billing.MeterEvent.create(event_name='vek1.tokens_consumed', payload={stripe_customer_id, value: million_units}, identifier=batch_min:max) (idempotency natural via identifier)
  3. UPDATE reported_to_stripe_at = now() nos rows incluídos

UI implementada

  • /pricing (pública) — tabela 3 tiers + ComparisonTable + CostCalculator + bônus callout + 6 vs pages links
  • /pricing/vs/[slug] (6 páginas SEO) — octadesk, socialhub, blip, zenvia, chatguru, wati
  • /onboarding/billing (wizard 3-step) — plano → cartão (Stripe Elements SetupIntent) → ativar (createSubscription)
  • /billing (internal, sidebar link no grupo Sistema) — plano + uso gauge + cap toggle + cartão + topup modal + plan switch + invoices Hosted URL

Endpoint público /billing/plans-public

vek1-api PR #26 adicionou sub-router público (sem auth) pra landing /pricing consumir via HTTPS em vez de TCP direto Postgres (firewall corporativo às vezes bloqueia 5434). Retorna só campos não-sensíveis (sem stripe_*_id, sem timestamps).

Out of scope (Fase 1) — ainda válido pra fase 3+

  • Anual com desconto
  • Coupons / promo codes
  • Team seats / multi-user por company
  • NFSe
  • Customer Portal Stripe self-serve (UI custom fica)
  • Migration cobrança beta legacy automática
notas relacionadas
carregando…