Pular para o conteúdo

Respostas em que pode confiar

Qualquer IA consegue escrever um parágrafo confiante sobre os seus números. O difícil — o que decide se pode agir com base na resposta — é saber quando confiar nela. É para isso que o PlaidCloud foi concebido.

Quando pede a um assistente de IA ligado que explique os seus dados, o PlaidCloud não se limita a devolver um valor. Classifica o grau de confiança que esse valor merece, diz-lhe em linguagem simples onde o terreno é menos firme, reconcilia a sua própria aritmética e recusa-se a inventar seja o que for. É esta a diferença entre um assistente que parece ter razão e um que pode apresentar a um diretor financeiro.

O PlaidCloud classifica as suas próprias respostas — confiança Alta, Média ou Baixa — e explica porquê. Um resultado limpo e totalmente atribuído é devolvido com confiança Alta. Se os dois períodos que está a comparar não estiverem igualmente completos, ou se parte de uma variação não puder ser atribuída a uma única causa, o PlaidCloud di-lo e reduz a sua própria confiança, em vez de apresentar um número frágil como se fosse certo.

Nunca precisa de se perguntar se o assistente tem a certeza. Di-lo logo, na própria resposta.

A classificação indica o que abrange. Uma resposta abre com um resumo de uma linha que pode indicar uma causa provável, apontar o membro responsável pela maior parte do movimento e dimensionar a variação face ao ano anterior — e termina com uma classificação de confiança. Essa classificação abrange uma única coisa: a forma como a variação foi decomposta nas partes que para ela contribuíram e rastreada através dos passos que a produziram. Não é um veredicto sobre as causas indicadas acima dela. A linha passa agora a dizê-lo — “Confiança na decomposição, não no motivo da variação: alta” — e omite a segunda metade quando o resumo não indicou nenhuma causa, para nunca desmentir uma afirmação que não fez. Isto é especialmente importante porque esse resumo é a parte com maior probabilidade de ser reencaminhada isoladamente, ou lida por um assistente sem nada da página à sua volta.

Tudo o que qualifica a classificação surge a seguir, numa frase própria, encabeçada por “Advertências:”. A classificação e as suas qualificações eram antes unidas por um travessão, que se lê como porque — pelo que uma classificação alta seguida de um travessão e de um limite era interpretada como uma classificação assente precisamente no limite que a acompanha. Passam agora a ser duas frases, o que não reivindica qualquer relação entre elas. As qualificações em si não mudam e continuam a ser apresentadas por extenso mais abaixo na resposta.

O motivo de uma classificação reduzida é um limite declarado, não uma nota de rodapé na nota. Quando parte de uma variação resulta de vários efeitos em simultâneo e não de um só deles, essa parte é o que mantém a classificação abaixo de Alta — e é declarada em Limites transparentes, com o seu significado e aquilo a que diz respeito, a par de todos os outros limites que a resposta apresenta. A própria classificação mantém uma etiqueta curta. Uma resposta que abrange várias colunas indica, na linha da classificação, o intervalo medido entre elas, porque nenhum valor isolado aí diria respeito a todas.

Quando as colunas divergem, o motivo é o da coluna que mais precisa dele. Uma resposta que abrangia várias colunas de valores classificadas de igual modo tomava a primeira coluna e dava o motivo dessa coluna, e a respetiva parcela residual, como sendo os da resposta — pelo que uma resposta cuja pior coluna tinha a maior parte do movimento na parte que nenhum fator isolado explica podia ser publicada como maioritariamente limpa, com uma pequena parcela citada ao lado. Quando o movimento de qualquer coluna é dominado por efeitos que não se conseguem separar, esse passa a ser o motivo indicado, e nenhuma parcela medida nas outras colunas é citada a seu lado.

Não diz que uma variação foi compensada por movimentos opostos e classifica depois essa mesma decomposição como limpa. Quando a variação própria de um membro é maior do que a variação líquida total, o movimento em ambos os sentidos anulou-se parcialmente — e a linha que nomeava esse membro di-lo assim que a sua variação ultrapassava a líquida, enquanto a classificação a seu lado só contava essa compensação como material bastante mais adiante. Assim, uma resposta cujo maior membro excedia por uma fração a variação líquida dizia que o movimento tinha sido compensado e classificava a mesma decomposição como limpa na mesma página, sem nada que indicasse em qual acreditar. Essa linha passa a dizer que os movimentos se compensam entre si apenas quando a compensação é suficientemente grande para baixar a classificação. Abaixo disso, indica antes a quota do membro — “line=PERSONAL_AUTO = 101.6% of the delta — that is its own change, not its share of the pool shifting” — com uma casa decimal quando ultrapassa 100 %, para que o pequeno excesso sobre 100 % não seja distorcido pelo arredondamento. As respostas em que a compensação é material leem-se exatamente como antes, e a linha separada que indica qual o fator que se moveu não é alterada.

Um resumo declara a sua confiança sempre que a resposta tem um limite. A classificação era omitida por completo quando nenhum passo por trás de uma resposta levantava um aviso próprio — mesmo quando a resposta no seu conjunto tinha um limite, como uma variação que não podia ser dimensionada face ao ano anterior. Essa linha é a mais frequentemente reencaminhada isoladamente, pelo que o seu silêncio se lia como nada a dizer e não como o limite está indicado mais abaixo. O resumo passa agora a declarar a classificação e a nomear o limite: “Confiança na decomposição: alta. Advertências: este movimento não está dimensionado face à variação do ano anterior.” Uma resposta sem nada a assinalar continua a terminar sem ela.

