Madeireira
Madeireira
madeirazap + alliahbalcão
um projeto, duas frentes

Do orçamento no WhatsApp à entrega no pátio.

O MadeiraZap conversa com o cliente e monta o orçamento; o AlliahBalcão transforma em pedido, separa, baixa o estoque, cobra e fecha o dia. As duas frentes dividem um banco só, o que muda de um lado vale do outro na hora.

49produtos no catálogo de teste
~R$ 0,06de IA por conversa completa
21telas, do orçamento à auditoria
1.017testes automatizados nas duas frentes
as duas frentes

O bot vende. O balcão entrega.

frente 1 · atendimento

MadeiraZap

Seu balconista atende 24 horas por dia. O Gemini entende o que o cliente quer e escreve a resposta, mas todo número (preço, desconto, frete, prazo) sai de código determinístico. O modelo não faz conta e não inventa produto.

  • Orçamento fechado na conversa, com desconto por volume e frete por faixa de CEP.
  • Catálogo editável com as palavras que o cliente usa no ramo.
  • Base de conhecimento para horário, entrega, pagamento, nota e garantia.
  • Passagem para humano com um clique, e o bot silencia naquele contato.
  • Simulador embutido: converse com o bot sem celular, no mesmo caminho de código.
alliahtestes.xyz/madeireira Abrir MadeiraZap
frente 2 · retaguarda

AlliahBalcão

Onde o operador da loja trabalha. A importação de planilha ensaia antes de gravar, desfaz com um clique e aponta a vírgula fora do lugar que transforma R$ 9,40 em R$ 940,00.

  • Fila de pedidos com romaneio de separação para imprimir.
  • Estoque com rastro: baixa na separação, devolução no cancelamento, alerta do que acaba.
  • Financeiro em parcelas, recebimento parcial e extrato do mês.
  • Compras com custo médio ponderado, só assim a margem é real.
  • Tabela por perfil e limite de crédito: varejo, construtora e atacado, cada um no seu preço.
  • Auditoria de preço, estorno e crédito, com o antes e o depois.
alliahtestes.xyz/balcao Abrir AlliahBalcão
um banco só

O que muda num lado vale no outro.

Preço corrigido no Balcão

entra na próxima cotação do bot, sem sincronismo e sem duplicata.

Construtora marcada no cadastro

passa a ser cotada na tabela dela direto no WhatsApp, pelo telefone.

A cubagem é uma conta só

quantas peças cabem num metro cúbico, a mesma regra no bot e no balcão.

como funciona

Três passos, do pareamento ao pátio.

1Pareie e ajuste o catálogo

Escaneie o QR Code na aba WhatsApp e deixe preços, prazos e regras de frete na aba Produtos.

2O bot atende e orça

Dúvidas e orçamento item a item na conversa. Quando o assunto foge do alcance, um atendente assume.

3O orçamento vira pedido

No Balcão: romaneio, baixa de estoque, cobrança e fechamento do dia, com a margem de cada material na mão.

o problema

Madeira se vende por medida, e é aí que o dinheiro vaza.

Nenhuma dessas dores é de software. São dores de balcão, e todas terminam na mesma pergunta no fim do mês: quanto sobrou?

01

O pedido chega às 21h

O cliente manda a lista quando sai da obra. A madeireira fechou às 18h. Na manhã seguinte ele já comprou em outro lugar, ou repete a lista inteira por telefone, com o balconista anotando em papel.

02

Cada balconista cota um preço

O preço mora na cabeça de quem atende. Um dá 5% para o pedreiro conhecido, outro cobra tabela cheia da construtora que compra todo mês. Ninguém está errado de propósito: não existe tabela para consultar.

03

A cubagem sai na calculadora do celular

Quantos caibros de 5×6 cm por 3 m cabem num metro cúbico? A conta é feita na hora, arredondada para cima, e a madeira prometida não existe no pátio. Quem descobre é o cliente, na entrega.

04

A vírgula da planilha do fornecedor

A lista de preços chega em XLSX com a coluna trocada e um 9.40 que vira R$ 940,00. Sem ensaio antes de gravar, o erro entra no catálogo, e sai na primeira cotação.

05

O crédito mora no caderno

"Pode levar, acerta sexta." Sem limite por cliente e sem título vencido à vista, a decisão de fiar é do humor de quem está no balcão naquela hora.

06

A margem é um palpite

Sem custo médio ponderado, o preço de venda é comparado com a última nota de compra, que pode ser de seis meses atrás. A margem que aparece no relatório é ficção educada.

depois do orçamento

Cinco pedaços do dia que o sistema não enxergava.

Vender e faturar já estavam resolvidos. O que ficava fora era o serviço de corte, o caminhão, a decisão de compra, a madeira que volta e o cliente esperando alguém ligar.

balcão · serraria

Plano de corte, com a perda de serra na conta

O cliente chega com uma lista de medidas, "12 de 1,20 m, 8 de 0,85 m, 30 de 2,40 m", e quem decide como tirar aquilo das barras do pátio é o serrador, de cabeça. O desperdício não aparecia em lugar nenhum.

