Documento de escopo técnico · v1.0

Destino Certo Viagens e Entregas: passageiro, motorista e painel admin, no padrão 99/Uber.

Escopo funcional das três frentes, arquitetura recomendada, fluxo técnico de cotação e despacho, principais riscos do negócio e um roadmap de entrega realista para operar no Brasil (Pix, EAR, LGPD, Lei 13.640/2018).

3frentes de produto
13serviços de domínio
<10smeta p/ 1ª oferta ao motorista
~16 sem.MVP em 1 cidade
01

Escopo funcional

Módulos por aplicativo, com prioridade de entrega (MVP = lançamento, V2 = evolução) e notas de implementação.

Cadastro e login MVP

  • Login por telefone com código SMS (Firebase Auth Phone)
  • Google Sign-In e Sign in with Apple (a Apple exige o login dela quando o app oferece login social)
  • Coleta de nome, e-mail e CPF (necessário para Pix e antifraude)
  • Aceite de termos e consentimento LGPD com versionamento
  • Sessão por token do Firebase trocado por JWT do backend, com renovação automática
Nota: o token do Firebase só confirma a identidade. Permissões e perfis ficam no serviço de identidade próprio.

Mapa, origem e destino MVP

  • Localização atual com GPS e endereço aproximado pelas coordenadas (geocodificação reversa)
  • Busca de endereço com autocomplete (Places API com session token, para pagar por sessão)
  • Pin arrastável e pontos de embarque sugeridos
  • Endereços favoritos (Casa, Trabalho) e buscas recentes
  • Motoristas próximos animados no mapa

Cotação e categorias MVP

  • Rota calculada com trânsito em tempo real (Routes API)
  • Preço e tempo até o embarque por categoria: Moto, Econômico, Comum, Conforto
  • Preço fixo garantido, válido por 3 a 5 minutos (quote token assinado)
  • Aviso visível quando o preço dinâmico está ativo, com multiplicador
  • Cupom aplicado na própria cotação

Múltiplas paradas MVP

  • Até 3 paradas intermediárias, com reordenação por arrastar
  • Rota recalculada com waypoints e novo preço
  • Tempo de espera tolerado por parada, com cobrança configurável no admin
  • Inclusão ou alteração de parada durante a corrida, com aceite do motorista

Pagamentos MVP

  • Dinheiro: o motorista confirma o recebimento ao finalizar
  • Pix nativo: QR Code e copia-e-cola gerados pelo PSP, com confirmação por webhook (pré-pagamento ou cobrança ao final)
  • Cartão de crédito: tokenizado no gateway (PCI fora do seu escopo), pré-autorização ao pedir e captura ao finalizar, com 3DS quando necessário
  • Carteira: saldo, cashback e recarga via Pix
  • Troca automática para outro método se o pagamento falhar

Segurança MVP

  • Botão de pânico: liga para o 190, alerta a central do admin e envia localização em tempo real aos contatos de confiança
  • Compartilhar rota: link público com token que expira no fim da corrida
  • Selfie com prova de vida no cadastro e aleatória em contas de risco
  • Código PIN de 4 dígitos para iniciar a corrida (evita embarcar no carro errado)
  • Alerta automático de desvio de rota ou parada longa sem motivo
V2: gravação de áudio criptografada durante a corrida.

Histórico e avaliação MVP

  • Histórico com mapa do trajeto, valores e recibo por e-mail ou PDF
  • Avaliação de 1 a 5 estrelas com tags (limpeza, direção, rota…)
  • Gorjeta pós-corrida (Pix, cartão ou carteira)
  • Reportar problema, contestar valor, achados e perdidos
  • Marcar Motorista Favorito

Comunicação MVP

  • Chat dentro do app com o motorista (mensagens rápidas prontas)
  • Ligação com número mascarado (VoIP ou número intermediário)
  • Notificações push em cada mudança de status
V2: agendamento de corrida e perfil corporativo (empresa paga).

