# Análise de plataforma de cardápio em AR integrada ao WhatsApp

## Conclusão

Existe base tecnológica suficiente para construir o projeto, mas não existe, entre as soluções pesquisadas, uma API ou repositório único que faça automaticamente todo o fluxo: receber PDF/foto do cardápio, interpretar os pratos, criar modelos 3D realistas, posicioná-los sobre a mesa, receber o pedido e enviá-lo para a cozinha.

A solução mais segura é montar uma plataforma própria com quatro camadas:

1. **Ingestão e interpretação do cardápio:** Google Cloud Storage para arquivos, Document AI ou Cloud Vision para OCR e um modelo de linguagem para transformar o texto extraído em dados estruturados.
2. **Catálogo e AR:** aplicação web mobile-first com `@google/model-viewer`, modelos em GLB/glTF e fallback para visualização 3D sem AR.
3. **WhatsApp:** WhatsApp Cloud API para mensagens, catálogo, botões/listas, Flows, webhooks e confirmação do pedido.
4. **Operação do restaurante:** backend em Cloud Run, banco de dados, painel de gestão e integração por API/webhook com POS, KDS ou impressora de cozinha.

A parte de AR já é madura. A parte de conversão automática de fotos em modelos 3D de pratos ainda deve ser tratada como uma etapa assistida ou como um serviço separado, com revisão humana.

## O que já existe

### 1. Google model-viewer e ARCore

O `model-viewer` é um Web Component que exibe modelos 3D na web e pode abrir uma experiência AR em dispositivos compatíveis. Ele trabalha principalmente com arquivos glTF/GLB; no Android, usa WebXR ou Scene Viewer, conforme o suporte do dispositivo e a configuração adotada. A própria documentação informa que a exibição 3D funciona em navegadores modernos, mas os recursos de AR dependem de dispositivo compatível com ARCore e do Google Play Services for AR. [1]

Isso atende diretamente ao requisito de colocar um prato virtual sobre uma mesa, sem exigir que o cliente instale um aplicativo nativo. No iPhone, o projeto deve incluir a rota compatível com AR Quick Look/USDZ ou uma alternativa de visualização 3D, porque a experiência não será idêntica em todos os aparelhos.

A compatibilidade não deve ser presumida para todos os celulares. O Google mantém uma lista de dispositivos certificados, baseada em câmera, sensores, arquitetura e capacidade de processamento. [2] O produto precisa ter fallback para: modelo 3D sem câmera, foto/vídeo do prato e cardápio tradicional.

### 2. Google Cloud para PDF e foto do cardápio

O Cloud Vision API oferece OCR para imagens e possui uma modalidade de detecção de texto denso, com estrutura de páginas, blocos, parágrafos, palavras e caixas delimitadoras. [3]

Para PDFs, cardápios escaneados e documentos com layout mais complexo, o Enterprise Document OCR do Document AI é mais apropriado. Ele suporta PDF, JPEG, PNG, TIFF, GIF, BMP e WebP, além de extrair texto e informações de layout. Também oferece correção de rotação, pontuação de qualidade da imagem e detecção de idioma. [4]

O OCR não deve ser considerado a etapa final. Um cardápio pode misturar nome, descrição, preço, adicionais, tamanhos e observações em colunas. Depois do OCR, o sistema precisa normalizar o conteúdo para algo como:

```json
{
  "name": "Hambúrguer artesanal",
  "description": "Pão brioche, carne, queijo e molho da casa",
  "price": 32.90,
  "category": "Hambúrgueres",
  "options": ["sem cebola", "adicionar bacon"],
  "allergens": ["glúten", "leite"],
  "model3d_status": "pending_review"
}
```

O Google Cloud Storage é adequado para guardar os PDFs, fotos, imagens processadas, modelos GLB/USDZ e versões publicadas do cardápio. Ele é um armazenamento de objetos gerenciado e integra-se a eventos que podem disparar Cloud Run, Cloud Functions, Eventarc ou Pub/Sub. [5]

### 3. WhatsApp Cloud API

A WhatsApp Cloud API fornece envio e recebimento de mensagens, mídias, mensagens interativas, templates, rastreamento de status e webhooks. A configuração oficial inclui criação do aplicativo Meta, conta WhatsApp Business, token, número e endpoint de webhook. [6]