Uma profundidade declarada indica quanto dela trouxe um valor. O resumo termina a indicar quantos passos atrás a resposta rastreou — e essa contagem é a única coisa na linha que diz até onde chegou, pelo que o leitor a toma como corroboração. Um passo que o rastreio alcançou mas de que não obteve qualquer número não é isso. Quando algum passo rastreado voltou vazio, a linha passa a indicar quantos deles devolveram um valor: “Traced 2 stages upstream; only 1 of the 2 came back with a figure — no figure at all for the remainder.” Um passo cuja variação foi medida mas não pôde ser atribuída a um único passo produtor continua a contar, porque uma variação medida é prova — que não pôde ser atribuída é indicado em separado, em Limites transparentes. Um resumo cujos passos devolveram todos um valor lê-se exatamente como antes.

Em vez de enterrar os pressupostos, o PlaidCloud apresenta-os como avisos em linguagem simples anexados à resposta:

Quando uma resposta assinala… Significa…
“This describes the whole pool” O valor é um total; para ver como se desloca entre membros (regiões, produtos, centros de custo), pergunte sobre um em concreto. Surge apenas quando a resposta não mostra qualquer decomposição por membro — quando é mostrada uma, esse aviso não é verdadeiro para ela e não é impresso. Quando o aviso nomeia um passo anterior da cadeia — abre com “Stage 2 (…)” — restringir a pergunta não chega a esse passo, pelo que deve rastrear a respetiva tabela.
“These periods aren’t equally complete” Um dos períodos pode ser um mês parcial ou uma janela curta, pelo que parte do movimento pode dever-se a dados em falta e não a uma variação real. As contagens de linhas que cita são as do resultado completo — numa tabela que recombina vários ramos de alocação, abrangem todos os ramos em conjunto.
“The pieces don’t fully reconcile” A decomposição detalhada não soma na perfeição o número principal — trate a repartição como indicativa, não como exata.
“The precise cause is partial” Os totais estão corretos, mas o fator exato da variação não pode ser totalmente atribuído com os dados disponíveis.
“Some targets couldn’t be measured” Num cenário hipotético, o cálculo de um passo falhou, pelo que os resultados que escreve não têm qualquer valor, em vez de um palpite. Os totais abrangem o que foi medido e tudo o que está a jusante desse passo é deixado de fora em vez de estimado a partir dele.
“Estimated on today’s shares” Uma estimativa hipotética reparte a variação pelos resultados afetados segundo a quota atual de cada um no conjunto — para que os valores somem — e reflete a forma como o modelo está configurado hoje, não uma previsão exata de um futuro em que as quotas possam ter mudado.

Isto não são letras miúdas. São as salvaguardas que impedem que uma resposta com ar confiante exagere discretamente o que os dados realmente sustentam.

Um aviso que descreve apenas parte do resultado indica qual. Um aviso pode ser levantado por uma parte de um resultado e não por todo ele, e os seus valores pertencem então apenas a essa parte — pelo que abre por a nomear. Num resultado que combina vários ramos de alocação, lê-se “Branch 4 (admin costs): …”; num que aloca várias colunas de valores em simultâneo, nomeia a coluna, “Column margin: …”. Leia um aviso sem prefixo como sendo sobre o resultado que pediu e um com prefixo como sendo sobre essa parte dele.

Quando se aplica a mais do que uma parte, nomeia-as todas — “Columns revenue, margin: …”. Assim, uma coluna ausente dessa lista é uma coluna a que o aviso não se aplica, que é precisamente o objetivo de as listar: num resultado de três colunas em que duas partilham um aviso, nomear apenas uma delas faria a outra parecer isenta. Um aviso levantado por todas as partes não leva qualquer prefixo, uma vez que não há nada a distinguir.

Um caso lê-se de forma diferente, e deliberadamente. Quando as partes levantaram cada uma o aviso com os seus próprios valores, o aviso apresentado é o de uma delas, e citar vários nomes à frente dos números de uma só parte atribuiria mal esses números — pelo que nomeia essa parte e lista as outras a seguir: “Column revenue (also raised by margin): …”. Os valores dessa frase são os de revenue; margin levantou o mesmo tipo de aviso com valores próprios.

Perguntar porque se moveu um valor implica indicar duas coisas entre as quais o comparar. Normalmente são dois períodos — o mês passado face a este, 2025 face a 2026 — e a resposta é escrita para isso: nomeia os períodos, dimensiona a variação face à mesma janela um ano antes e avisa se um período parecer menos completo do que o outro.

Mas as duas coisas não têm de ser períodos. Aponte a comparação a um cenário, uma versão, um caso, ou orçamento face ao real, e obtém uma explicação perfeitamente sólida da diferença entre eles — qual dos dois se moveu, o que o motivou e que membros o suportam. Isto funciona e vale a pena utilizá-lo.

O que corria mal era a formulação à volta. Ao comparar a versão 7 com a versão 8, a resposta recuava um passo e apresentava um veredicto “homólogo” que dimensionava a variação face à versão 6 — “275% the size of last year’s move; 6 → 7 moved -$400,000” — com todos os valores corretos e o sujeito da frase errado. Falava das duas versões como períodos e da que tinha menos linhas como possivelmente ainda em carregamento.