Cadastro rigoroso (KYC) MVP

  • Dados pessoais, CPF e endereço
  • CNH com observação EAR: leitura automática do documento (OCR) e validação da biometria e dos dados (Serpro Datavalid)
  • CRLV: placa, ano mínimo por categoria, situação do veículo
  • Fotos do veículo, antecedentes criminais e consulta de restrições
  • Chave Pix ou conta bancária para repasse
  • Status do cadastro: pendente, em análise, aprovado ou reprovado (com motivo e reenvio)

Selfie diária MVP

  • Selfie com prova de vida obrigatória antes do primeiro "ficar online" do dia
  • Comparação do rosto com a foto da CNH e com o cadastro
  • Revalidação aleatória durante o turno (contra conta compartilhada ou alugada)
  • Bloqueio após N falhas e envio para revisão manual no admin
Fornecedores: Unico Check, idwall ou AWS Rekognition com detecção de prova de vida.

Online e tela de oferta MVP

  • Botão online/offline com localização em segundo plano (serviço em primeiro plano no Android)
  • Oferta com contagem regressiva de 15s mostrando: distância e tempo até o passageiro, destino (bairro), ganho estimado líquido, avaliação e nº de corridas do passageiro, forma de pagamento e paradas
  • Aceitar ou recusar com som e vibração em destaque
  • Preferências: aceita dinheiro, categorias, filtro "indo para casa"

Navegação e execução MVP

  • Navegação dentro do app (Google Navigation SDK ou Mapbox Navigation)
  • Atalho para abrir o Waze ou o Google Maps com o destino já preenchido
  • "Cheguei" com contador de espera e taxa de no-show
  • Início com o PIN do passageiro, paradas e finalização
  • Confirmação de valor recebido em dinheiro

Painel financeiro MVP

  • Ganhos diários, semanais e mensais em gráfico
  • Detalhe por corrida: valor bruto, taxa da plataforma e líquido
  • Taxa de aceitação e de cancelamento, avaliação média
  • Saldo disponível e saque via Pix (D+0 com taxa ou D+1 grátis)
  • Histórico de repasses e débitos de corridas pagas em dinheiro

Metas e incentivos MVP

  • Metas do dia: "Faça 15 corridas até 22h e ganhe R$ 40"
  • Barra de progresso em tempo real e bônus pago automaticamente
  • Regras de elegibilidade: aceitação mínima, cidade, categoria
  • Mapa de calor das regiões com mais pedidos e preço dinâmico
V2: níveis do motorista (Bronze, Prata, Ouro) com benefícios.

Relacionamento MVP

  • Chat interno com o passageiro (respostas rápidas para não digitar dirigindo)
  • Motorista Favorito: passageiros que favoritaram o motorista recebem prioridade no despacho quando ele está próximo
  • Avaliação do passageiro
  • Central de suporte e de incidentes

Painel de indicadores MVP

  • Corridas ativas, motoristas online e ocupados
  • Volume bruto transacionado (GMV), receita da plataforma, ticket médio
  • Conversão de pedidos (pedidos → aceitos → concluídos)
  • Tempo médio de espera e taxa de cancelamento

Gestão de motoristas MVP

  • Fila de aprovação com visualização dos documentos e resultado do KYC
  • Aprovar ou reprovar com motivo padronizado
  • Bloqueio temporário ou permanente, desbloqueio com registro
  • Alertas de CNH ou CRLV vencendo
  • Revisão manual de selfies reprovadas

Tarifas flexíveis MVP

  • Por cidade e categoria: taxa base, R$/km, R$/min, tarifa mínima
  • Preço dinâmico: regras por região, horário e oferta/demanda, com teto máximo
  • Taxa e limite de cancelamento: janela grátis, valor, limite diário antes de bloqueio
  • Comissão da plataforma (%) e tempo de espera
  • Tabelas com versão e data de vigência, para auditoria

Monitoramento em tempo real MVP

  • Mapa da cidade com motoristas (livre ou ocupado) e corridas em andamento
  • Mapa de calor de demanda e de pedidos sem motorista
  • Detalhe da corrida ao clicar: rota, status, partes envolvidas
  • Alertas de pânico em destaque, com som e protocolo de atendimento