O plano resolve o corte unidimensional e imprime a ordem de serviço: por barra, a sequência de cortes com a posição acumulada, para o serrador riscar e cortar sem fazer conta.

  • A perda de serra entra na conta. Sem os 3 mm do disco, três peças cabem no papel e não cabem na serra.
  • A conta roda em décimo de milímetro inteiro. Em ponto flutuante, 1,20 + 0,85 + … fecha em 3,0499999 e a peça "quase cabe".
  • Três heurísticas competem e a melhor vence; empate fica com a mais previsível, para o mesmo pedido dar sempre o mesmo plano.
  • Sobra acima do mínimo é retalho, não lixo, vira registro próprio e volta à prateleira.
  • Aproveitamento não conta retalho. Chamar sobra de aproveitamento é o jeito mais fácil de esconder desperdício num indicador.
balcão · pátio

A carga do caminhão, por peso e por volume

A lista de entregas do dia virou carga: quem sobe em qual caminhão, se cabe, em que ordem entregar, e o que voltou. Antes isso era um WhatsApp e um caderno.

Um caminhão de 6 toneladas leva pouquíssimo m³ de cumaru e muita ripa de pinus, por isso a ocupação é medida nas duas grandezas, com o volume saindo da bitola e o peso da densidade da espécie.

  • "Não sei" em vez de zero. Material sem bitola no nome fica marcado como não estimado, e o aviso vai até o romaneio impresso. Zero silencioso é o que faz o caminhão sair com 800 kg a mais do que a conta dizia.
  • Estourar a capacidade avisa, não bloqueia, o operador vê o caminhão, o sistema não. Mas exige confirmação e fica registrado.
  • Roteiro é sugestão de sequência, nunca rota. Agrupa por proximidade de CEP, sem chave de mapa e sem km inventado, e a mão do operador vence a sugestão.
  • Motivo de insucesso é lista fechada. Texto livre vira "n/a" e no fim do mês não soma, e é a soma que faz o dono mudar horário, endereço ou motorista.
balcão · compras

Reposição: o que acaba, quanto comprar e de quem

A loja comprava por instinto, o dono passa no pátio, vê a pilha baixa e liga para o fornecedor. Falta o que vende e sobra o que não vende, e o dado para decidir já estava no banco.

Ponto de pedido com estoque de segurança, curva ABC por faturamento, capital parado, e um botão que transforma a sugestão em compra em rascunho. Toda conta abre passo a passo: sugestão que chega como caixa-preta não é seguida.

  • Pico aparado, não mediana. Numa madeireira o mesmo item passa dias sem sair uma peça, a mediana do consumo diário é zero, e o sistema mandaria nunca comprar nada.
  • Material a caminho conta como estoque. Sem isso, a sugestão vira compra, a compra fica em rascunho até a nota chegar, e no dia seguinte o mesmo item pede de novo.
  • O prazo tem procedência visível, medido do histórico, do cadastro ou do padrão. Número sem procedência não convence ninguém a assinar uma ordem de compra.
  • O dono pode discordar do histórico, item a item. Sistema que não deixa é abandonado na segunda semana.
balcão · pós-venda

A madeira que volta, e o crédito que fica

Madeira volta: empenada, rachada, na bitola errada, ou porque sobrou da obra. Antes o operador cancelava o pedido inteiro, destruindo histórico e financeiro, ou fazia um ajuste solto de estoque e "combinava" com o cliente.

  • Revendável volta ao pátio; avariado não. Devolver madeira rachada para o saldo é como o pátio passa a mentir.
  • O preço é o praticado no pedido, não o de hoje: se a tabela subiu desde a venda, devolver pelo preço novo dá ao cliente dinheiro que ele não pagou.
  • O saldo de crédito é a soma do extrato, nunca um campo. O extrato não perde linha, senão não fecha com o papel que o cliente guardou.
  • Motivo é lista fechada. "Empenada", "empenado", "torta" e "veio ruim" nunca somariam o relatório que faz o dono trocar de serraria.
bot + balcão · cliente

O cliente resolve sozinho, no celular

O orçamento afundava no meio de outras quarenta mensagens do WhatsApp, e três dias depois alguém da loja ligava para perguntar se ficou bom. Agora vai um link: o cliente abre no celular, vê tudo e aprova com um toque, e o aceite cria o pedido na hora. Se recusar, a loja fica sabendo por quê.

E o bot passou a responder o que sempre caía no atendente humano: "cadê meu pedido?", "quanto eu ainda devo?" e "me manda de novo aquele orçamento".

  • O bot só enxerga o telefone da conversa. A ferramenta nem declara parâmetro de telefone, se a porta existir, um dia o modelo entra por ela.
  • Link revogado e link inexistente respondem igual. Distinguir os dois transformaria a página num oráculo de tokens válidos.
  • O que a página mostra é lista de permissão. O orçamento carrega o preço de tabela antes do desconto de perfil, passar o dado adiante entregaria a tabela da construtora ao cliente varejo.
  • Ver não é responder. A visualização só conta quando o cliente abre de verdade: o WhatsApp busca a página sozinho para montar a pré-visualização, e "visto sem resposta" é justamente o sinal que faz o vendedor ligar.
