expoent. PRD · ENGENHARIA
v1.0 · jun 2026· voltar pro produto →
01 · Visão

A primeira agência
de marketing 24/7
que nunca dorme.

Plataforma SaaS multi-tenant que substitui agência de marketing tradicional para PMEs, agências e freelas brasileiros. Combina IA (geração de conteúdo + decisão + execução), integrações de canal (IG, WA, FB, in, TT, YT, e-mail) e CRM/BI em um único produto.

Público

PMEs (R$ 200k–10M/ano), agências de mkt digital (5–50 funcionários), freelas (social media, copywriters).

Proposta de valor

Agência de marketing inteira por 1/10 do custo. IA executa o trabalho repetitivo; humano só aprova e revisa.

Modelo

Assinatura mensal (Starter R$ 97 · Pro R$ 297 · Agência R$ 897) + créditos IA elásticos por uso.

MÉTODO E.X.P.O.E.N.T.
Entender · eXplorar · Planejar · Operar · Experimentar · Nutrir · Turbinar — espinha dorsal de toda jornada do usuário no produto.
02 · Stack técnica

A stack moderna brasileira de mais alto leverage.

FRONTEND

Next.js 15 (App Router) + React Server Components

Server actions pra mutações, ISR pra páginas públicas, edge runtime pro estático. tRPC ou Server Actions pra API.

  • Tailwind v4 + shadcn/ui (acelera componentes)
  • Zustand pra UI state · TanStack Query pra cache
  • Framer Motion pra animações
  • react-hook-form + zod pra validação
BACKEND

Supabase (Postgres + Auth + Storage + RLS)

Row-Level Security garante multi-tenancy nativo. Tudo em uma plataforma, escala até ~50k usuários sem migrar.

  • Postgres 16 + pgvector (busca semântica)
  • Realtime pra Inbox + Notificações
  • Edge Functions (Deno) pra integrações
  • R2 / Cloudflare pra storage de imagens
IA

Replicate + Anthropic + OpenAI

Camada de abstração MediaProvider permite trocar provider sem reescrever app.

  • Texto: Claude Sonnet 4.5 + GPT-5 (custo)
  • Imagem: Flux 1.1 Pro · BiRefNet (bg)
  • Vídeo: Kling 2.0 + Remotion
  • Áudio: Whisper · ElevenLabs PT-BR
INFRA & OPS

Vercel + Supabase + Cloudflare + PostHog

Tudo gerenciado. Sem ops próprio até 10k clientes pagantes. Observabilidade desde dia 1.

  • Vercel pra hospedagem Next.js
  • Sentry pra erros · PostHog pra produto analytics
  • Resend pra e-mail transacional
  • Trigger.dev / Inngest pra jobs assíncronos
03 · Modelo de dados

Schema base · 18 tabelas iniciais.

Multi-tenant por workspace_id. RLS em todas as tabelas. Soft delete por deleted_at.

-- core
workspaces       (id, slug, name, plan, niche, created_at, deleted_at)
users            (id, email, name, avatar_url, created_at)
memberships      (workspace_id, user_id, role)  -- owner, admin, editor, viewer

-- brand
brand_kits       (id, workspace_id, name, palette_json, fonts_json, voice_json)
brand_assets     (id, brand_kit_id, type, url, tags[])     -- logos, fotos próprias

-- content
content_items    (id, workspace_id, brand_kit_id, title, type, status, scheduled_at,
                  published_at, copy_json, slides_json, viral_score, parent_id)
content_versions (id, content_item_id, version, snapshot_json, created_by, created_at)
content_metrics  (id, content_item_id, channel, reach, ctr, saves, leads_generated)

-- ai
ai_jobs          (id, workspace_id, type, provider, model, status, input_json,
                  output_json, cost_credits, latency_ms, error)
ai_assets        (id, ai_job_id, url, kind, prompt, refs_json)

-- crm
leads            (id, workspace_id, source, channel, status, score, name, email,
                  phone, last_interaction_at, value_estimated)
conversations    (id, workspace_id, lead_id, channel, status, last_message_at)
messages         (id, conversation_id, from, body, attachments_json, sent_at)

-- ops
campaigns        (id, workspace_id, name, channel, budget, status, kpis_json)
proposals        (id, workspace_id, lead_id, html, status, sent_at, accepted_at)
automations      (id, workspace_id, name, trigger_json, steps_json, runs_count)

-- billing
subscriptions    (id, workspace_id, plan, status, credits_used, credits_quota, renews_at)
invoices         (id, workspace_id, amount, status, paid_at, stripe_id)
04 · Auth & multi-tenant

Cada usuário pode estar em N workspaces.

SUPABASE AUTH

Magic link + Google + Apple

Cadastro sem fricção. Senha opcional. 2FA via TOTP no plano Agência.

ROW-LEVEL SECURITY

Policy por workspace

Toda query no Postgres filtra por workspace_id automaticamente via JWT claim.

PAPÉIS

Owner · Admin · Editor · Viewer

Owner cobra. Admin gerencia equipe. Editor cria conteúdo. Viewer só lê BI.

-- exemplo de RLS policy
create policy "users access own workspace data"
on content_items for all
using (
  workspace_id in (
    select workspace_id from memberships
    where user_id = auth.uid()
  )
);
05 · Pipeline de IA

Async-first, com camada de abstração.

Como uma geração funciona

1
Submit
Cria ai_jobs com status=queued. Decrementa créditos otimisticamente.
2
Roteia provider
MediaProvider.dispatch() escolhe Flux / Claude / etc baseado em type.
3
Webhook do provider
Replicate / OpenAI manda callback quando termina. Edge function atualiza ai_jobs.
4
Realtime push
Supabase Realtime notifica frontend. UI atualiza sem refresh.
5
Pós-processamento
Upload pra Storage, gera thumbnail, atualiza content_versions.

