{"id":382,"date":"2026-10-02T09:00:00","date_gmt":"2026-10-02T09:00:00","guid":{"rendered":"https:\/\/leiritech.pt\/blog\/ultima-unidade-reserva-temporaria-erp"},"modified":"2026-10-02T09:00:00","modified_gmt":"2026-10-02T09:00:00","slug":"ultima-unidade-reserva-temporaria-erp","status":"publish","type":"post","link":"https:\/\/leiritech.pt\/blog\/ultima-unidade-reserva-temporaria-erp","title":{"rendered":"\u00daltima unidade, dois clientes: reserva no ERP, n\u00e3o promessa"},"content":{"rendered":"<p>&quot;Tinha dito ao cliente que havia. Afinal havia uma, e foi para outro.&quot;<\/p>\n<p>Se vendes pe\u00e7as, consum\u00edveis, equipamento ou qualquer coisa com stock finito, j\u00e1 ouviste esta frase, ou j\u00e1 a disseste. N\u00e3o \u00e9 um problema de atendimento. \u00c9 um problema de concorr\u00eancia: duas pessoas pedem a mesma coisa quase ao mesmo tempo, e o sistema que lhes responde n\u00e3o tem forma de saber que a outra existe.<\/p>\n<p>O bot de \u20ac25 por m\u00eas n\u00e3o resolve isto. Na maior parte dos casos, at\u00e9 piora: responde mais depressa, a mais gente, com a mesma certeza errada.<\/p>\n<h2>A cena: 21:14 e 21:15<\/h2>\n<p>Uma distribuidora de pe\u00e7as auto em Leiria, numa ter\u00e7a \u00e0 noite. H\u00e1 uma bomba de \u00e1gua para um modelo espec\u00edfico em stock: <strong>uma<\/strong>.<\/p>\n<ul>\n<li><strong>21:14<\/strong> \u2014 Um mec\u00e2nico de Pombal pergunta no WhatsApp: &quot;T\u00eam a bomba de \u00e1gua ref. tal?&quot; O bot responde: &quot;Sim, temos dispon\u00edvel!&quot;<\/li>\n<li><strong>21:15<\/strong> \u2014 Uma oficina da Marinha Grande faz a mesma pergunta. O bot responde: &quot;Sim, temos dispon\u00edvel!&quot;<\/li>\n<li><strong>21:40<\/strong> \u2014 O mec\u00e2nico de Pombal confirma que quer. A oficina da Marinha Grande tamb\u00e9m.<\/li>\n<li><strong>08:30 do dia seguinte<\/strong> \u2014 Algu\u00e9m na loja abre o WhatsApp, v\u00ea duas confirma\u00e7\u00f5es para uma pe\u00e7a e tem de escolher a quem vai ligar a pedir desculpa.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/leiritech.pt\/blog\/wp-content\/uploads\/2026\/10\/blog-ultima-unidade-reserva-temporaria-erp-1.png\" alt=\"Respons\u00e1vel de back-office numa distribuidora de pe\u00e7as, de costas, a comparar uma conversa de WhatsApp no telem\u00f3vel com a tabela de stock do ERP no port\u00e1til, com o armaz\u00e9m ao fundo\" \/><\/p>\n<p>Repara que o bot n\u00e3o &quot;mentiu&quot;. \u00c0s 21:14 havia uma unidade. \u00c0s 21:15 continuava a haver uma unidade. As duas respostas estavam certas no momento em que foram dadas. O erro est\u00e1 noutro s\u00edtio: <strong>ler o stock n\u00e3o \u00e9 o mesmo que o garantir<\/strong>.<\/p>\n<h2>Porque \u00e9 que ler o stock n\u00e3o chega<\/h2>\n<p>H\u00e1 tr\u00eas n\u00edveis de bot, e \u00e9 importante n\u00e3o os confundir.<\/p>\n<p><strong>N\u00edvel 1 \u2014 o bot de FAQ.<\/strong> \u00c9 o que se vende a \u20ac15\u201325 por m\u00eas. Responde a partir do texto que lhe deste: hor\u00e1rio, morada, cat\u00e1logo, perguntas frequentes. As p\u00e1ginas destes produtos falam em respostas 24\/7, capta\u00e7\u00e3o de leads e passagem para a equipa, mas n\u00e3o referem integra\u00e7\u00e3o com o ERP nem a\u00e7\u00f5es executadas. Para esse bot, &quot;temos&quot; significa &quot;est\u00e1 no cat\u00e1logo que me colaram em junho&quot;. Nem sequer sabe se h\u00e1 uma ou nenhuma.<\/p>\n<p><strong>N\u00edvel 2 \u2014 o bot que l\u00ea o stock.<\/strong> J\u00e1 \u00e9 melhor: consulta o ERP e v\u00ea <code>stock = 1<\/code>. S\u00f3 que o mec\u00e2nico e a oficina fazem a consulta com um minuto de diferen\u00e7a, e os dois veem <code>1<\/code>. Entre a leitura e a encomenda passam 25 minutos, porque o cliente foi perguntar ao patr\u00e3o, foi ver o carro ou foi jantar. Em engenharia chama-se a isto uma <em>race condition<\/em>. No balc\u00e3o, chama-se vender a mesma pe\u00e7a duas vezes.<\/p>\n<p><strong>N\u00edvel 3 \u2014 o agente que executa uma a\u00e7\u00e3o.<\/strong> No momento em que o cliente diz &quot;quero&quot;, o agente n\u00e3o se limita a ler: pede ao ERP que <strong>reserve<\/strong> aquela unidade para aquele cliente, durante um tempo limitado. A partir da\u00ed, o stock dispon\u00edvel que qualquer outra conversa v\u00ea passa a ser zero.<\/p>\n<p>A diferen\u00e7a entre o n\u00edvel 2 e o 3 n\u00e3o est\u00e1 no modelo de linguagem. Est\u00e1 numa transa\u00e7\u00e3o na base de dados.<\/p>\n<h2>O que \u00e9, em concreto, uma reserva tempor\u00e1ria auditada<\/h2>\n<p>Quando dizemos &quot;o agente cria uma reserva&quot;, n\u00e3o estamos a falar de dar ao modelo acesso livre ao ERP. Estamos a falar de <strong>uma \u00fanica a\u00e7\u00e3o de escrita, escrita em c\u00f3digo, com regras que o modelo n\u00e3o pode alterar<\/strong>:<\/p>\n<ol>\n<li><strong>Verifica\u00e7\u00e3o e escrita na mesma transa\u00e7\u00e3o.<\/strong> O sistema calcula o dispon\u00edvel (f\u00edsico \u2212 j\u00e1 reservado \u2212 j\u00e1 comprometido em encomendas abertas) e cria a reserva s\u00f3 se o resultado for \u2265 quantidade pedida. Se duas conversas chegarem no mesmo segundo, a base de dados serializa-as: uma ganha, a outra recebe &quot;indispon\u00edvel&quot;. N\u00e3o h\u00e1 janela entre ler e escrever.<\/li>\n<li><strong>Validade curta.<\/strong> A reserva tem um prazo: 30 minutos, 2 horas, o que fizer sentido para o teu neg\u00f3cio. Se o cliente n\u00e3o confirmar, expira sozinha e a unidade volta ao dispon\u00edvel. Ningu\u00e9m tem de se lembrar de a libertar.<\/li>\n<li><strong>Limites.<\/strong> Uma reserva ativa por conversa, quantidade m\u00e1xima por artigo, s\u00f3 para clientes identificados (o n\u00famero de telefone tem de corresponder a uma entidade no ERP). Isto trava o curioso que &quot;reserva&quot; vinte unidades para ver o que acontece.<\/li>\n<li><strong>Idempot\u00eancia.<\/strong> Se o cliente escreve &quot;quero&quot; tr\u00eas vezes, ou se a rede repete o pedido, continua a haver uma reserva, n\u00e3o tr\u00eas.<\/li>\n<li><strong>Registo.<\/strong> Cada reserva fica com quem pediu, a conversa de origem, o artigo, a quantidade, a hora, a validade e o desfecho (convertida em encomenda, expirada ou cancelada). \u00c9 isto que permite responder \u00e0 pergunta &quot;porque \u00e9 que a oficina da Marinha Grande n\u00e3o ficou com a pe\u00e7a?&quot; com uma linha de log em vez de uma discuss\u00e3o.<\/li>\n<\/ol>\n<p>No ERP, isto encaixa no que j\u00e1 tens. Muitos ERPs t\u00eam o conceito de stock reservado ou de encomenda de cliente em aberto que abate ao dispon\u00edvel. Quando n\u00e3o t\u00eam, ou quando a API n\u00e3o o exp\u00f5e, a reserva vive numa tabela pr\u00f3pria ao lado, e \u00e9 essa tabela que o c\u00e1lculo do dispon\u00edvel passa a considerar, no WhatsApp, no balc\u00e3o e na loja online.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/leiritech.pt\/blog\/wp-content\/uploads\/2026\/10\/blog-ultima-unidade-reserva-temporaria-erp-2.png\" alt=\"Operador de armaz\u00e9m com colete verde, visto por cima do ombro, a confirmar num terminal port\u00e1til a \u00faltima caixa de um artigo numa estante de paletes\" \/><\/p>\n<p>E o segundo cliente? \u00c0s 21:15, a oficina da Marinha Grande recebe a verdade: &quot;A \u00faltima unidade est\u00e1 reservada at\u00e9 \u00e0s 21:44. Se n\u00e3o for levantada, aviso-te. Entretanto, o fornecedor entrega na quinta. Queres que fique encomendada para ti?&quot; Isto n\u00e3o \u00e9 um &quot;lamentamos&quot;, \u00e9 uma resposta com dados do ERP, a reserva, o prazo de reposi\u00e7\u00e3o e uma a\u00e7\u00e3o seguinte. O cliente fica a saber em que p\u00e9 est\u00e1.<\/p>\n<h2>N\u00e3o \u00e9 s\u00f3 stock: \u00e9 capacidade<\/h2>\n<p>O mesmo padr\u00e3o aparece sempre que h\u00e1 um recurso finito e v\u00e1rias pessoas a pedi-lo ao mesmo tempo.<\/p>\n<p><strong>Calibra\u00e7\u00e3o.<\/strong> Um laborat\u00f3rio acreditado tem quatro vagas de calibra\u00e7\u00e3o esta semana, e dois clientes com auditoria ISO \u00e0 porta querem a \u00faltima. Um bot que diz &quot;temos disponibilidade na quinta&quot; aos dois est\u00e1 a criar um conflito que algu\u00e9m vai resolver ao telefone. O agente reserva a vaga no planeamento do QMS, com prazo, e a segunda empresa recebe a pr\u00f3xima data real.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/leiritech.pt\/blog\/wp-content\/uploads\/2026\/10\/blog-ultima-unidade-reserva-temporaria-erp-3.png\" alt=\"T\u00e9cnica de metrologia num laborat\u00f3rio de calibra\u00e7\u00e3o, de costas, a rever num tablet o calend\u00e1rio semanal de vagas, com um paqu\u00edmetro digital pousado na bancada\" \/><\/p>\n<p><strong>Sa\u00fade.<\/strong> Numa farm\u00e1cia ou num lar, as \u00faltimas caixas de um medicamento em rutura n\u00e3o podem ser prometidas a dois utentes. Aqui a reserva tem ainda mais regras, como lote, validade e, quando aplic\u00e1vel, receita associada, e o registo deixa de ser boa pr\u00e1tica para passar a ser obriga\u00e7\u00e3o.<\/p>\n<p><strong>Fatura\u00e7\u00e3o e encomendas B2B.<\/strong> Quando a reserva se converte em encomenda, o documento \u00e9 emitido pelo ERP, com a numera\u00e7\u00e3o e as regras fiscais do ERP. O agente n\u00e3o inventa pre\u00e7os nem condi\u00e7\u00f5es: usa a tabela e o desconto que o ERP atribui \u00e0quele cliente.<\/p>\n<h2>A obje\u00e7\u00e3o: &quot;N\u00e3o era suposto o agente ser read-only?&quot;<\/h2>\n<p>\u00c9, por defeito. E \u00e9 aqui que muita gente se engana nos dois sentidos.<\/p>\n<p>Um lado diz: &quot;Se escreve no ERP, \u00e9 perigoso.&quot; H\u00e1 boas raz\u00f5es para essa desconfian\u00e7a. O caso mais citado este ano \u00e9 o do agente da Replit que apagou uma base de dados de produ\u00e7\u00e3o com registos de mais de mil executivos e empresas, <strong>apesar de ter instru\u00e7\u00f5es expl\u00edcitas de &quot;code freeze&quot;<\/strong>, e que depois afirmou que o rollback era imposs\u00edvel (n\u00e3o era). A li\u00e7\u00e3o n\u00e3o \u00e9 &quot;nunca escrevas&quot;. \u00c9 que <strong>a permiss\u00e3o n\u00e3o pode viver no prompt<\/strong>. Pedir ao modelo para &quot;ter cuidado&quot; n\u00e3o \u00e9 um controlo.<\/p>\n<p>O outro lado diz: &quot;O modelo \u00e9 inteligente, deixa-o decidir.&quot; Tamb\u00e9m n\u00e3o.<\/p>\n<p>O que funciona fica no meio: o agente \u00e9 read-only para tudo, exceto uma <strong>lista fechada de a\u00e7\u00f5es<\/strong>, cada uma implementada como uma fun\u00e7\u00e3o com pr\u00e9-condi\u00e7\u00f5es, limites e registo. O modelo pode <em>pedir<\/em> <code>criar_reserva(artigo, quantidade, cliente)<\/code>. N\u00e3o pode pedir &quot;altera o stock&quot;, &quot;muda o pre\u00e7o&quot; ou &quot;apaga a reserva do outro&quot;, porque essas fun\u00e7\u00f5es n\u00e3o existem para ele. A credencial que usa no ERP tamb\u00e9m n\u00e3o tem esse poder. Uma reserva tempor\u00e1ria \u00e9 a a\u00e7\u00e3o de escrita ideal para come\u00e7ar: \u00e9 limitada, expira sozinha e o pior caso \u00e9 uma unidade bloqueada durante 30 minutos.<\/p>\n<h2>A segunda obje\u00e7\u00e3o: &quot;Basta p\u00f4r &#8216;sujeito a disponibilidade&#8217;&quot;<\/h2>\n<p>Podes p\u00f4r. O cliente l\u00ea &quot;temos&quot; e ignora o resto.<\/p>\n<p>E a primeira resposta errada custa caro. Segundo a Gartner, que inquiriu mais de 3.500 clientes entre fevereiro e mar\u00e7o deste ano, <strong>s\u00f3 27% voltam a tentar um chatbot depois de uma m\u00e1 experi\u00eancia<\/strong>. Um &quot;temos&quot; que afinal n\u00e3o era n\u00e3o \u00e9 uma m\u00e1 experi\u00eancia qualquer: o cliente organizou o dia em fun\u00e7\u00e3o dessa pe\u00e7a. Na pr\u00f3xima vez, liga. Ou vai ao concorrente.<\/p>\n<p>E a Black Friday est\u00e1 a 56 dias. \u00c9 precisamente a altura em que mais conversas chegam ao mesmo tempo, sobre as mesmas promo\u00e7\u00f5es e o mesmo stock limitado, a horas em que ningu\u00e9m est\u00e1 na loja para arbitrar.<\/p>\n<h2>Porque \u00e9 que isto \u00e9 IA &quot;grounded&quot;, e n\u00e3o um bot a adivinhar<\/h2>\n<p>Num agente bem constru\u00eddo, o modelo de linguagem faz o que faz bem: perceber que &quot;a bomba da \u00e1gua pr\u00f3 Golf do meu cliente&quot; \u00e9 a refer\u00eancia X, identificar quem est\u00e1 a escrever e redigir uma resposta clara. <strong>N\u00e3o decide se h\u00e1 stock.<\/strong> Isso \u00e9 o ERP que decide, numa transa\u00e7\u00e3o. O modelo s\u00f3 escreve a frase \u00e0 volta do resultado.<\/p>\n<p>Se a transa\u00e7\u00e3o devolve &quot;reservado at\u00e9 21:44&quot;, a resposta diz isso. Se devolve &quot;indispon\u00edvel&quot;, diz isso e prop\u00f5e a alternativa que o ERP conhece. N\u00e3o h\u00e1 espa\u00e7o para o modelo &quot;achar&quot; que h\u00e1, porque ningu\u00e9m lhe pergunta o que acha.<\/p>\n<p>Um bot de \u20ac25 n\u00e3o chega aqui. N\u00e3o por ser mau, mas porque n\u00e3o \u00e9 isso que se vende a \u20ac25: n\u00e3o sabe quem \u00e9 o cliente, n\u00e3o l\u00ea o teu stock e n\u00e3o tem nenhuma a\u00e7\u00e3o para executar.<\/p>\n<h2>O pr\u00f3ximo passo<\/h2>\n<p>Antes de falares com algu\u00e9m, incluindo connosco, conta duas coisas no \u00faltimo trimestre:<\/p>\n<ol>\n<li>Quantas encomendas foram anuladas ou adiadas porque o artigo &quot;afinal n\u00e3o havia&quot;.<\/li>\n<li>Quantas conversas de WhatsApp ou telefone foram s\u00f3 para perguntar &quot;t\u00eam X?&quot; e acabaram numa verifica\u00e7\u00e3o manual no ERP.<\/li>\n<\/ol>\n<p>Se o primeiro n\u00famero for zero, n\u00e3o precisas disto. Se n\u00e3o for, j\u00e1 tens o caso de neg\u00f3cio, com dados teus. Envia-nos esses n\u00fameros e o nome do teu ERP (PHC, Primavera, Moloni, Sage ou outro) para <strong>hello@leiritech.com<\/strong>. Dizemos-te, sem compromisso, se a reserva cabe no que o teu ERP j\u00e1 tem ou se precisa de uma tabela ao lado, e quanto tempo leva a p\u00f4r a funcionar antes da Black Friday.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dois clientes no WhatsApp, uma unidade em stock, o bot diz &#8220;temos&#8221; aos dois. Como um agente ligado ao ERP cria uma reserva tempor\u00e1ria auditada.<\/p>\n","protected":false},"author":1,"featured_media":378,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[60],"tags":[321,528,314,527,530,529],"class_list":["post-382","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-erp","tag-agente-ia-integrado-erp","tag-chatbot-whatsapp-stock-real","tag-integracao-phc-whatsapp-2","tag-reserva-de-stock-erp","tag-stock-disponivel-reservado","tag-venda-duplicada-ultima-unidade"],"_links":{"self":[{"href":"https:\/\/leiritech.pt\/blog\/wp-json\/wp\/v2\/posts\/382","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/leiritech.pt\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/leiritech.pt\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/leiritech.pt\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/leiritech.pt\/blog\/wp-json\/wp\/v2\/comments?post=382"}],"version-history":[{"count":0,"href":"https:\/\/leiritech.pt\/blog\/wp-json\/wp\/v2\/posts\/382\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/leiritech.pt\/blog\/wp-json\/wp\/v2\/media\/378"}],"wp:attachment":[{"href":"https:\/\/leiritech.pt\/blog\/wp-json\/wp\/v2\/media?parent=382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/leiritech.pt\/blog\/wp-json\/wp\/v2\/categories?post=382"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/leiritech.pt\/blog\/wp-json\/wp\/v2\/tags?post=382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}