Gestão financeira MVP

  • Saques dos motoristas: aprovação, lotes, status do Pix
  • Conciliação com o gateway (cobrado × capturado × repassado)
  • Cupons: valor fixo ou %, limite de uso, validade, primeira corrida, segmento
  • Taxas da plataforma, reembolsos e estornos
  • Relatórios exportáveis em CSV

Operação e governança MVP

  • Perfis de acesso (Admin, Financeiro, Operações, Suporte)
  • Log de auditoria de toda ação sensível
  • Áreas de operação desenhadas no mapa por cidade
  • Tickets de suporte e gestão de passageiros
V2: campanhas de push segmentadas, testes A/B de preço, BI avançado.
A

Arquitetura tecnológica sugerida

Monólito modular no MVP, com o serviço de localização e despacho separado desde o primeiro dia: é a parte com mais carga e mais crítica. Os demais módulos viram microsserviços conforme a escala.

Clientes
App PassageiroFlutter · iOS/Android
App MotoristaFlutter + módulos nativos (localização em 2º plano)
Painel AdminNext.js · React · TypeScript
↓ HTTPS / WebSocket / MQTT ↓
Borda
API GatewayAutenticação JWT, limite de requisições, versionamento
Realtime GatewayWebSocket / MQTT (EMQX) para GPS e eventos
CDN + WAFCloudFront / Cloudflare
↓
Serviços
Identityauth, perfis, permissões
Locationingestão de GPS · Go
Dispatchbusca e despacho · Go
Pricingcotação e dinâmico
Tripciclo de vida da corrida
Paymentgateway, Pix, webhooks
Wallet / Ledgerrazão contábil de partidas dobradas
KYC / Onboardingdocumentos, selfie
Safetypânico, compartilhamento
Chatmensagens em tempo real
Promotionscupons, metas
Notificationpush, SMS, e-mail
Admin / BIbackoffice, relatórios
↓ eventos via Kafka / fila ↓
Dados
PostgreSQL + PostGISdados principais e consultas geográficas
RedisGEO / H3, travas, sessões, cache
Kafkaeventos de corrida e GPS
S3documentos e selfies (criptografados)
ClickHouse / BigQueryanálises e trajetos
↔
Externos
Google Maps PlatformRoutes, Places, Navigation SDK
Gateway / PSPPagar.me · Mercado Pago · Asaas · Efí
FirebaseAuth, FCM, Crashlytics
KYCUnico · idwall · Serpro
TelefoniaTwilio / Zenvia (SMS, número mascarado)
CamadaRecomendaçãoAlternativasJustificativa
MobileFlutter (Dart), código compartilhado entre os 2 appsReact Native · Kotlin + Swift nativosUm único time para iOS e Android e bom desempenho em mapas. A localização em segundo plano do motorista fica em canais nativos (Kotlin/Swift).
Backend principalNode.js + NestJS (TypeScript)Java/Kotlin Spring · .NETProdutividade, tipagem compartilhada com o painel admin e ecossistema amplo de SDKs de pagamento.
Localização e despachoGoRust · ElixirMuitas conexões simultâneas, baixa latência e consumo de memória previsível para milhares de pings de GPS por segundo.
Painel adminNext.js + React, Mapbox GL / deck.glVue/Nuxt · Angulardeck.gl desenha milhares de veículos se movendo no mapa sem travar.
Banco principalPostgreSQL 16 + PostGISAurora PostgreSQL · CockroachDBTransações para corridas e financeiro, consultas geográficas (áreas de operação, regiões de preço) e JSONB para configurações.
Tempo real / cacheRedis (GEO + índice H3)KeyDB · DragonflyPosição atual de cada motorista em memória, busca por raio em milissegundos e travas de oferta com expiração automática.
MensageriaKafka (ou RabbitMQ no MVP)AWS SQS/SNS · NATSDesacopla Trip, Payment, Notification e analytics, com histórico de eventos para auditoria.
Tempo real no appWebSocket + MQTT para o GPS do motoristaSocket.IO · Firebase Realtime DBMQTT consome pouca bateria e banda, e se reconecta bem em redes 3G/4G instáveis.
MapasGoogle Maps Platform: Routes API (computeRoutes e computeRouteMatrix), Places Autocomplete, Geocoding, Navigation SDKMapbox · HERE · OSRM/Valhalla própriosMelhor qualidade de endereços no Brasil. OSRM próprio para os cálculos de tempo internos, mais baratos (ver Desafios).
PagamentosPagar.me ou Mercado Pago (cartão + Pix + split); Efí/Asaas para Pix e saquesStripe (Pix BR) · Iugu · ZoopPix nativo com webhook, tokenização de cartão, pré-autorização e split por subconta: o motorista recebe direto, sem a plataforma virar instituição de pagamento.
AuthFirebase Auth (telefone, Google, Apple) + JWT próprioAuth0 · Cognito · Supabase AuthLogin por SMS pronto e barato, com proteção contra abuso (reCAPTCHA / App Check).
KYC e biometriaUnico Check ou idwall + Serpro DatavalidAWS Rekognition · CAFProva de vida certificada, comparação com a base oficial da CNH e consulta de antecedentes.
Infra e observabilidadeAWS (EKS, RDS, ElastiCache, MSK, S3) + Terraform; OpenTelemetry, Grafana, SentryGCP (GKE, Cloud SQL) · AzureRegião sa-east-1 (São Paulo) para baixa latência e LGPD. Autoescala do despacho nos horários de pico.
B