Uma resposta determina agora se a coluna que está a comparar é de todo um período, a partir do tipo da coluna, do seu nome e da forma dos valores que indicou. Quando não é:

  • A linha de abertura diz Valores comparados, nomeando a coluna e os seus dois valores, em vez de Períodos comparados.
  • Não é oferecido nenhum veredicto face ao ano anterior. Não há ano anterior a que recuar e a resposta di-lo em Limites transparentes, em vez de deixar a comparação por medir sem explicação. Nenhum valor é retirado.
  • Uma diferença nas contagens de linhas entre os dois lados é descrita como uma diferença no que cada lado abrange, não como um período que pode ainda estar em carregamento — entre dois cenários, o lado mais pequeno é muitas vezes o pretendido. Nomeia qual dos dois é mais curto, como o primeiro lado ou o segundo, pela ordem em que Valores comparados e as contagens de linhas são ambos impressos. Antes chamava-lhe “o lado mais fino”, que se define por ter menos linhas e deixava assim a frase a dizer apenas que o lado mais curto é o mais curto. A linha de abertura nomeia-o da mesma forma, onde antes dizia “o lado posterior” — uma palavra de calendário numa comparação que não tem calendário.

O teste é deliberadamente cauteloso: uma coluna conta como período se o seu tipo o disser, ou o seu nome o disser, ou os valores indicados parecerem datas, meses, trimestres ou anos. Qualquer um destes basta, pelo que um fiscal_year em número inteiro e um 2026-03 em texto continuam ambos a ser lidos como períodos, e as comparações por uma coluna de data, período, mês, trimestre ou ano não se alteram.

Duas respostas sobre a mesma tabela podem parecer semelhantes e significar coisas bastante diferentes: uma abrangendo todas as linhas, outra abrangendo uma única linha de negócio, entidade ou programa. Lidas uma a seguir à outra, o valor restringido é facilmente tomado por uma fatia do mais amplo — e não tem de o ser, porque os membros deixados de fora podem mover-se no sentido contrário, por vezes o suficiente para que a variação restringida seja maior do que a da tabela inteira.

Cada resposta diz qual é, na linha de abertura. Uma resposta sem restrição declara que os seus valores são os totais da própria tabela em cada período, com todos os membros incluídos. Uma restringida declara que os seus valores são os totais desse membro em cada período, com o resto da tabela posto de parte e — quando os valores são positivos — que a sua percentagem compara esses dois totais em vez de medir uma quota de algo maior. Quando os valores de uma resposta restringida são negativos em ambos os extremos, essa última nota é omitida: a resposta já lhe diz que o saldo ficou ainda mais abaixo de zero e chamar à percentagem uma comparação vulgar atenuaria o ponto.

Nenhuma das linhas diz coisa alguma sobre como se moveram os membros deixados de fora. A resposta não os mediu, pelo que não os carateriza.

A linha sem restrição é omitida quando a resposta já comunicou uma lacuna no seu próprio trabalho. Uma pergunta sobre uma tabela que recombina várias alocações é respondida ramo a ramo e, quando um desses ramos não pôde ser atribuído, a resposta di-lo mais abaixo. Declarar que todos os membros estão incluídos, na linha de abertura acima disso, seria lido como a afirmação de que nada foi deixado de fora. O mesmo se aplica quando a variação da própria tabela recombinada não pôde ser lida: não há então valor da tabela inteira para a linha descrever.

Diz quando a sua restrição não pôde ser aplicada

Seção intitulada “Diz quando a sua restrição não pôde ser aplicada”

Uma restrição nomeia uma coluna, e a tabela sobre a qual uma resposta incide pode não ter essa coluna. Quando não tem, não há nada por que filtrar — a consulta é executada sem restrição e todos os valores devolvidos abrangem a tabela inteira.

Nada na página o dizia. A resposta continuava a nomear a restrição em todos os sítios onde a nomeia: a frase de abertura, a linha da população acima, o título do bloco da tabela inteira, o título da lista de membros, a linha de resumo e o relato passo a passo no final. Todos os seis nomeavam uma população de que os valores não tratavam, e o bloco que existe para comparar um valor restringido com a sua tabela inteira imprimia o mesmo valor duas vezes, sob um título que prometia uma comparação. Perante essa página, os leitores não a conseguiam distinguir de uma tabela em que o membro que perguntaram calha ser a totalidade do negócio.

A resposta passa agora a começar por aí, antes de qualquer valor:

Resposta curta: entity=DE could not be isolated — cost_line_admin has no entity column — so this is the whole table: the total fell 26.2% (from $4,200,000.00 to $3,100,000.00).

A correção vem primeiro e o número fica subordinado a ela, porque a linha de abertura é a mais provável de ser reencaminhada isoladamente — e uma correção depois do número é lida de raspão. Nomeia a coluna em falta e não a definição que indicou, para que veja de imediato se nomeou a coluna errada ou a tabela errada. E diz que a restrição não pôde ser aplicada e não que não se aplicou, o que se leria como se o filtro tivesse sido executado e não tivesse feito diferença — numa restrição, isso diria que o membro sobre o qual perguntou é a totalidade do negócio.

A restrição deixa então de ser nomeada em qualquer outro ponto da página: nem linha da população, nem bloco da tabela inteira, nem âmbito na lista de membros, nem marcador de restrição no resumo. O relato passo a passo assinala um passo que foi executado sem restrição como sem restrição, e não como aquele que filtrou.