recursos em profundidade

O que cada peça faz, e por que foi feita assim.

Todo item abaixo existe no sistema no ar. Onde a decisão de projeto for contraintuitiva, ela está explicada em vez de escondida.

bot · orçamento

A IA escreve; o código calcula

O modelo entende o pedido em português de obra ("me vê 40 caibro de 5 por 6, 3 metros") e escreve a resposta. Ele não faz conta e não escolhe produto: preço, desconto por volume, frete e prazo saem de código determinístico.

Essa divisão não é preciosismo. Numa versão anterior, o modelo re-digitava a lista de itens a cada mensagem e trocou 40 caibros (R$ 1.308) por 40 m³ de madeira a granel (R$ 71.200), num orçamento já gravado.

  • Carrinho no servidor, por conversa: o modelo só manda "acrescente tanto disso", nunca redigita o pedido inteiro.
  • Lote todo ou nada: um código inválido no meio recusa o lote inteiro, em vez de seguir com os válidos e esconder o erro.
  • A escolha do produto é do servidor, com busca ordenada por relevância, pedir "caibro" e receber viga é o tipo de erro que o modelo comete e a consulta não.
  • Número de orçamento é conferido no banco antes de sair. Todo código de orçamento no texto de resposta é procurado; se não existir, a rodada volta ao modelo como erro e, se ele insistir, a frase mentirosa é substituída. O bot já anunciou "seu pedido foi registrado com o número ORC-2024-0005" sem ter gravado nada, uma vez.
  • Pergunta de preço obriga consulta. Se o cliente perguntou preço, estoque ou prazo e o modelo respondeu sem consultar, a rodada é refeita com uso de ferramenta forçado.
  • Dado obrigatório é recusado, não lembrado. Registrar orçamento sem os dados do cliente é rejeitado pelo servidor, com a lista do que falta, porque o prompt esquece e a recusa não.
bot · conversa

Rajada de mensagens vira uma resposta só

Cliente não escreve parágrafo: manda "E aí!", "é o Marcos", "quero deck" em três mensagens seguidas. Sem tratamento, o bot cumprimenta três vezes.

Há uma janela de agrupamento configurável: cada mensagem é gravada na hora, mas só a última dispara a resposta, as anteriores ficam registradas como agrupadas.

  • Busca em português que remove sufixo em vez de cortar radical, cortar por prefixo casaria "madeirit" com "madeira".
  • Piso de relevância: exigir mais de uma palavra casada evita responder "parafuso inox" para quem perguntou de geladeira.
  • Filtro que não casa é descartado, não devolve vazio, um filtro de categoria inventado pelo modelo já escondeu três decks do catálogo.
balcão · catálogo

A importação de planilha ensaia antes de gravar

Arraste o arquivo do fornecedor em XLSX ou CSV. O sistema lê o cabeçalho e adivinha qual coluna é código, nome, preço, unidade e estoque; confere linha a linha; e mostra o que vai mudar antes de mudar.

Variação suspeita de preço é apontada, é a vírgula fora do lugar que transforma R$ 9,40 em R$ 940,00. E o número brasileiro é lido como brasileiro: 1.234,56 entra como mil duzentos e trinta e quatro, não como um e vinte e três.

  • Desfazer com um clique depois de gravado, a importação guarda como voltar atrás.
  • Sinônimos do ramo no catálogo: as palavras que o cliente usa, não as do sistema.
balcão · operação

Do orçamento ao pátio, com rastro

O orçamento fechado no WhatsApp vira pedido com um clique. A partir daí é fila: confirmado, em separação, pronto, saiu para entrega, concluído, com romaneio de separação para imprimir e o dia dividido entre entrega e retirada.

  • Baixa de estoque na separação, não na venda, o que saiu do pátio é o que saiu do saldo.
  • Devolução automática no cancelamento, para o saldo não ficar preso em pedido morto.
  • Trilha própria de estoque, com o saldo depois de cada movimento, mais rica que a auditoria genérica, e a tela de Auditoria diz isso em vez de fingir que cobre tudo.
  • Avisos ao cliente quando o pedido fica pronto e quando sai para entrega, sem ninguém digitar.
balcão · dinheiro

Financeiro que aguenta estorno

Título em parcelas, recebimento parcial, quem está devendo e o extrato do mês por forma de pagamento.

O saldo do título é derivado, nunca gravado: é a soma dos pagamentos, calculada na hora. Coluna de saldo persistida desincroniza no primeiro estorno, e aí o extrato mente para sempre.

  • A sobra de centavo do parcelamento fica na primeira parcela, para a soma das parcelas fechar exatamente no total.
  • Limite de crédito por cliente, com uma regra que não é a óbvia (veja "As contas", abaixo).