Fluxo lógico: cotação e despacho

Passo a passo técnico desde o "para onde vamos?" até o repasse ao motorista. Meta de desempenho: cotação em menos de 800 ms e primeira oferta ao motorista em menos de 10 s.

QUOTED→ REQUESTED→ SEARCHING→ OFFERED→ ACCEPTED→ DRIVER_ARRIVING→ DRIVER_ARRIVED→ IN_PROGRESS→ COMPLETED→ PAID | NO_DRIVERSCANCELLED_RIDERCANCELLED_DRIVERNO_SHOW
1

Ingestão contínua da localização dos motoristas

Com o motorista online, o app envia a posição GPS a cada 3–5 s (ou a cada 20 m percorridos) via MQTT/WebSocket. O serviço Location descarta pontos impossíveis (salto de velocidade, precisão ruim, GPS falso) e grava:

  • GEOADD drivers:{cidade}:{categoria} no Redis: posição atual
  • Índice H3 res 8 → set de driver_ids para buscar por células hexagonais vizinhas
  • driver:{id}:state com disponibilidade, categoria, se aceita dinheiro, horário do último ping (expira em 30 s; sem ping = offline)
  • Evento em Kafka para guardar o trajeto e alimentar o preço dinâmico
2

Passageiro define origem, destino e paradas

Autocomplete (Places com session token) e geocodificação reversa da posição atual. A origem é ajustada para o ponto de embarque mais próximo (uma via, não o meio de um quarteirão). As paradas entram como waypoints.

3

Cotação (Pricing Service)

  • Chama Routes API computeRoutes com trânsito e waypoints → distância (km) e duração (min). Cache por par origem/destino arredondado a cerca de 100 m, por alguns minutos.
  • Para cada categoria: tarifa = max(mínima, (base + km·R$km + min·R$min + paradas) × dinâmico) − cupom
  • O multiplicador dinâmico vem da célula H3 da origem: razão entre pedidos e motoristas livres nos últimos 5 min, suavizada e limitada ao teto do admin.
  • Tempo até o embarque por categoria: estimado pelos motoristas livres mais próximos no índice H3.
  • Devolve um quote_token assinado (HMAC) com preço, rota, categoria e validade de 3–5 min. O backend nunca confia em preço enviado pelo app.
4

Confirmação do pedido

  • O app envia POST /trips com o quote_token e uma chave de idempotência (toque duplo não cria duas corridas).
  • Verificações: token válido, passageiro sem bloqueio, sem corrida ativa, selfie em dia se exigida.
  • Pagamento: cartão → pré-autorização do valor + margem de segurança; Pix pré-pago → gera a cobrança e só despacha após o webhook de pago; carteira → reserva o saldo; dinheiro → só marca a corrida.
  • A corrida é criada como REQUESTED → SEARCHING e o evento trip.requested é publicado.