Uma resposta cuja restrição se aplicou normalmente não se altera, e nenhum valor se move em qualquer dos casos.

Quando uma tabela recombina várias alocações, os ramos são tabelas separadas e podem diferir — um pode ter a coluna e outro não. Aí a resposta não nomeia a restrição como população em lado nenhum, em vez de deixar o ramo que pôde ser restringido falar pelos restantes, e o relato passo a passo continua a distinguir os ramos que foram restringidos dos que não foram. Di-lo, pelas suas próprias palavras — veja Diz o que uma tabela recombinada pôde e não pôde restringir mais abaixo.

Uma restrição pode nomear várias colunas, e uma tabela pode ter algumas e outras não. Pergunte por lob=COMMERCIAL e region=WEST numa tabela que tem lob mas não region, e os valores regressam restringidos à linha de negócio e abrangendo todas as regiões.

Essa é a resposta útil, e é a que obtém. O que a página fazia antes era comunicá-la como se ambas as metades tivessem sido aplicadas — nomeando region=WEST na frase de abertura, na linha da população, no título da tabela inteira, no título da lista de membros, na linha de resumo e no relato passo a passo, ao lado de valores que nunca tinham sido filtrados por região. Todos os valores estavam corretos; todas as descrições do que abrangiam não estavam.

A resposta passa agora a nomear apenas o que realmente restringiu os valores e abre por dizer o que não restringiu:

Resposta curta: region could not be isolated (cost_line_admin has no region column) — so these figures cover all region values: the total for lob=COMMERCIAL fell 26.2% (from $4,200,000.00 to $3,100,000.00).

Restringir a lob=COMMERCIAL em silêncio seria, por si só, uma afirmação — a de que a resposta abrange o que pediu — pelo que a página declara a insuficiência nos dois sítios de onde um leitor extrai texto: a linha de abertura e a lista de limites transparentes no final, que nomeia também a população sobre a qual os valores são medidos.

Uma coluna que nomeia mas deixa sem quaisquer valores é tratada da mesma forma e dita de outra, porque a causa é diferente: a coluna está na tabela e são os valores que faltam. Aí a resposta diz que o filtro nomeou a coluna mas não lhe deu nenhum valor — o filtro é o que ficou aquém, não os dados, e, ao contrário de uma coluna em falta, pode corrigi-lo perguntando de novo.

O relato passo a passo mantém a mesma distinção por passo, no vocabulário que já utilizava para um passo executado sem restrição:

Stage 1 (allocation): cost_line_admin [cost] (lob=COMMERCIAL, all region values) — delta -$1,100,000.00.

Quando uma tabela recombina várias alocações e os ramos divergem quanto à coluna, a resposta não nomeia a tabela de um ramo como aquela que não a tem. Quando nenhum a tem, di-lo abertamente, em vez de o deixar interpretar “nem todas” como significando que algum ramo foi, afinal, restringido; e quando alguns a têm, nomeia cada coluna em separado como não existindo na tabela de todos os ramos, porque “nem todas as tabelas têm uma coluna lob ou region” é falso numa página cujas tabelas têm cada uma uma das duas.

Essa distinção importa para o que a resposta passa a afirmar abranger. Um ramo cuja tabela tem a coluna foi realmente restringido ao valor que pediu, pelo que dizer que os valores abrangem todos os valores dela seria verdadeiro para um ramo e falso para outro — e um leitor a quem se dissesse isso poderia razoavelmente descartar um valor que é em parte o que pediu. Assim, a resposta diz antes que a restrição chegou a cada ramo apenas onde a respetiva tabela o permitiu:

Resposta curta: region could not be isolated (east_lines has no region column) — so each branch is narrowed on region only where its table has that column: across 2 recombined branches for lob=COMMERCIAL, all 2 fell.

A formulação “abrange todos os seus valores” é mantida para o caso em que é de facto verdadeira — quando a tabela de nenhum ramo tem a coluna, pelo que nada foi restringido em lado nenhum.

Uma resposta que não consegue aplicar a sua restrição limitava-se antes a dizê-lo. Recusava-se a simular um filtro que não conseguia executar — o que é a recusa certa — e deixava-o a saber que o número à sua frente não era o que pretendia, sem nada que nomeasse o que podia pedir em vez disso.

Passa agora a terminar com as colunas que essa tabela efetivamente tem, lidas da própria tabela e não adivinhadas:

Para ir mais longe: To isolate a slice, re-ask with a target_filter naming one of cost_line_admin’s own columns — account, cost_center or product — and a value from that column.

A lista é aquilo que o próprio assistente procuraria para fazer um corte, pelo que as colunas que oferece são aquelas com que a resposta consegue realmente trabalhar. É uma oferta e não uma listagem completa do esquema: uma coluna cujo nome colidiria com a formulação de um dos limites declarados da própria resposta é deixada de fora, para que nada na sugestão possa ser confundido com um limite que a resposta está a declarar.

Quando nomeou uma coluna que a tabela tem e se limitou a deixá-la sem valor, essa coluna encabeça a oferta, para que a única nova pergunta que corrige a página não fique enterrada numa lista alfabética:

Para ir mais longe: entity is a column of cost_line_admin — only entity’s value was missing. To isolate a slice, re-ask with a target_filter naming one of cost_line_admin’s own columns — account, cost_center, entity or product — and a value from that column.