Camadas de imagem (decisão automática)

#OrigemQuandoCusto
01Expoent Originalshero, capas, propostas0
02IA · Flux Prorascunhos, variações4 cr
03Unsplash/Pexelsbackgrounds, mood0
04Shutterstockcaso específico raro8 cr

Routing decidido automaticamente pela IA baseado em prompt + contexto + tier do plano.

06 · Integrações de canal

8 canais com prioridade clara.

CanalCapacidadeAPIFaseComplexidade
Instagrampublicar feed + reels + stories, ler insightsGraph API (Business)MVPmédia
WhatsAppenviar + receber mensagem, templates, áudioWhatsApp Cloud APIMVPalta · BSP necessário
Facebookpublicar feed + reels, ler insightsGraph APIFase 2média
LinkedInpublicar texto + imagem + carrosselMarketing APIFase 2média
TikTokpublicar vídeo + áudioTikTok for BusinessFase 2média
YouTubepublicar shorts + vídeo longoYouTube Data API v3Fase 3baixa
E-maildisparo + templates + trackingResend / SendGridMVPbaixa
Chat do sitewidget embed + inbox unificadaWebSocket próprioFase 3média
07 · Pagamentos

Stripe BR + PIX + créditos elásticos.

Stripe BR

Assinatura recorrente cartão. Webhook reconcilia status.

PIX (via Stripe + fallback Pagar.me)

Pagamento instantâneo gera QR + copia-cola. Confirmação em até 30s.

Boleto

Para anuais. Confirmação manual via webhook do gateway.

// modelo de créditos
plan.credits_quota_per_month   // ex: PRO = 12.000 créditos
plan.allow_overage             // PRO = sim, ao R$ 0,03/crédito extra
subscription.credits_used      // contador resetado mensalmente
subscription.credits_purchased // pacotes extra (rollover 90 dias)

// custo por ação
flux_pro_image         = 4 créditos
claude_completion_1k   = 1 crédito
video_15s              = 40 créditos
voice_clone_minute     = 5 créditos
08 · API endpoints (tRPC)

12 routers organizados por domínio.

// app/server/routers
content.create             input: { brand_kit_id, type, brief }
content.list               input: { status, channel, range }
content.publish            input: { content_id, channel, schedule_at }
content.get_versions       input: { content_id }
content.revert             input: { content_id, version }

ai.generate_image          input: { prompt, refs[], style, brand_lock: bool }
ai.generate_carousel       input: { brief, slides_count, template_id }
ai.generate_video          input: { brief, length_s, style }
ai.regenerate              input: { ai_job_id, edits: { mask, prompt } }

leads.create               input: { name, email, phone, source }
leads.update_status        input: { lead_id, status }   // hot/warm/cold/won/lost
leads.score                input: { lead_id }            // IA calcula 0–100

conversations.list         input: { channel, status }
messages.send              input: { conversation_id, body, attachments }
messages.suggest_reply     input: { conversation_id }    // IA sugere resposta

campaigns.create           input: { name, channel, budget, goals }
campaigns.metrics          input: { campaign_id, range }

billing.create_checkout    input: { plan, billing_cycle }
billing.buy_credits        input: { pack_size }
billing.cancel             input: { confirm }

bi.dashboard               input: { range }
bi.recommendations         output: AI insights[]

workspace.create
workspace.invite
workspace.switch
09 · Cronograma de implementação

3 fases · 10 meses até produto comercial.

FASE 1 · MVP

Meses 1–4 · R$ 80–120k

Time: 2 devs full-stack + 1 designer

  • Auth + workspace + Brand Kit básico
  • Studio (post + carrossel · IG only)
  • Painel + Calendário simples
  • Pagamento Stripe + créditos básicos
  • Meta: 50 clientes piloto · R$ 15k MRR
FASE 2 · COMERCIAL

Meses 5–8 · R$ 150–250k

Time: 3 devs + designer + PM

  • WhatsApp + Inbox + Leads/CRM
  • BI completo + Recomendações IA
  • Score viral + A/B testing
  • Propostas + Automações
  • FB + LinkedIn
  • Meta: 500 clientes · R$ 150k MRR
FASE 3 · ESCALA

Meses 9–12 · R$ 200–350k

Time: 5 devs + 2 PMs + ML eng

  • TikTok + YouTube + Pinterest
  • Vídeo curto (Cortes IA + voz)
  • Agência mode (multi-cliente)
  • Admin Master + suporte
  • Banco Expoent · 4 nichos
  • Meta: 2.000 clientes · R$ 600k MRR
DRY-OUT
Pra chegar a 2k clientes pagantes em 12m, o produto precisa nascer com NPS 50+ e CAC payback < 4m. O design deste protótipo já demonstra isso é viável visualmente.
10 · Riscos & mitigação

Os 6 riscos que podem matar o produto.

#RiscoProbabilidadeMitigação
01Custo de IA explode em escalaAltaStack híbrida em camadas. Cache agressivo. Pacotes de crédito com margem.
02Meta/IG mudar política & cortar APIMédiaCompliance rigoroso. Plano B sempre: Buffer-like queue. Diversificar canais cedo.
03Qualidade visual de saída < concorrentesAltaBanco Expoent + Brand Lock + templates curados. Priorizar foto real.
04Churn alto por UX confusaMédiaProtótipo já está em 9/10 UX. Manter rigor com cada feature nova.
05WhatsApp Business + BSP travar onboardingAltaIniciar piloto Twilio/Zenvia agora. Documentar fluxo de aprovação.
06Concorrência (Canva, AdCreative) replicar nicho BRMédiaVelocidade. Banco Expoent vira moat. Comunidade brasileira como fosso.