os dois lados

Um banco só, sem código de integração

O bot e o balcão são dois programas separados que abrem o mesmo arquivo SQLite, literalmente o mesmo, não uma cópia sincronizada. São 24 tabelas, dez criadas pelo bot e catorze pelo balcão. Não há fila, não há sincronismo, não há job de madrugada: o preço corrigido no balcão já é o preço da próxima cotação.

Para isso funcionar, a propriedade do schema é explícita, cada app sabe quais tabelas cria e quais apenas lê, cada criação é condicional (quem subir primeiro vence, e as definições são idênticas de propósito) e coluna nova entra por acréscimo com valor padrão, nunca obrigatória, o que quebraria a gravação do outro lado.

O bot lê a tabela de clientes, que é do balcão, dentro de uma proteção: se o balcão nunca subiu, a tabela não existe e o bot continua cotando como varejo em vez de quebrar. Na direção contrária, o balcão é proibido de editar segredo, chave de API e segredo de webhook só se mexem no painel do bot.

as contas

Seis regras de negócio que valem mais que seis telas.

Toda madeireira faz estas contas. A diferença é que aqui elas estão escritas, testadas e iguais dos dois lados, no WhatsApp e no balcão.

Cubagem, e por que arredonda para baixo

peças por m³ = piso( 1 / (esp × larg × compr) )

Com as medidas em metros. O arredondamento é para baixo, sempre: arredondar para cima prometeria ao cliente madeira que não cabe no metro cúbico, e a discussão acontece no pátio, com o caminhão carregado.

Custo médio ponderado

custo = (qtd_ant × custo_ant + qtd_nota × custo_nota) / (qtd_ant + qtd_nota)

Cada nota de compra que entra recalcula o custo. Com uma exceção que muda tudo: custo anterior zero significa "não sei quanto custa", não "custa zero". Diluir esse zero na média inventaria um custo irrisório e uma margem de 99%. Sem custo anterior, o custo da nota é adotado inteiro.

Margem é sobre a venda, não markup

margem % = (venda − custo) / venda × 100

Markup divide pelo custo e dá um número maior e mais bonito, que não é margem. E produto sem custo conhecido fica fora da conta e é contado à parte: melhor um relatório que admite "não sei de 12 itens" do que um que finge margem de 100%.

Perfil de cliente

preço = preço_tabela × (1 − desconto_do_perfil)

Varejo, construtora e atacado, cada um na sua tabela. Marque um cliente como construtora no balcão e a próxima cotação no WhatsApp já sai 8% menor, reconhecida pelo telefone. O item cotado mostra os dois números: preço de tabela e preço aplicado.

Limite de crédito, zero não trava

alerta se: título vencido OU (limite > 0 E em aberto ≥ limite)

Todo cliente nasce com limite zero, e zero significa "não controlo crédito desse cliente", se zero travasse, o balcão inteiro parava no primeiro dia. Já título vencido acende o alerta mesmo com limite folgado.

Honestidade importante: hoje isso é aviso ao operador na tela de novo pedido, não bloqueio no servidor. Quem está no balcão vê o motivo em vermelho e decide, a venda não é recusada pelo sistema.

Desconto por volume e frete por CEP

total = Σ(itens) − desconto_volume + frete(faixa_de_CEP)

As duas regras vivem em configuração, não no prompt do modelo. É o que garante que o mesmo pedido cotado três vezes dê exatamente o mesmo total nas três, coisa que nenhum modelo de linguagem promete.

como funciona por dentro

Dois containers, um arquivo de banco.

Arquitetura pequena de propósito: quanto menos peça móvel, menos coisa para acordar de madrugada numa loja que abre às 7h.

01 · canal WhatsApp

Mensagem do cliente chega por webhook vindo da Evolution API. A rota do webhook não tem sessão: quem a protege é um segredo na própria URL.

02 · bot MadeiraZap

Um container servindo API e painel na porta interna 8119. O modelo interpreta e redige; o orçamento é montado por código.

03 · dados SQLite compartilhado

Um volume Docker externo com o arquivo do banco, montado nos dois containers. Externo de propósito: derrubar um app com volume junto apagaria o banco do outro.

04 · retaguarda AlliahBalcão

Outro container, porta interna 8121, com 79 rotas e o painel do operador. Front sem build: sete arquivos JavaScript carregados em ordem, escopo global, zero empacotador.

detalhes que só aparecem no ar
Cada app tem seu cookie

dois painéis no mesmo domínio não podem brigar por sessão: o cookie de cada um tem nome e caminho próprios.

O proxy tira o prefixo

a aplicação monta tudo na raiz; quem sabe que ela vive em /madeireira ou /balcao é o servidor web na frente.

Tema claro e escuro por classe

não por consulta de mídia, assim a paleta escura existe uma vez só, e "automático" é o painel lendo a preferência do sistema.

mapa do sistema

Onde cada coisa acontece.