A API oferece recursos úteis para o pedido:

- listas com até 10 opções;
- botões de resposta, com até 3 opções;
- mensagens de produto único e múltiplos produtos;
- catálogos conectados à conta comercial;
- Flows para interações estruturadas;
- webhooks para receber escolhas, mensagens e status.

As mensagens de catálogo permitem que o cliente veja produtos dentro do WhatsApp, e as mensagens de produto permitem adicionar itens a um carrinho e enviá-lo ao negócio. A documentação da Meta descreve suporte a até 30 itens em mensagens de múltiplos produtos. [7]

O WhatsApp deve ser tratado como o canal de conversa e pedido, não como o motor de AR. Para AR, o bot envia um link HTTPS para uma página WebAR externa, por exemplo:

`https://menu.exemplo.com/r/restaurante-x/dish/hamburguer-artesanal?table=12`

Nessa página, o cliente toca em “Ver na minha mesa”. O navegador então tenta abrir WebXR/Scene Viewer/Quick Look. Se o ambiente não suportar AR, a página continua funcionando como visualizador 3D.

### 4. Backend no Google Cloud

O Cloud Run fornece uma plataforma gerenciada para executar APIs, webhooks e containers, com endpoint HTTPS, escalabilidade automática, integração com eventos e possibilidade de executar serviços em Node.js, Python, Java, Go e outras linguagens. [8]

Uma arquitetura inicial pode usar:

- Cloud Storage: PDFs, fotos, modelos 3D e imagens;
- Document AI ou Vision: OCR;
- Cloud Run: API, webhook do WhatsApp e painel backend;
- Firestore ou Cloud SQL: restaurantes, cardápios, produtos, pedidos e status;
- Pub/Sub ou Cloud Tasks: processamento assíncrono de arquivos e geração de ativos;
- Secret Manager: tokens do WhatsApp e credenciais de integrações;
- Cloud Logging/Monitoring: auditoria e diagnóstico.

## Repositórios GitHub encontrados

### GitUtk/AR-Menu

