PROJETO

AiValeu

Plataforma de Yield Management. CAC Zero. Descoberta Gastronômica.

Faz scroll para explorar

As Personas

O Caçador (Free)

Sensível ao preço. Utiliza a plataforma pontualmente e acumula créditos através do sistema de Referral (Member-Get-Member).

O Connoisseur (Premium)

Procura conveniência. Paga assinatura mensal (MRR) para ter acesso sem fricção e sem precisar de indicar amigos.

A Regra de Ouro

6

Meses de Recorrência

Um utilizador só pode usar um benefício no mesmo restaurante uma vez a cada 6 meses. Isso incentiva a rotação e evita a canibalização da base de clientes.

Motor Viral (MGM)

Crescimento Orgânico Acelerado.

  • Convidado ganha +1 Crédito.
  • Quem indicou (Free) ganha +1 Crédito.
  • Anti-Fraude com verificação SMS (OTP).

O Ecossistema

App do Cliente

  • 📱 Descoberta: Feed de ofertas e Mapa.
  • 🎟️ Wallet: Cupões ativos e Histórico de Economia.
  • 🚀 Referral: Geração de códigos para partilha.

App do Parceiro

  • 📊 Gestão: Dashboard de Validações.
  • 🔒 Acesso: PIN seguro para o Garçom.
  • 📷 Validação: Scanner de QR Code ultra-rápido.

Raio-X da Interface

Passa o rato sobre os ecrãs para revelar os detalhes técnicos (UI/UX).

5 CRÉDITOS
COMPRE 1 LEVE 2

Feed de Descoberta

  • Wallet Pill: Fixo no topo, destaca o saldo de créditos (Modak).
  • Scroll Infinito: Componente de lista otimizado.
  • Badge Flutuante: Cor Rose (#EA3981) para alto contraste na oferta.

Aguardando QR Code...

Scanner (Garçom)

  • Velocidade: Leitura em \u003C 2 segundos.
  • Privacidade: Exibe apenas Nome e Status, ocultando dados sensíveis.
  • Validação: Executa a Cloud Function de segurança (Hash QR).

Convide e Ganhe

EZE123
PARTILHAR CÓDIGO

Motor MGM

  • Gamificação: Cores vibrantes (Zaffre + Mikado) para estimular a partilha.
  • Integração: Botão ligado ao `System Share` nativo do iOS/Android.

A Jornada do Cupom

1. Geração

Sistema debita 1 crédito imediatamente do saldo do utilizador Free. Para Premium, é direto.

2. Validade

O Cupom (QR Code com Hash de segurança) fica ativo na Wallet com um temporizador de 24 horas.

3. O Desfecho

Consumo: Garçom lê o QR, ativa a restrição de 6 meses e calcula a economia.

Expiração/Cancelamento: Rotina do Cloud Scheduler devolve o crédito automaticamente (Estorno).

Diretrizes de Feedback (App Parceiro)

APROVADO

Feedback visual e sonoro imediato no scanner.

INVÁLIDO

Cupom expirado ou código forjado.

JÁ VISITADO

BURGER 2X1

Disponível novamente em AGO/2026

E se...? (Edge Cases)

Tratamento de exceções planeado no Functional Specification Document (FSD).

O utilizador Free tenta gerar um cupom sem saldo?
Ação: O botão fica desativado ou um modal de erro é acionado.
Mensagem da UI: "Eita! Saldo insuficiente. Indique amigos para ganhar visitas."
O utilizador tenta ir ao mesmo restaurante em menos de 6 meses?
Ação: O botão principal na oferta fica cinza (estilo Disabled).
Mensagem da UI: "Disponível novamente em [Mês/Ano]."
O utilizador Premium cancela a assinatura?
Ação: O tier volta a ser "Free". Quaisquer créditos acumulados anteriormente e congelados (Frozen Credits) voltam a estar disponíveis na Wallet.
Falha na validação do SMS (OTP) no registo?
Ação: A conta é criada na Firebase Auth, mas a flag phone_verified=false. Os créditos de indicação (MGM) **não** são atribuídos.
Mensagem da UI: "Valide o seu telefone para ganhar a sua visita grátis."

Under the Hood

Frontend (Flutter)

Clean Architecture

Separação rigorosa entre Presentation, Domain e Data.

Feature-First
/auth /referral /discovery

Firestore Schema

  • users: uid, tier, credits, phone_verified
  • partners: pid, recurrence_months, pin_hash
  • coupons: cid, status, expires_at, qr_hash
  • redemptions: Índice composto para bloquear recorrência.

Cloud Functions

⚙️ onPhoneVerified()

Gatilho ativado no registo. Roda uma Transação Atómica que soma +1 crédito ao Referrer e +1 ao Referee de forma segura contra falhas de rede.

⏱️ expireCoupons()

Agendado no Cloud Scheduler (a cada 30 min). Altera cupons para EXPIRED e devolve o crédito ao utilizador Free (Estorno Automático).

Glossário AiValeu

Referrer

O utilizador que convida. Dono do código.

Referee

O utilizador recém-convidado (Novo Cadastro).

OTP

One-Time Password. SMS para validar o telefone contra fraudes.

Frozen
Credits

Créditos não utilizáveis enquanto Premium. Voltam se cancelar a assinatura.

Roadmap de Sprints

Fase 1: Documentação 100% (45h/45h)
Fase 2: Mockups (Flutter UI) 0% (0h/70h)
Fase 3: Desenvolvimento Backend 0% (0h/110h)

Playground de UI / Tipografia

MODAK

A fonte de Impacto (Títulos)

ABCDEFGHIJLMNOPQRSTUVWXYZ

BEBAS NEUE

A fonte de Corpo e Legibilidade

ABCDEFGHIJLMNOPQRSTUVWXYZ

Componente: Bottom Bar

Área de Conteúdo

EXPLORAR
WALLET
PERFIL
#FFC700
#EA3981
#0021A1
#141414
#EEF0F2