O painel do balcão tem 16 telas; o do bot concentra atendimento, catálogo e configuração. A tabela abaixo diz em qual das duas frentes cada assunto é resolvido, e o que atravessa para a outra.

Divisão de responsabilidades entre as duas frentes. "Atravessa" = o efeito aparece do outro lado sem integração, pelo banco compartilhado.
AssuntoFrenteO que resolveAtravessa?
AtendimentoMadeiraZapDúvidas de horário, entrega, pagamento, nota e garantia, a partir da base de conhecimento.-
OrçamentoMadeiraZapItem a item na conversa, com desconto por volume, frete por faixa de CEP e prazo.Sim, vira pedido no balcão
Passagem para humanoMadeiraZapUm clique e o atendente assume; o bot silencia naquele contato.-
SimuladorMadeiraZapConversar com o bot sem celular nenhum, pelo mesmo caminho de código do WhatsApp.-
Catálogo e preçosAlliahBalcãoImportação de planilha com ensaio, conferência e desfazer; sinônimos do ramo.Sim, a próxima cotação já usa
PedidosAlliahBalcãoFila por situação, romaneio de separação, entregas e retiradas do dia.-
EstoqueAlliahBalcãoBaixa na separação, devolução no cancelamento, alerta do que está acabando, trilha de movimentos.Sim, o bot não cota o que acabou
Clientes e perfilAlliahBalcãoCadastro com documento, endereço e histórico; perfil varejo, construtora ou atacado.Sim, muda o preço no WhatsApp
FinanceiroAlliahBalcãoTítulo em parcelas, recebimento parcial, inadimplência e extrato do mês.-
ComprasAlliahBalcãoNota do fornecedor entra no estoque e recalcula o custo médio ponderado.Indireto, muda a margem, não o preço
CubagemAs duasPeças por metro cúbico, com a mesma fórmula e o mesmo arredondamento nos dois lados.Mesma conta, duas cópias
Limite de créditoAlliahBalcãoLimite por cliente e alerta por título vencido, mostrado ao operador antes de fechar o pedido.-
AuditoriaAlliahBalcãoPreço alterado, pagamento estornado, limite mexido, com o antes e o depois.-

As 16 telas do balcão

Agrupadas do jeito que o operador pensa: primeiro o dia, depois o material, depois o dinheiro, depois as pessoas.

Telas do painel do AlliahBalcão. Duas delas, Auditoria e Usuários, só aparecem para quem entra como administrador.
GrupoTelaPara que serve
BalcãoHojeO turno numa tela: fechamento do dia, resumo financeiro, agenda, orçamentos parados, dúvidas pendentes e estoque baixo.
BalcãoPedidosFila por situação, marcação item a item na separação e romaneio para imprimir.
BalcãoEntregasO que sai numa data, separado entre entrega e retirada.
BalcãoOrçamentosO que o bot montou no WhatsApp, com o botão que transforma em pedido.
CatálogoMateriaisCadastro, importação de planilha em quatro passos e reajuste de preço em lote.
CatálogoEstoqueMovimentos com trilha, planilha de contagem e alerta de mínimo.
CatálogoCubagemCalculadora de peças por metro cúbico, com leitura da bitola pelo nome do produto.
DinheiroFinanceiroA receber, parcelas, recebimento parcial, inadimplência e extrato do mês.
DinheiroComprasFornecedores, nota de compra e recebimento que recalcula o custo médio.
AtendimentoClientesCadastro com documento, endereço, perfil de preço e painel de crédito.
AtendimentoConversasHistórico do WhatsApp, com assumir, responder e devolver ao bot.
AtendimentoAtendimentoDados da empresa, regras comerciais, prompt do bot, base de conhecimento e fila de dúvidas sem resposta.
AtendimentoAvisosRegistro das notificações enviadas ao cliente e os retornos pendentes.
GestãoRelatóriosFechamento do dia, conversão do bot, curva ABC, margem por material e custo de IA.
GestãoAuditoriaA trilha de quem mudou o quê, com o valor antes e depois. Só administrador.
GestãoUsuáriosCriar, editar e desativar quem entra no painel. Só administrador.

Tabela de preço e frete da demonstração

Os números abaixo são os que estão configurados na instalação de demonstração. Todos editáveis no painel, estão aqui para mostrar a forma da regra, não para servir de tabela de preço.

Descontos por perfil e por volume. O desconto de perfil entra no preço unitário, porque é tabela de preço; o de volume entra sobre o subtotal, por cima. O sistema recusa desconto de perfil acima de 40%, nesse patamar é erro de digitação, não política comercial.
RegraFaixaDesconto
PerfilVarejo0%
PerfilConstrutora8%
PerfilAtacado15%
VolumeSubtotal a partir de R$ 3.0003%
VolumeSubtotal a partir de R$ 8.0005%
VolumeSubtotal a partir de R$ 20.0008%
Frete por faixa de CEP, casado pelos dois primeiros dígitos. A última linha é a rede de segurança: qualquer CEP que não caia nas anteriores. CEP incompleto não vira chute, o orçamento sai com o frete "a calcular".
RegiãoCEP começa comFreteTransporte
Região local89R$ 180,001 dia
Demais regiões do estado88R$ 320,002 dias
Paraná80 a 87R$ 420,003 dias
Rio Grande do Sul90 a 99R$ 560,004 dias
São Paulo01 a 09, 11 a 19R$ 640,004 dias
Demais estadosqualquer outroR$ 890,007 dias