[GitUtk/AR-Menu](https://github.com/GitUtk/AR-Menu) é uma demonstração web de cardápio AR. Usa Next.js 14, TypeScript, Tailwind, `@google/model-viewer`, A-Frame e AR.js. Possui páginas de pratos, visualização 3D, modo de câmera com marcador Hiro e um PDF de marcadores para impressão. [9]

É útil como referência de interface e integração com modelos 3D. Não é uma solução completa para importar um PDF de cardápio, gerar modelos 3D, operar vários restaurantes, processar pedidos ou integrar WhatsApp e cozinha.

### Kishore-s-19/MenuAR

[MenuAR](https://github.com/Kishore-s-19/MenuAR) apresenta uma arquitetura mais próxima de um MVP de produto: React no frontend, Spring Boot no backend, MySQL, APIs REST, categorias, múltiplos restaurantes e visualização AR no navegador. [10]

É uma boa referência para a separação frontend/backend e para o modelo de dados de cardápio. A descrição pública não comprova a existência de pipeline de OCR, WhatsApp Cloud API, geração automática de modelos ou integração com KDS/POS.

### haddindeve/armenu-augmented-reality-menu-saas

[ARMenu SaaS](https://github.com/haddindeve/armenu-augmented-reality-menu-saas) descreve uma plataforma multi-tenant em que restaurantes administram pratos e associam modelos 3D; os clientes visualizam os itens no navegador, sem instalar aplicativo. [11]

O ponto mais importante é a limitação declarada no próprio projeto: o código completo, o schema do banco, os testes e a configuração de deploy estão em repositório privado. Portanto, ele é uma referência de produto/case study, não uma base pública que possa ser clonada integralmente.

### lenmorld/FoodAR

[FoodAR](https://github.com/lenmorld/FoodAR) é um protótipo acadêmico de WebAR para reconhecer alimentos e mostrar informações nutricionais. Usa reconhecimento de imagem, APIs externas e WebAR/ARCore. [12]

Pode ajudar a estudar reconhecimento visual e experiência mobile, mas não resolve o caso de negócio do cardápio, dos modelos 3D de pratos e dos pedidos.

### simonryu328/ar-menu-unity

[ar-menu-unity](https://github.com/simonryu328/ar-menu-unity) é uma alternativa nativa em Unity com AR Foundation/ARCore e Photon para sincronizar a posição de objetos entre usuários. O fluxo inclui detectar a mesa, selecionar itens, posicioná-los e atualizar um total compartilhado. [13]

É interessante para uma experiência avançada e multiusuário, mas impõe a criação/distribuição de aplicativo e aumenta custo e complexidade. Para uso em mesa via WhatsApp, a abordagem WebAR tende a ter menor atrito.

## Lacuna principal: foto do prato não é automaticamente um modelo 3D confiável

Uma foto ou descrição textual identifica o prato, mas não contém informação suficiente para reconstruir com precisão seu volume, parte traseira, espessura, ingredientes ocultos, escala e textura. Uma IA generativa pode criar uma representação visual plausível, mas isso não garante fidelidade comercial.

Para o MVP, recomendo três níveis:

1. **Catálogo sem AR:** publicar nome, preço, descrição e fotos imediatamente após a extração do cardápio.
2. **Modelo 3D assistido:** o restaurante envia de 8 a 30 fotos do prato em torno de uma bandeja, ou um operador cria/ajusta o modelo em Blender ou ferramenta de fotogrametria. O sistema valida escala, peso do arquivo e aparência.
3. **AR publicado:** somente depois da aprovação do restaurante, o GLB/USDZ fica disponível no cardápio público.

Uma geração automática a partir de uma única foto pode ser oferecida como “visualização ilustrativa”, mas não deve ser apresentada como representação exata sem revisão.

## Fluxo recomendado do produto

### Fluxo do restaurante

1. O restaurante cria uma conta e informa dados básicos.
2. Envia um PDF ou foto do cardápio.
3. O arquivo é armazenado no Cloud Storage.
4. Um evento dispara o processamento no Cloud Run.
5. Document AI extrai texto e layout.
6. Um normalizador transforma o OCR em categorias, itens, preços e opções.
7. O painel mostra os dados para revisão humana.
8. O restaurante adiciona fotos reais e modelos 3D dos pratos prioritários.
9. O sistema publica uma página WebAR e um link/QR Code por mesa.
10. O restaurante configura o destino dos pedidos: painel próprio, impressora, e-mail, webhook, POS ou KDS.

### Fluxo do cliente no WhatsApp

1. O cliente envia uma mensagem ou escaneia um QR Code que abre o WhatsApp.
2. O bot identifica o restaurante e, opcionalmente, a mesa.
3. O bot apresenta categorias e itens usando lista, botões ou catálogo.
4. Para um prato, envia foto, descrição, preço e botão “Ver em AR”.
5. O botão abre uma página HTTPS externa com o modelo 3D.
6. O cliente posiciona o prato sobre a mesa ou apenas gira o modelo.
7. O cliente volta ao WhatsApp e escolhe o item, adicionais e quantidade.
8. O bot confirma mesa, itens, observações, subtotal e total.
9. O cliente envia o pedido.
10. O webhook grava o pedido, gera um ticket e encaminha para a cozinha.
11. O painel de cozinha atualiza os estados: recebido, preparando, pronto e entregue.
12. O bot pode informar o andamento ao cliente.

## Como enviar o pedido para a cozinha

Não existe uma API universal que funcione com todos os restaurantes, lanchonetes, bares e sistemas de caixa. A integração deve ser criada por adaptadores:

- **MVP próprio:** painel KDS web em tela de cozinha e impressão local ou impressão via serviço intermediário;
- **Webhook genérico:** POST de um pedido padronizado para o sistema do cliente;
- **POS/KDS específico:** conectores individuais para os sistemas usados pelo restaurante;
- **Fallback operacional:** e-mail, impressão ou painel até existir integração nativa.

O pedido precisa ter um identificador idempotente para não ser impresso duas vezes, além de timestamp, restaurante, mesa, itens, adicionais, observações, total, forma de pagamento e status.

## Avaliação de viabilidade

**Viabilidade técnica geral: alta.** A visualização WebAR, o OCR, o armazenamento, o backend, os webhooks e o pedido conversacional são componentes disponíveis.

**Viabilidade do OCR de cardápios: alta com revisão humana.** PDFs digitais tendem a ser mais simples; fotos inclinadas, com reflexos, baixa resolução ou design em colunas exigem validação.

**Viabilidade de gerar modelos 3D automaticamente a partir de uma foto: média/baixa para fidelidade comercial.** É a maior incerteza do produto. O caminho recomendado é geração assistida, modelos pré-existentes e priorização dos pratos mais vendidos.

**Viabilidade de funcionar dentro do WhatsApp: alta para o pedido; parcial para AR.** WhatsApp é adequado para catálogo, escolhas, carrinho e webhooks. A experiência AR deve ser aberta por link em navegador compatível, com fallback quando câmera/AR não estiverem disponíveis.

**Viabilidade de integração com cozinha: alta se houver KDS próprio; variável se depender do POS do cliente.** O melhor primeiro passo é controlar o ticket em um KDS próprio e criar conectores depois.

## MVP recomendado

O primeiro MVP não deve tentar automatizar todos os pratos de todos os restaurantes. Ele deve incluir:

- upload de PDF ou foto;
- OCR e extração estruturada;
- revisão e publicação do cardápio;
- cadastro manual de 5 a 10 modelos 3D prioritários;
- página WebAR por item;
- link enviado pelo WhatsApp;
- seleção de itens e adicionais;
- confirmação do pedido;
- painel KDS simples para a cozinha;
- QR Code por mesa;
- fallback para foto e 3D quando AR não funcionar.

Depois, podem ser adicionados geração assistida de modelos, pagamento, estoque, tempo de preparo, fidelidade, analytics, integração com POS e suporte a múltiplos idiomas.

## Recomendação final

Eu não recomendaria começar procurando um repositório “pronto” para copiar. Os repositórios encontrados comprovam que a experiência de cardápio AR é possível, mas são demonstrações, protótipos ou casos incompletos para o fluxo comercial completo.

Eu recomendaria usar `GitUtk/AR-Menu` e `MenuAR` como referências de frontend/backend, `@google/model-viewer` como base da camada WebAR, Document AI/Vision para ingestão do cardápio e WhatsApp Cloud API para conversa e pedidos. O produto deve ser desenhado como um SaaS multi-tenant no Google Cloud, com modelos 3D aprovados por restaurante e uma cozinha própria no MVP.

A decisão crítica do projeto é de produto, não apenas de tecnologia: oferecer uma experiência AR confiável para os pratos mais importantes, em vez de prometer que qualquer foto de qualquer cardápio será convertida instantaneamente em um modelo 3D perfeito.

## References

[1]: https://developers.google.com/ar/develop/webxr/model-viewer "Augmented reality with model-viewer | ARCore"
[2]: https://developers.google.com/ar/devices "ARCore supported devices"
[3]: https://docs.cloud.google.com/vision/docs/ocr "Detect and extract text from images | Cloud Vision API"
[4]: https://docs.cloud.google.com/document-ai/docs/enterprise-document-ocr "Enterprise Document OCR | Document AI"
[5]: https://cloud.google.com/storage/docs/introduction "Cloud Storage introduction"
[6]: https://developers.facebook.com/documentation/business-messaging/whatsapp/get-started "WhatsApp Cloud API Get Started"
[7]: https://developers.facebook.com/docs/whatsapp/guides/commerce-guides/share-products-with-customers/ "Share products with customers | WhatsApp Business Platform"
[8]: https://cloud.google.com/run/docs/overview/what-is-cloud-run "What is Cloud Run?"
[9]: https://github.com/GitUtk/AR-Menu "GitUtk/AR-Menu"
[10]: https://github.com/Kishore-s-19/MenuAR "Kishore-s-19/MenuAR"
[11]: https://github.com/haddindeve/armenu-augmented-reality-menu-saas "armenu-augmented-reality-menu-saas"
[12]: https://github.com/lenmorld/FoodAR "lenmorld/FoodAR"
[13]: https://github.com/simonryu328/ar-menu-unity "simonryu328/ar-menu-unity"