5

Busca de candidatos (Dispatch Service)

  • Busca em anéis H3 ao redor da origem, do mais próximo ao mais distante (k = 1, 2, 3…), até achar pelo menos N candidatos (ex.: 15) ou atingir o raio máximo da categoria (ex.: 3 km para carro, 2 km para moto).
  • Filtros: online e livre, categoria compatível, documentos válidos, selfie do dia aprovada, aceita a forma de pagamento, não recusou esta corrida, não bloqueado pelo passageiro, filtro de destino respeitado.
  • Pré-ranking barato: distância em linha reta (Haversine) para ficar com os 10 melhores.
  • Tempo real de chegada: uma única chamada computeRouteMatrix (10 origens × 1 destino), ou o OSRM próprio para economizar.
6

Pontuação e escolha

O tempo até o passageiro pesa mais, mas não decide sozinho. A nota equilibra eficiência, qualidade e justiça entre motoristas:

score = 0.60·norm(ETA)              // menor tempo de chegada = melhor
      + 0.15·(1 − taxa_aceitação)  // favorece quem costuma aceitar
      + 0.10·norm(5 − avaliação)
      − 0.10·norm(tempo_ocioso)     // justiça: quem espera há mais tempo
      − 0.15·favorito              // bônus "Motorista Favorito"
// menor score vence · pesos configuráveis no admin e testados via A/B

Em pico, o modo batch matching junta os pedidos de uma janela de 2 s e resolve todos ao mesmo tempo (algoritmo Húngaro, que minimiza o tempo total de chegada da cidade). Isso evita que um pedido "roube" o único motorista próximo de outro.

7

Oferta com trava exclusiva

  • SET offer_lock:{driver_id} {trip_id} NX EX 17: o motorista recebe uma oferta por vez, e a trava expira sozinha.
  • A oferta segue pelo WebSocket. Push de alta prioridade (FCM/APNs) como reserva caso o app esteja em segundo plano.
  • Contagem regressiva de 15 s. Recusa ou tempo esgotado → próximo candidato da lista. A recusa conta na taxa de aceitação.
  • Sem candidatos → amplia o raio. Depois de cerca de 3 min ou N tentativas → NO_DRIVERS: libera a pré-autorização e avisa o passageiro.
8

Aceite atômico

Transição feita no banco com controle de concorrência. Garante que só um motorista fique com a corrida, mesmo com aceites simultâneos ou o passageiro cancelando no mesmo segundo:

UPDATE trips SET status='ACCEPTED', driver_id=$1, accepted_at=now(), version=version+1
WHERE id=$2 AND status IN ('SEARCHING','OFFERED') AND version=$3
RETURNING *;   -- 0 linhas = já foi aceita/cancelada → responde 409 ao app

Depois: marca o motorista como ocupado, libera a trava, avisa o passageiro (dados do motorista, placa, PIN, tempo de chegada) e abre o canal de chat e de acompanhamento.

9

Execução, finalização e liquidação

  • A posição do motorista é retransmitida ao passageiro e ao link de compartilhamento (com limite de frequência). O tempo de chegada é recalculado a cada ~30 s.
  • Com "Cheguei", começa o tempo de espera grátis. O PIN do passageiro inicia a corrida (IN_PROGRESS).
  • O Safety monitora desvio de rota (distância até a polyline acima de X m) e paradas acima de N min, e pergunta ao passageiro se está tudo bem.
  • Na finalização, o trajeto real é ajustado às vias (map matching). O preço cotado é mantido, salvo mudança de destino ou paradas, ou desvio acima de 20%: aí recalcula pela distância e tempo reais.
  • Pagamento: cartão captura o valor, carteira debita, Pix confirma, dinheiro gera débito da comissão na conta do motorista.
  • Ledger de partidas dobradas: débito do passageiro → crédito do motorista (líquido) + crédito da receita da plataforma, todos no mesmo trip_id e de forma imutável.
  • Avaliações, progresso de metas, recibo por e-mail e eventos para o BI.