Peça uma coluna que não está na tabela e outra que está mas sem valor, e a resposta nomeia cada falha com a sua própria causa, em vez de oferecer um único motivo para ambas — a segunda é a metade recuperável, e um leitor que transporte o primeiro motivo para ela deixa de tentar aquilo que teria funcionado.

Uma resposta cuja restrição foi aplicada não se altera: não tem tal conselho a dar e não dá nenhum.

Diz o que uma tabela recombinada pôde e não pôde restringir

Seção intitulada “Diz o que uma tabela recombinada pôde e não pôde restringir”

Uma tabela que recombina várias alocações são várias tabelas, cada uma com o seu esquema, pelo que uma restrição pode chegar a alguns ramos e a outros não. Não é um caso extremo — é o motivo normal por que existe uma união.

As duas formas como pode correr produziam antes uma página que não nomeava a restrição em lado nenhum e não explicava nada. Passam agora a ler-se de forma diferente uma da outra, porque são situações diferentes e uma frase que sirva para ambas não lhe diz nenhuma.

Quando nenhuma tabela de ramo tem a coluna, nada foi restringido em lado nenhum:

Resposta curta: region could not be isolated (no branch’s table has a column named region) — so these figures cover all region values: the combined total fell 26.2% (from $8,400,000.00 to $6,200,000.00); across 2 recombined branches, all 2 fell.

Quando alguns ramos foram restringidos e outros não, a resposta di-lo e assinala o total combinado, que é o valor com maior probabilidade de ser citado noutro lado:

Resposta curta: region=WEST reached some branches and not others (east_lines has no region column) — so these figures are part that slice and part whole-table: the combined total fell 26.2% (from $5,100,000.00 to $3,740,000.00), but that is not a region=WEST figure; across 2 recombined branches, all 2 fell.

A lista por ramo abaixo dela nomeia cada ramo pela tabela que escreve, para que o ramo nomeado na abertura seja o que pode encontrar na lista.

Uma resposta recombinada cuja restrição chegou a todos os ramos lê-se exatamente como antes.

Um valor para uma linha de negócio significa pouco por si só. Uma linha que cresceu 4,2 % dentro de uma carteira que encolheu 6,2 % é uma história diferente da de uma que cresceu dentro de uma carteira que cresceu — e o mesmo número descreve ambas. A resposta restringida dava-lhe esse número e deixava a comparação consigo, ao mesmo tempo que nomeava a variação da tabela inteira como aquilo mesmo com que tinha medido a variação restringida.

Assim, uma resposta restringida lista agora, a par dos seus próprios valores, como se moveu a tabela inteira nos mesmos períodos em cada coluna que comunica. As linhas restringidas fazem parte desse total e a resposta di-lo em vez de o deixar a calcular. Quando os dois divergem no sinal — a linha negativa em ambos os extremos do período enquanto a tabela é positiva em ambos — isso é declarado por palavras, e não deixado a um sinal de menos que poderia não notar.

Nada de novo é medido para isto. Os valores da tabela inteira já eram aquilo com que a variação restringida era comparada; simplesmente nunca eram mostrados.

Dois valores lado a lado deixam, ainda assim, uma subtração, e é a subtração que conta a história. Uma linha que subiu mais do que a sua tabela inteira subiu significa que tudo o que está fora dessa linha desceu — a linha ganhou quota num conjunto que ia no sentido contrário, o oposto de como se lê um valor em subida por si só. Assim, quando o movimento fora das linhas restringidas vai contra elas, a resposta declara-o agora: o montante, o seu sentido e a coluna a que pertence. Quando vai no mesmo sentido, que é o caso normal, nada é acrescentado — um restante que se move com a linha não lhe diz nada em que atuaria. Ambos os valores de que é retirado são impressos acima dele, para que possa verificar a aritmética sem pedir mais nada.

Uma resposta sem restrição não recebe este bloco: já comunica a tabela inteira, pelo que repeti-lo seria o mesmo valor duas vezes sob duas etiquetas.

Uma resposta sobre uma tabela que recombina várias alocações recebe uma versão própria. Os seus ramos são tabelas separadas, pelo que não há uma única tabela inteira a nomear — e cada linha de ramo nomeia a variação do seu conjunto como aquilo com que esse ramo foi medido. Uma resposta restringida sobre essa tabela lista agora a tabela inteira de cada ramo nos mesmos dois períodos, com a tabela nomeada em cada linha e as linhas restringidas incluídas nela. Perguntar porque desceram os custos alemães num modelo real devolveu quatro ramos em queda de cerca de 58 % cada, dentro de quatro tabelas que tinham elas próprias caído aproximadamente na mesma proporção — pelo que, fosse o que fosse que se moveu, não foi algo que tenha acontecido só à Alemanha, e a resposta deixa de deixar isso para ser deduzido a partir de valores que não mostra.

A sua lista de membros diz de quem decompõe a variação

Seção intitulada “A sua lista de membros diz de quem decompõe a variação”

A lista de membros é a parte de uma resposta com maior probabilidade de ser copiada por inteiro, e era encabeçada apenas pela decomposição — “All movers by account” — sem nada que dissesse a que população pertencem essas linhas. Numa resposta restringida, a variação da tabela inteira na mesma coluna é impressa acima desse título, pelo que o último âmbito que passa pelo caminho nomeia o errado, e as linhas não somam o valor acima delas.