Frete grátis acima de R$ 5.000 vale só na faixa local, e o corte é sobre o subtotal já com desconto. O prazo final soma o maior prazo entre os itens, os dias de preparo e o transporte da faixa, e um item pedido além do estoque vira encomenda, acrescentando dez dias.

para quem é

Feito para madeireira. Serve para quem vende por medida.

O catálogo e o vocabulário são de madeireira. A estrutura, unidade de venda, cubagem, tabela por perfil, crédito no balcão, é a de qualquer distribuidor que vende volume e peça.

Madeireira de bairro

Um ou dois balconistas, movimento concentrado de manhã, pedido chegando por WhatsApp o dia inteiro. Ganha o atendimento fora do horário e o preço que não depende de quem atendeu.

dor principal · atendimento fora de hora

Depósito de material de construção

Catálogo maior, clientes recorrentes com prazo, entrega própria. Ganha a fila de pedidos com romaneio, o controle de crédito e o extrato por forma de pagamento.

dor principal · crédito e entrega

Quem vende para construtora

Mistura de varejo e contrato, cada cliente numa condição. Ganha a tabela por perfil aplicada automaticamente pelo telefone de quem está falando, sem depender de o balconista lembrar.

dor principal · preço por cliente

Serraria com venda direta

Produção própria, venda por metro cúbico, custo que muda a cada lote. Ganha o custo médio ponderado por entrada de nota e a margem real por material.

dor principal · custo que muda

Quem já tem ERP e só quer o WhatsApp

Dá para usar só a frente do bot, cotando em cima do catálogo importado por planilha. Não substitui o ERP, e a página de limites, mais abaixo, é honesta sobre o que fica de fora.

use com ressalva · sem integração fiscal

Quem quer só ver funcionando

As duas frentes estão no ar com catálogo de demonstração. O simulador do bot conversa sem celular nenhum, pelo mesmo caminho de código do WhatsApp real.

demonstração · catálogo fictício
o que você recebe

Papel para o pátio, arquivo para o escritório.

Romaneio de separação

A lista do que sai, para imprimir e levar ao pátio, com marcação item a item.

CSV de qualquer tabela

Exportação de toda listagem do painel, com marca de codificação para o Excel em português abrir acentuado, e com as células neutralizadas contra injeção de fórmula.

Extrato do mês

Recebido por forma de pagamento, quem está devendo e o que vence, com o saldo calculado na hora a partir dos pagamentos.

Trilha de auditoria

Quem mudou preço, quem estornou pagamento, quem mexeu no limite de crédito, com o valor antes e depois.

Histórico da conversa

Cada atendimento do WhatsApp gravado com o que o cliente pediu, o que o bot respondeu e o orçamento que saiu dali.

Custo de IA por conversa

O painel mostra o consumo do modelo por atendimento, o número aparece antes da fatura, não depois.

Alerta de estoque baixo

Lista do que está acabando, no critério que você definir por produto, antes de o cliente descobrir na entrega.

Entregas e retiradas do dia

O que sai hoje, separado por modalidade, pronto para montar a carga do caminhão.

integrações e dados

Três portas de entrada, uma de saída.

Deliberadamente curto. Cada integração nova é uma peça a mais que pode cair num sábado de manhã.

entrada

WhatsApp, pela Evolution API

A conversa chega por webhook. O número é pareado por QR Code no próprio painel, e a instância pode ser dedicada à madeireira ou compartilhada com outras aplicações do servidor.

Um aprendizado caro: o estado de conexão que a Evolution informa não é prova de nada. Já apareceu "conectado" com a sessão morta. A única confirmação honesta é o reconhecimento de entrega da mensagem, por isso o canal é marcado como suspeito quando a API diz que está tudo bem e nenhuma mensagem de cliente entra há horas.

entrada

Planilha do fornecedor

XLSX ou CSV, com o cabeçalho que o fornecedor mandou. O sistema adivinha as colunas, ensaia, aponta o que está estranho e só grava depois de confirmado, guardando como desfazer.

entrada

Modelo de linguagem

A interpretação e a redação usam o Gemini 2.5 Flash, com o modo de raciocínio estendido desligado, foi medido que ligá-lo não melhorou a decisão de usar ferramenta, e em atendimento latência vale mais que profundidade. O modelo enxerga doze ferramentas, e nenhuma delas calcula preço.

