Skip to content

Negocia ai

Restaurant owners either burn hours running quotes, or just take the first supplier who answers.

Core trick

Agent opens parallel WhatsApp negotiations with local suppliers and normalizes voice, photo, and text quotes into price per delivered kilo.

Tags

Description

Restaurant owners either burn hours running quotes, or just take the first supplier who answers. Now the owner sends one WhatsApp message: "20kg of mozzarella by Thursday, Vila Mariana." The agent finds suppliers in the area and opens parallel negotiations with all of them — same app, same thread style, no portal to log into. It understands whatever comes back — voice notes, photos of price sheets, a bare "42" — and converts everything to price per kilo delivered. It takes the lowest, goes back to the other threads, and asks who'll match it. Then it messages the owner with the options, he replies with a number. Order placed.
andreLucao/codex-project★ 00 forksTypeScriptCreated Aug 19, 2026 · last push Aug 19, 2026

README excerpt

# Agente de compras para restaurantes

Aplicação com cliente Next.js e servidor Express. O servidor expõe uma busca
assíncrona de fornecedores no Google Maps através do Actor da Apify
`compass/crawler-google-places` e um agente de negociação de cotações.

## Fluxo do agente

1. O dono descreve item, quantidade e prazo em linguagem natural.
2. O agente usa o cadastro do restaurante no Supabase para obter a localização.
3. A busca Apify encontra até 10 fornecedores com telefone.
4. O primeiro contato é enviado pela integração direta com a WhatsApp Cloud API usando um template aprovado.
5. A primeira resposta do fornecedor abre a janela de atendimento e o agente passa a cuidar da thread.
6. Texto, áudio e imagem são convertidos em uma cotação estruturada e normalizada.
7. Ao receber cinco cotações comparáveis, o menor preço é congelado como âncora e enviado aos demais fornecedores.
8. Uma única rodada de contraoferta atualiza o ranking no Supabase Realtime.
9. O dono aprova uma oferta e somente o vencedor recebe a confirmação.

As decisões com efeitos colaterais são determinísticas. O modelo interpreta conteúdo não estruturado, mas não decide quantos fornecedores contam, não altera a âncora e não envia mensagens diretamente.

## Configuração do servidor

Copie `server/.env.example` para `server/.env` e informe um token da Apify:

```env
APIFY_TOKEN=your_apify_token
OPENAI_API_KEY=your_openai_api_key
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_ROLE_KEY=your_ser

Team