Nada disto parece errado. As linhas são exatas e somam exatamente a variação restringida, pelo que um leitor que reconcilie a partir do topo obtém uma resposta errada autoconsistente, sem nada que o leve a olhar uma segunda vez — e a quota de cada membro no movimento de toda a empresa sai errada em tudo o que o resto da tabela fez — sobrestimada quando o resto da tabela se moveu em sentido contrário, subestimada quando se moveu ainda mais no mesmo sentido.

A lista de membros de uma resposta restringida nomeia agora a sua população no título, entre a decomposição e a coluna pela qual as linhas são ordenadas: “All movers by account within entity=EU_DIST”, “All movers by branch within lob=COMMERCIAL — net_contribution”. Lê-se within e não for porque a decomposição é muitas vezes por conta, e “by account for entity=EU_DIST” é lido como o verbo antes de ser lido como o âmbito.

O âmbito vai antes da coluna e antes de “(largest shown)” deliberadamente. Depois da coluna, lê-se como parte do nome da coluna; depois de “(largest shown)”, fica a reboque de uma afirmação sobre completude com a qual nada tem que ver.

Uma resposta que abrange a tabela inteira não se altera: as suas linhas já são as da tabela e um âmbito aí nomearia a única população que existe.

Quando uma tabela comunica várias colunas ao mesmo tempo — rendimento a par dos encargos que dele são deduzidos, ou receita a par do custo — a lista de membros ao lado da resposta é ordenada por uma delas. Essa lista e o resto da resposta podem então parecer discordar. Um ramo nomeado como a maior parte da variação numa coluna de encargos pode estar em último na ordenação, porque um membro cujos encargos desceram a par do rendimento resulta em quase nada em termos líquidos. Ambas as afirmações são verdadeiras e, lidas em conjunto sem nada entre elas, a conclusão natural é que uma delas tem de estar errada.

Assim, a lista de membros diz agora, acima das suas linhas, que colunas a ordenação subtrai — e, portanto, que um membro grande nessas colunas pode ficar pequeno na lista. Um membro grande num encargo e pequeno em termos líquidos lê-se então como aritmética e não como um erro.

A linha declara o que pode acontecer, não o que aconteceu. Dizer que os movimentos de um membro em particular se anularam exige uma medida que a resposta nem sempre tem, e uma frase que nomeasse um membro apontaria para o errado em tabelas onde o membro que vale a pena ler é outro. Nomear a relação permite-lhe aplicá-la ao membro que estiver a ver.

Duas respostas não recebem esta linha. Uma cujas colunas não somam entre si não recebe nada, porque nada nesses valores identifica um encargo e a resposta não adivinha. Nem uma em que nenhum membro é comunicado como concentrado em qualquer coluna, uma vez que não há então uma segunda afirmação com a qual a ordenação pareça contradizer-se.

Uma linha de passo no rastreio pode conter duas afirmações sobre uma variação. A primeira nomeia o fator por trás dela — o conjunto de onde o valor é retirado moveu-se, em vez da quota desta fatia nesse conjunto. A segunda nomeia o membro em que a variação reside: um ramo é 70 % dela.

Ambas estão certas e são cortes em eixos diferentes — um reparte a variação pelos fatores que a produziram, o outro pelos membros onde assentou. Lidas da esquerda para a direita, parecem respostas concorrentes à mesma pergunta, e ganha a mais específica. Os leitores a quem só era dada a página tomavam “o total do conjunto desceu” e “um ramo é 70 % disso” como uma contradição e escolhiam uma.

Quando uma resposta já decompõe um conjunto conservado por membro, dizia que as duas são medições separadas — essa era a única forma em que isso era declarado. Assim, uma resposta restringida a uma linha de negócio, entidade ou programa, que é precisamente onde o fator nomeado é com mais frequência o total do conjunto e o membro concentrado fica dentro da restrição, não o dizia em lado nenhum.

Essas respostas di-lo agora uma vez, em Limites transparentes: o fator nomeado para uma variação e o membro em que ela se concentra são medições separadas, e uma variação pode resultar quase por inteiro do movimento do total do conjunto e, ainda assim, residir quase por inteiro num único membro. É acrescentado apenas quando uma linha de passo contém ambas as afirmações e nada mais na página o diz já, pelo que uma resposta que já o cobria não ganha uma segunda cópia.

Quando o PlaidCloud explica porque se moveu um número, não pára na primeira história plausível. Reconcilia as partes com o todo e, se não coincidirem, di-lo e reduz a sua confiança — para que uma lacuna subtil nos dados surja como advertência, nunca como falsa precisão.

Todos os valores provêm de uma consulta real aos seus dados. Se uma pergunta exigir dados a que não tem acesso, ou os dados simplesmente não existirem, o PlaidCloud di-lo claramente em vez de adivinhar. O PlaidCloud não inventa nada: sem totais alucinados, sem nomes de contas inventados, sem tendências forjadas.

O resumo escrito é verificado, não apenas escrito

Seção intitulada “O resumo escrito é verificado, não apenas escrito”

Quando um assistente transforma uma análise num parágrafo legível, existe um risco discreto: a prosa omite uma advertência ou arredonda um valor para algo que os dados nunca disseram. O PlaidCloud fecha essa lacuna. A par do resultado estruturado, pode devolver um resumo em linguagem simples construído diretamente a partir da análise — que declara o nível de confiança, inclui todas as advertências e não contém qualquer valor que não provenha de uma consulta real aos seus dados.