Custo medido: uma conversa completa de sete mensagens consumiu cerca de 36 mil tokens, algo em torno de R$ 0,06. A média corrente das conversas reais gravadas nesta instalação está em torno de R$ 0,08, porque nem toda conversa tem sete mensagens. Áudio custa à parte, numa tabela mais cara, cobrar áudio no preço de texto subestima a conta em três vezes, e por isso ele tem preço próprio na configuração.

O valor exibido é estimativa calculada com preço e câmbio editáveis no painel, não a fatura do Google. Quem fecha a conta é o provedor.

saída

Seus dados, em arquivo aberto

Toda tabela do painel exporta em CSV, e o banco é um arquivo SQLite único, o formato de banco embarcado mais difundido que existe, legível por qualquer ferramenta comum. Não há formato proprietário no meio do caminho.

segurança e privacidade

O que já está protegido, e em que nível.

Esta seção lista apenas o que está implementado. O que falta está na seção seguinte, com o mesmo destaque.

Painel atrás de login

Os dois painéis exigem entrada. A sessão é cookie de servidor, não token no navegador.

Cookie isolado por aplicação

Nome e caminho próprios em cada painel: um app do mesmo domínio não enxerga nem sobrescreve a sessão do outro.

Webhook com segredo próprio

A rota chamada pela Evolution não tem sessão, por natureza. Quem a protege é um segredo específico dela, sem o qual a chamada é recusada.

Auditoria com antes e depois

Alterações sensíveis, preço, estorno, limite de crédito, ficam registradas com autor e com o valor anterior, não só o novo.

Exportação sem injeção de fórmula

Célula que começa com sinal de igual, mais, menos ou arroba é neutralizada antes de virar CSV, planilha exportada não deve executar nada ao abrir.

Dado do cliente fica no servidor

Nome, telefone e histórico de compra vivem no banco da instalação. O que sai para o modelo de linguagem é o texto da conversa em atendimento, não a base de clientes.

limites

O que ainda não faz.

Marca da casa: a lista do que falta vem no mesmo tamanho de letra que a lista do que tem.

O WhatsApp pede alguém por perto

O atendimento roda numa instância dedicada de WhatsApp, pareada com o celular da loja. Parear de novo exige alguém escaneando um QR Code com esse celular, então o canal precisa de um responsável na loja.

O catálogo no ar é fictício

Os 49 produtos, os 15 verbetes da base de conhecimento e a tabela de frete são de demonstração, com preços e prazos inventados. Nenhum número desta página é preço de madeira de verdade.

A retaguarda não tem quilometragem de produção

O bot já atendeu conversa de gente de verdade. O balcão, não: pedido, estoque, financeiro, compras e auditoria estão cobertos por testes e por um passeio de ponta a ponta, mas ainda não rodaram com movimento real de loja. É protótipo maduro, não sistema com histórico.

O limite de crédito avisa, não impede

A situação de crédito é calculada e mostrada em vermelho ao operador, mas a API aceita o pedido mesmo assim. Quem decide é a pessoa no balcão, e isso está aqui porque "controle de crédito" costuma ser lido como bloqueio.

Não emite documento fiscal

Não há NF-e, NFC-e nem integração com SEFAZ. Pedido, romaneio e título são documentos internos da operação.

Não conversa com banco nem com maquininha

Recebimento é lançamento manual: não há conciliação bancária automática, boleto registrado nem Pix com confirmação automática.

Uma loja por instalação

Não há multiempresa nem multifilial com estoque separado. Duas lojas hoje significam duas instalações.

A cubagem existe em dois lugares

Os containers são separados e não compartilham biblioteca: a mesma fórmula está copiada nos dois lados. Mexeu num, tem que mexer no outro, está documentado, mas é dívida técnica assumida.

SQLite tem teto

Um arquivo único atende bem uma madeireira. Não é a escolha para dezenas de operadores gravando ao mesmo tempo em várias filiais, nesse cenário o banco muda.

Sem aplicativo de celular

O painel responde bem em tela pequena e foi testado sem rolagem horizontal, mas é web: não há app nativo nem uso offline no pátio.

perguntas frequentes

O que perguntam antes de decidir.

A IA pode errar um preço?

Não pelo caminho normal, porque ela não calcula preço. O modelo interpreta o pedido e redige a resposta; o valor sai de consulta ao catálogo e de código de cálculo. O que a IA pode errar é a interpretação, entender "viga" onde o cliente disse "caibro".

Por isso a escolha do produto foi tirada do modelo e passada para uma busca ordenada no servidor, e o item cotado aparece nomeado na resposta, para o cliente conferir na hora.

Preciso das duas frentes ou dá para usar só uma?

Dá para usar só uma. O bot funciona sozinho, cotando em cima do catálogo, se o balcão nunca subiu, ele simplesmente cota todo mundo como varejo. E o balcão funciona sozinho como retaguarda, recebendo pedidos digitados em vez de vindos da conversa.

Juntas elas valem mais: é a combinação que faz o preço corrigido no balcão valer na cotação seguinte sem ninguém sincronizar nada.

Como o bot sabe que aquele cliente é construtora?