Simulador do motor de preço

Fórmula do passo 3 com valores de exemplo por categoria. No produto final, esses parâmetros vêm do Painel Admin.

PREÇO PARA O PASSAGEIRO
R$ 0,00
C

Principais desafios técnicos e como superá-los

Onde apps de mobilidade costumam falhar em produção, e as decisões de engenharia e de produto que reduzem esses riscos.

📡

Volume de GPS e escala do tempo real

5 mil motoristas a cada 4 s = 1.250 gravações/s, além da retransmissão aos passageiros.

Como superar

  • Posição atual só em memória (Redis GEO/H3). O histórico vai em lote para o Kafka e depois para o ClickHouse, nunca linha a linha no Postgres.
  • Frequência adaptativa: 3 s em corrida, 8–10 s parado ou livre.
  • MQTT com QoS 0 para posição e WebSocket só para eventos.
  • Despacho dividido por cidade ou região para escalar horizontalmente.
⚔️

Concorrência no despacho

Dois motoristas aceitam a mesma corrida, ou um motorista recebe duas ofertas ao mesmo tempo.

Como superar

  • Trava exclusiva por motorista (Redis SET NX com expiração).
  • Transição de estado com versão no banco (UPDATE … WHERE status AND version).
  • Chave de idempotência em todo POST de corrida, aceite e pagamento.
  • Máquina de estados única no serviço Trip: nenhum outro serviço muda o status direto.
💸

Custo das APIs de mapas

Cotações, tempos de chegada e autocomplete podem passar de R$ 0,20 por corrida e destruir a margem.

Como superar

  • Session tokens no Places (paga-se por sessão, não por letra digitada).
  • Filtro prévio por distância em linha reta antes da matriz de rotas.
  • OSRM ou Valhalla próprio com mapas do OpenStreetMap para tempos internos. Google só na cotação exibida e na navegação.
  • Cache de rotas por par de células H3 e faixa de horário.
🛰️

GPS impreciso e GPS falso

Sinal ruim em túneis e entre prédios, além de motoristas usando apps de localização falsa para ganhar despacho ou inflar a corrida.

Como superar

  • Filtro de Kalman e ajuste às vias (map matching) no fim da corrida.
  • Detecção de localização simulada no Android, root/jailbreak, Play Integrity e App Attest.
  • Validação de velocidade entre pontos (saltos impossíveis = descarte e alerta).
  • Preço fixo na cotação: elimina o incentivo para dar voltas.
🏦

Pagamentos, Pix e conciliação

Webhook atrasado ou duplicado, chargeback, fraude com cartão roubado e diferenças no repasse.

Como superar

  • Ledger de partidas dobradas e imutável como fonte única de saldos.
  • Webhooks com validação de assinatura, processamento idempotente pelo ID do evento e consulta ativa ao PSP como reserva.
  • Split por subconta no PSP: a plataforma não guarda dinheiro de terceiros (evita exigências de instituição de pagamento do Banco Central).
  • Antifraude do gateway, 3DS em cartões novos, limites para contas novas e conciliação diária automática.
💵

Corridas em dinheiro

O motorista recebe 100% em mãos e passa a dever a comissão à plataforma.

Como superar

  • Saldo do motorista pode ficar negativo, com desconto automático nos próximos repasses digitais.
  • Limite de dívida: ao atingir o teto, deixa de receber corridas em dinheiro até pagar via Pix.
  • Incentivar pagamento digital com cashback e cupons exclusivos para Pix.
🛡️

Segurança e LGPD

Biometria é dado pessoal sensível, e o botão de pânico precisa funcionar sempre.

Como superar

  • Consentimento específico para biometria, retenção mínima, criptografia (KMS) e acesso auditado a documentos.
  • Pânico com caminho redundante: WebSocket, HTTP e SMS de reserva. Fila prioritária no admin com tempo de resposta definido.
  • Telefone mascarado e endereço exato oculto após a corrida.
  • Encarregado de dados (DPO), relatório de impacto (RIPD) e canal de exclusão de conta (exigido pelas lojas).