Vem com uma verificação de fidelidade complementar que o seu assistente pode executar sobre a sua própria versão reformulada: manteve o nível de confiança, manteve todas as advertências e evitou inventar um valor? Se a reformulação se desviar, a verificação deteta-o. O resultado é uma narrativa comprovadamente fiel aos números subjacentes — e não apenas fluente.

Uma resposta de “e se isto mudasse” recebe o mesmo tratamento. Antes devolvia os seus valores e uma lista de notas e deixava-o a montar a história. Agora abre por dizer quanto da variação consegue justificar e em quantos resultados, lista os resultados que a variação atinge diretamente com a quota de cada um na variação que aplicou e coloca os resultados que só conseguiu medir em parte — e os que não conseguiu medir de todo — em secções próprias, em vez de os deixar sem marca na mesma lista. Os resultados que se movem apenas em consequência de outro são listados em separado e marcados como já contados nos valores acima, para que nunca os some por cima. Quando a variação não pode ser seguida de todo, a resposta começa pelo motivo em vez de pelos números.

A verificação mantém uma reformulação de um cenário hipotético fiel ao que a resposta não conseguiu medir. Um resultado que a resposta não conseguiu medir tem um impacto desconhecido, não nulo, e no entanto uma versão reformulada podia citar o valor de outro resultado a seu lado e ainda assim passar. Agora, uma oração que nomeie um resultado desses junto a um valor tem também de dizer que não foi medido. Quando não o diz, a verificação indica como corrigir: manter o valor junto do resultado ou do total a que pertence e dizer que o resultado não foi medido, ou retirar um valor que foi atribuído a esse resultado. Deixa também de rejeitar a formulação própria de uma resposta hipotética quando o nome de um resultado contém um montante em dólares.

Um bom analista não se limita a responder — diz-lhe o que perguntar a seguir. Cada resumo sugere o seguimento natural, tirado do que a análise realmente encontrou: restringir a um único membro quando o valor é um total do conjunto, decompor a variação por uma dimensão quando uma parece ser a causa, ou apontar um passo específico quando uma tabela de resultados é construída por mais de um. Pode atuar sobre a sugestão sem saber a formulação exata — basta pedi-la.

Todas essas respondem a qual — que membro, que campo, que passo. Uma outra responde a quando. Quando uma resposta nomeia um fator principal e lhe atribui uma percentagem, essa percentagem é medida uma só vez, sobre a totalidade do período que comparou — pelo que um movimento que ocorreu de uma só vez e um que se foi construindo de forma gradual dão o mesmo valor. O assistente oferece-se para voltar a executar sobre vários períodos mais estreitos e comparar esses entre si, que é o que distingue os dois; um único período mais estreito é, por si só, a mesma comparação de dois pontos outra vez. Diz no mesmo fôlego que os valores mais estreitos não somarão o valor acima, porque cada período é medido por si — o conjunto, o fator e a repartição são todos recalculados para ele, pelo que essas quotas são uma resposta própria e não uma divisão da mais ampla. Não nomeia nenhum período em particular, porque a parte do intervalo que importa é sua para escolher e adivinhá-la seria uma constatação que a análise não fez. Quando comparou duas coisas que não são períodos — dois cenários, duas versões, orçamento face ao real — a sugestão não surge de todo, porque não há um intervalo mais estreito para executar e o assistente não descreve essa comparação como tempo.

É retida em mais dois casos, ambos porque a sugestão apontaria de outra forma para longe da resposta que pediu. Quando a resposta já comunicou que um dos dois períodos tem muito menos linhas do que o outro, e pediu que o carregamento fosse verificado antes de se confiar na variação, dividir esse período em períodos mais estreitos dispersa a insuficiência em vez de a resolver — e a contagem de linhas que levantou a dúvida enfraquece em cada janela mais estreita. E quando uma resposta abrange várias colunas de valores e a coluna com que começa não tem percentagem própria, todas as percentagens que a sugestão qualificaria pertencem a uma coluna sobre a qual não perguntou, pelo que se lê como um limite da resposta sem tocar em nada dela. Uma resposta cuja própria coluna principal declara uma percentagem continua a receber a sugestão.

Uma sugestão é também omitida quando executá-la devolveria aquilo que já está a ver. Numa resposta que abrange uma única coluna, o campo que o assistente escolheu como a melhor explicação é o campo pelo qual a tabela de membros já está agrupada, pelo que “decompor a variação por esse campo” devolvia a mesma tabela — e a nota a seu lado dizia que os valores não coincidiriam com os da página, quando coincidem exatamente. Quando a decomposição responderia genuinamente numa coluna diferente, a sugestão mantém-se.

Quando a análise encontrou vários candidatos entre os quais não adivinha — dois passos que constroem ambos uma tabela, ou vários campos demasiado próximos para os separar como explicação de uma variação — oferece cada um deles como uma sugestão separada, em vez de lhe pedir que escolha sem dizer entre o quê. As sugestões que pode executar exatamente como escritas vêm primeiro.