Pelo telefone. O perfil está no cadastro do cliente, que é uma tabela do balcão; o bot lê essa tabela na hora de cotar e aplica o desconto do perfil antes de qualquer outra conta. O item sai com o preço de tabela e o preço aplicado, lado a lado.

E se o modelo de linguagem ficar fora do ar?

O atendimento automático para; o balcão continua inteiro, porque ele não depende de IA para nada. Pedido, estoque, financeiro, compras e auditoria são código comum.

Quanto custa a IA por mês?

Depende do volume de conversa. As referências que temos são medidas, não estimadas: uma conversa completa de sete mensagens deu cerca de 36 mil tokens, algo em torno de R$ 0,06; a média das conversas reais já gravadas nesta instalação está por volta de R$ 0,08. Um recado de áudio de quinze segundos sai na casa de R$ 0,003, e ler uma foto de lista de material, na de R$ 0,002.

O painel guarda o custo de cada mensagem, então o número da sua operação aparece na primeira semana de uso, e não depende de acreditar nesta página. Lembrando que é estimativa a partir de preço e câmbio configuráveis, não a fatura do provedor.

Dá para o atendente assumir a conversa?

Sim, com um clique. O bot silencia naquele contato e a conversa continua humana, sem o robô interrompendo por cima. É o comportamento certo quando o assunto foge do alcance dele, reclamação, negociação fora de tabela, problema de entrega.

Por que a margem que aparece é menor do que eu esperava?

Provavelmente porque você está acostumado a markup. Aqui a margem é calculada sobre a venda: vender a R$ 100 o que custou R$ 70 dá 30% de margem, e 42,9% de markup. O primeiro número é o que sobra da receita; o segundo é quanto foi acrescentado ao custo.

E se houver produto sem custo conhecido, ele fica fora da conta e é contado à parte, em vez de entrar como custo zero e inflar tudo.

Posso importar a planilha de preços do meu fornecedor sem arrumar antes?

É para isso que ela serve. O sistema lê o cabeçalho, adivinha as colunas, mostra o que vai mudar e aponta variação suspeita de preço antes de gravar. Número no formato brasileiro é lido como brasileiro. E, se algo passou, dá para desfazer a importação inteira.

Como faço para testar sem envolver o WhatsApp?

O bot tem simulador embutido, e ele não é uma imitação: a tela chama exatamente a mesma função que o webhook do WhatsApp chama. Muda um único parâmetro no fim, quem entrega a resposta. Resolução da conversa, gravação da mensagem, trava de atendimento humano, laço do agente, execução das ferramentas, contagem de tokens e as defesas contra número inventado: tudo roda igual.

Por isso o simulador continua servindo mesmo quando o canal de WhatsApp cai. O que ele não exercita é a leitura do envelope que a Evolution manda e o download de áudio e foto.

Os dados são meus?

São. O banco é um arquivo SQLite na instalação e toda tabela do painel exporta em CSV. Não há formato fechado nem trava de saída.

glossário

O vocabulário do balcão.

Os termos que aparecem no sistema, no sentido em que o sistema os usa.

Cubagem
Quantas peças de uma medida cabem em um metro cúbico. Aqui, sempre arredondado para baixo.
Romaneio
A lista impressa do que precisa ser separado no pátio para um pedido, item a item.
Custo médio ponderado
O custo do produto recalculado a cada compra, pesando quantidade antiga e quantidade da nota nova.
Margem
Quanto sobra da venda: venda menos custo, dividido pela venda. Não confundir com markup.
Markup
Quanto foi acrescentado ao custo. Sempre um número maior que a margem, sobre a mesma venda.
Perfil de cliente
A faixa comercial do cliente, varejo, construtora, atacado, que define qual desconto de tabela ele recebe.
Limite de crédito
Quanto um cliente pode dever. Zero significa "não controlo", não "não pode".
Título
A cobrança gerada por um pedido a prazo. Pode ter várias parcelas e receber pagamento parcial.
Estorno
O desfazimento de um pagamento já lançado. É o evento que quebra qualquer saldo gravado em coluna.
Separação
A etapa em que a mercadoria é retirada do pátio para o pedido. É aqui que o estoque baixa.
Retirada × entrega
As duas modalidades de saída: o cliente busca, ou o caminhão leva. O dia é organizado separando as duas.
Faixa de CEP
O agrupamento de regiões usado para cobrar frete sem consultar transportadora a cada cotação.
Passagem para humano
O momento em que o atendente assume a conversa e o bot para de responder naquele contato.
Base de conhecimento
As respostas prontas sobre horário, entrega, pagamento, nota e garantia que o bot consulta antes de responder.
Instância
O número de WhatsApp conectado, pareado por QR Code. Pode ser dedicado à madeireira ou compartilhado.
Trilha de auditoria
O registro de quem alterou o quê, guardando o valor anterior junto com o novo.

Duas portas, o mesmo balcão.

Entre pelo bot para ver o orçamento sendo montado na conversa, ou pelo painel para ver o pedido virar romaneio, baixa de estoque e cobrança.