🔋

Localização em segundo plano e rede instável

Android (economia de bateria e restrições de fabricantes) e iOS encerram apps em segundo plano. O 4G oscila.

Como superar

  • Serviço em primeiro plano com notificação fixa no Android e Significant Location Changes + modo navegação no iOS.
  • Guia no app para desativar a otimização de bateria (Xiaomi, Samsung…).
  • Fila local de eventos quando sem sinal: a corrida pode terminar sem internet e sincroniza depois.
  • Reconexão automática com recuperação de estado (GET /trips/active).
⚖️

Oferta × demanda e início de operação

Sem motoristas, o passageiro não volta. Sem passageiros, o motorista sai da plataforma.

Como superar

  • Lançar em uma cidade, com área de operação limitada, para concentrar a densidade.
  • Comissão reduzida e ganho mínimo garantido por hora nos primeiros meses para motoristas.
  • Metas diárias e mapa de calor para posicionar a frota.
  • Preço dinâmico com teto e explicação clara, para não afastar passageiros.
🚫

Cancelamentos e no-show

Motoristas que aceitam e cancelam ("escolhendo corrida") e passageiros que não aparecem.

Como superar

  • Destino visível na oferta: reduz cancelamentos depois do aceite.
  • Janela grátis de 2 min para o passageiro e taxa depois disso, repassada ao motorista.
  • Limite de cancelamentos do motorista com bloqueio temporário progressivo (configurado no admin).
  • Despacho automático de outro motorista, com prioridade, quando o motorista cancela.
📜

Regulação e tributação

Lei 13.640/2018 e leis municipais: EAR, cadastro na prefeitura e taxa por km em algumas capitais.

Como superar

  • Regras e taxas configuráveis por cidade (o modelo de dados já nasce multicidade).
  • Exportação de relatórios de viagens exigidos pelas prefeituras.
  • Recibos detalhados e emissão de nota fiscal de serviço (NFS-e) da comissão.
  • Assessoria jurídica para o modelo de vínculo do motorista e seguro de acidentes pessoais por corrida.
📈

Confiabilidade e observabilidade

Cinco minutos fora do ar em uma sexta às 18h = milhares de corridas e motoristas perdidos.

Como superar

  • Metas de disponibilidade (SLOs) para cotação, despacho e pagamento, com alertas por taxa de erro e latência.
  • Rastreamento distribuído (OpenTelemetry) seguindo o trip_id de ponta a ponta.
  • Feature flags e liberação gradual de versões, com ativação remota de novas regras nos apps.
  • Testes de carga simulando o pico (k6 + simulador de frota de motoristas).
→

Roadmap sugerido de entrega

Lançamento em uma cidade-piloto, crescimento guiado por métricas (conversão de pedidos, tempo de espera, retenção de motoristas).

FASE 1 · SEMANAS 1–16

MVP em cidade-piloto

  • Login por telefone, Google e Apple
  • Cotação, 2 categorias (Econômico, Moto) e paradas
  • Despacho sequencial com H3 + trava exclusiva
  • Dinheiro, Pix e cartão, com ledger
  • KYC do motorista e selfie diária
  • Pânico, compartilhamento de rota, PIN
  • Admin: aprovação, tarifas, mapa ao vivo, saques
FASE 2 · SEMANAS 17–28

Escala e retenção

  • Categorias Comum e Conforto
  • Preço dinâmico automático por H3
  • Metas, incentivos e mapa de calor
  • Carteira, cashback e cupons segmentados
  • Motorista Favorito e chat completo
  • OSRM próprio para reduzir custo de mapas
FASE 3 · SEMANA 29+

Expansão

  • Despacho em lote com otimização global
  • Multicidade com regras locais
  • Corridas agendadas e perfil corporativo
  • Gravação de áudio e IA antifraude
  • Entregas e logística (mesma base de despacho)
Time do MVP: 1 PM1 Product Designer3 Mobile (Flutter)3 Backend (Node + Go)1 Front-end (Admin)1 DevOps/SRE1–2 QA
Made with wish4