Quando esses candidatos são campos, passam agora a ser nomeados na própria constatação e não apenas nas sugestões abaixo dela. Cada um é apresentado com o seu membro mais forte e quanto se moveu o valor próprio desse membro, face à variação da coluna no seu todo — para que veja qual das histórias empatadas é a maior antes de escolher entre elas. Dizer apenas que obtiveram pontuação idêntica escondia isso: num modelo automóvel, ambos os membros empatados se tinham movido mais do que a coluna inteira, e os seus dois valores juntos davam mais de quatro vezes essa variação, enquanto um leitor a quem se dizia “vários obtiveram pontuação semelhante” tomava os dois por intermutáveis e reportava o que viesse primeiro. A resposta diz também, no mesmo fôlego, que os candidatos se sobrepõem em vez de repartirem o conjunto entre si — cada um é um corte diferente da mesma variação, pelo que os valores não são partes de um total e somá-los não descreve nada. E como um par de campos é uma vista que a pesquisa nunca pontuou, a tabulação cruzada é oferecida como um passo seguinte a executar — decompor a variação pelos dois em simultâneo — e não como algo que a análise tenha medido.

Uma pesquisa que não encontrou nada continua a valer a pena comunicar. Quando não indica um campo pelo qual decompor a variação, o assistente procura aquele que melhor a explica — e quando nada do que tentou a explicou suficientemente bem para ser comunicado, di-lo em vez de se calar: a variação lê-se como um movimento amplo em todo o conjunto, e eis o campo que mais se aproximou, nomeando o seu maior membro e a parcela da variação que esse membro explica. O membro é nomeado porque esta é a única constatação de que a resposta não tem certeza, pelo que é aquela que mais precisa de poder verificar — e é o que torna o aviso que a acompanha, de que um seguimento pode começar por um membro diferente, algo que pode testar. Esse campo é oferecido como uma sugestão que pode executar como escrita, descrita como o mais forte de um campo fraco e não como uma decisão apertada, porque a pesquisa o julgou não explicativo. A confiança nos valores não é reduzida por isso — nada foi escolhido, pelo que não há palpite a descontar.

Estes dois últimos são resultados diferentes e a formulação mantém-nos separados: vários campos com pontuação igualmente boa dão-lhe uma sugestão para cada um, com os candidatos nomeados e dimensionados e a oferta de cortar por dois deles em conjunto, enquanto nenhum com pontuação suficientemente boa dá-lhe uma única coisa mais próxima, oferecida exatamente como tal.

Num resultado com várias colunas de valores, a nota nomeia a coluna que pesquisou. Esses resultados — custo, receita e margem lado a lado, por exemplo — são pesquisados uma coluna de cada vez, enquanto a própria resposta começa pela coluna de resumo. Um resultado “nada encontrado” diz por isso a que coluna respeita a variação, em vez de se ler como um veredicto sobre o resultado inteiro. Leia-o pelo que nomeia: outra coluna do mesmo resultado pode muito bem ter um campo que a explica, e pedir diretamente essa decomposição dir-lho-á.

Duas percentagens que se parecem são distinguidas. Quando o assistente escolhe o campo que melhor explica uma variação, o valor que comunica é o deslocamento da quota desse campo no conjunto. Quando decompõe a variação por um campo, o valor é a variação própria de cada membro. São medições diferentes sobre totais diferentes, e ambas estão corretas — pelo que cada uma diz qual é, em vez de ambas se lerem como uma simples percentagem da variação. O que nenhuma delas faz é prometer que os dois números serão diferentes. Nenhuma decomposição por membro imprime uma percentagem por membro — as suas linhas são montantes — pelo que um aviso formulado como uma discrepância o enviava à procura de uma comparação que não podia fazer, e um aviso que não pode verificar é um que aprende a ignorar. Cada uma diz o que são as duas medidas e fica por aí.

Isso vale também para a nota do candidato mais próximo acima, em que a pesquisa não se fixou em nada: a quota que cita para o campo que mais se aproximou é também um deslocamento de quota, e uma decomposição por esse campo comunica a outra medida. Ficar abaixo do limiar é uma afirmação sobre a pesquisa, não um teto para o que a decomposição mostrará.

Vale também para um empate, e aí as duas medidas ficam numa só frase: os candidatos foram pontuados de igual modo nesse mesmo deslocamento de quota, enquanto os valores impressos a seu lado são as variações próprias dos seus membros. A resposta nomeia assim ambas as medidas, em vez de deixar os montantes passarem por aquilo que a pontuação comparou. Não avança para afirmar que os dois resultam em tamanhos diferentes — nenhum valor de quota é impresso aí para o verificar, e um aviso que não pode verificar é um que aprende a ignorar.

A maioria das ferramentas de análise com IA é confiante, quer tenha razão ou não. Um chatbot genérico acoplado a um painel de controlo produzirá uma resposta fluente e com ar de autoridade — e não lhe dá forma de distinguir uma resposta sólida de uma errada. Para esse tipo de ferramenta, cada número é apenas um número.

O PlaidCloud foi construído ao contrário. A classificação de confiança, a autoconciliação e as advertências honestas fazem parte de cada resposta, porque uma resposta em que não pode confiar não vale a pena ter. Essa honestidade é o ponto central: é o que lhe permite pegar numa explicação gerada por IA e realmente usá-la — numa apresentação à administração, numa previsão, numa decisão — sem a voltar a verificar manualmente.

Não precisa de adotar uma nova ferramenta para ter isto. A análise honesta do PlaidCloud chega através do assistente em que a sua equipa já trabalha:

  • Rastrear alocações — veja a confiança honesta e as advertências em ação numa pergunta real sobre alocações
  • Caminhos de análise — dê nomes às suas tabelas principais para poder simplesmente perguntar “porque é que isto mudou?”
  • Microsoft 365 Copilot — leve a análise honesta com IA a toda a sua equipa