MódulosCompras e Suprimentos

Cotação com IA

O coração do módulo — RFQ pública, fornecedor responde no formato que quiser, IA extrai e monta mapa comparativo

Por que é o diferencial do produto

A cotação tradicional consome 5-7 dias do comprador: WhatsApp para 5 fornecedores, respostas em formatos diferentes ao longo de dias (PDF, foto, áudio, planilha), consolidação manual em Excel. Erra. Perde tempo.

OctaBuild propõe um fluxo radicalmente diferente:

  1. Comprador convida com 1 clique
  2. Fornecedor responde no formato que tiver (PDF, foto do papel, áudio explicando, Excel, texto)
  3. IA extrai preços e prazos automaticamente
  4. Mapa comparativo se monta sozinho com PNL e score composto
  5. Comprador decide com justificativa

Reduz cotação de 5-7 dias para 1-2 dias.

Fluxo passo a passo

1. Abrir RFQ

Suprimentos → tab Cotações → "Nova cotação". Selecione 1+ RC aprovadas, defina prazo limite (default 5 dias).

2. Convidar fornecedores

Botão "Mapa comparativo" na cotação → "Convidar fornecedores".

  • Selecione 3+ fornecedores
  • Cada um recebe um token único (link público sem login)

A regra geral: mínimo 3 fornecedores para curva A/B; curva C aceita 1. Exceções legítimas (fornecedor exclusivo, contrato-mestre, emergência aprovada) — exige documento comprobatório.

3. Distribuir

Botão "Distribuir" abre dialog com:

  • Toggle WhatsApp (se fornecedor tem celular cadastrado)
  • Toggle Email (se tem email cadastrado)
  • Mensagem extra opcional (até 500 chars)

WhatsApp usa o serviço oficial via Cloud API (rate-limited). Email via Resend. Se ambos falham, comprador pode copiar o link e enviar manualmente.

4. Fornecedor responde

Em /rfq/[token] (mobile-first, sem login):

  • Vê descrição da obra (sem dados sensíveis), itens, prazo
  • Pode preencher preços direto OU subir arquivos
  • Aceita: PDF, foto, Excel, CSV, áudio gravado em browser, texto livre
  • Múltiplos uploads acumulam (até 6 arquivos, 50MB cada)

5. IA extrai

No painel interno, cada resposta tem botão "Extrair IA".

Modelos usados:

  • OpenAI GPT-4o-mini (vision) — PDF e fotos
  • Whisper — áudio → texto → estruturação
  • ExcelJS — planilhas (parser direto, depois GPT alinha itens)

Saída estruturada via Zod schema:

  • Itens (com match_confidence por item — IA mapeia descrição da proposta ↔ item da RC)
  • Prazo de entrega (dias)
  • Condição de pagamento (texto, ex: "30 ddl", "à vista 5%")
  • Validade da proposta
  • Frete (CIF/FOB + valor)
  • Observações

Confiança baixa (< 80%) sinaliza item para revisão humana.

6. Mapa comparativo

Visualização em tabela:

  • Linhas = itens da RFQ
  • Colunas = fornecedores
  • Footer: total + frete, PNL, prazo, condição de pagamento, score histórico, score composto, indicador de outlier

PNL — Preço Presente Líquido

Considera custo do dinheiro: pagar à vista pode parecer mais caro, mas se o desconto compensa o custo do dinheiro, vira melhor opção.

PNL = valor_total / (1 + taxa_oportunidade_aa)^(prazo_pagamento_dias / 365)

Taxa de oportunidade configurável em Settings → Compras (default 14% ao ano).

Score composto

Normaliza 3 dimensões em [0,1] e aplica pesos (default 60/20/20):

  • Preço (60%): 1 quando é o menor PNL, 0 quando é o maior
  • Prazo (20%): 1 quando é o menor prazo, 0 quando é o maior
  • Histórico (20%): score consolidado do fornecedor / 5

Resultado em 0-100. Maior = melhor.

Outliers

Detectados pela mediana × 1.3. Fornecedor com PNL > 1.3× mediana sinaliza visualmente — "verificar especificação ou descartar".

7. Recomendação IA

Painel lateral mostra recomendação automática:

  • "Recomendo Fornecedor B. Não é o menor preço (Fornecedor A está 2% abaixo), mas Fornecedor A tem score histórico 3.1 contra 4.7 de B."
  • Lista 2 alternativas com seus motivos

8. Decidir vencedor

Botão "Decidir vencedor" abre modal:

  • Atribuição item-por-item (suporta vencedor misto)
  • Justificativa obrigatória (mínimo 20 caracteres)
  • Botão "Aplicar IA" preenche tudo com a recomendação

Salvar dispara approval cotacao_decisao.

9. Aprovação

Painel → Aprovações — diretor aprova a decisão.

Quando aprovado, callback automático:

  • Cria 1 PO por fornecedor vencedor (com itens atribuídos)
  • Atualiza requisição para pedido_emitido
  • Cotação vira decidida

Se rejeitado: cotação volta para em_analise para nova decisão.

Idempotência e duplicatas

  • Submissão do fornecedor: (quotation_request_id, supplier_id) único — re-envio sobrescreve, não duplica
  • Geração de PO: callback verifica se já existe PO para a cotação antes de criar
  • Tokens RFQ: 1 por (cotação, fornecedor) — único

Lembrete automático

Cron Vercel diário (13:00 UTC): para tokens com prazo a vencer em ≤ 3 dias e sem resposta, envia lembrete por email/WhatsApp. Idempotente via heartbeat (não envia se houve atividade nas últimas 20h).

KPIs

  • Tempo médio de coleta: dias entre abrir RFQ e mapa pronto. Meta: 1-2 dias.
  • Taxa de resposta: % convidados que respondem no prazo. Meta: > 80%.
  • Acurácia IA: % campos extraídos corretamente sem correção. Meta: > 95% PDFs/Excel; > 85% fotos/áudios.

Permissões

PermissãoEscopoDefault
compras_cotacao:readprojectTodos exceto comercial/jurídico
compras_cotacao:writeprojectgerente
compras_cotacao:manageprojectdiretor (decidir vencedor + criar approval)

On this page