Analisar alocações com um agente de IA
O servidor MCP do PlaidCloud expõe os seus modelos de alocação a agentes de IA, pelo que, depois de executada uma alocação, pode fazer perguntas sobre os respetivos resultados em linguagem corrente, a partir de um chat ligado por MCP — Claude Code, Claude Desktop, Cursor, ChatGPT ou qualquer cliente compatível com MCP. O agente lê diretamente o seu modelo de alocação, pelo que já sabe como é construída cada linha de custo e o que a determina.
O que pode perguntar
Seção intitulada “O que pode perguntar”Porque é que uma alocação mudou
Seção intitulada “Porque é que uma alocação mudou”A pergunta mais comum — comparar dois períodos e explicar a variação:
Why did the revenue-allocated cost line change from January to February?
O agente devolve:
- A dimensão da variação — antes, depois e a diferença.
- O que a provocou — se o conjunto de custos de entrada aumentou ou diminuiu, ou se a combinação de indutores se alterou.
- Os principais contribuintes — as contas, os centros de custos ou os produtos que mais se alteraram.
Aprofundar uma fatia
Seção intitulada “Aprofundar uma fatia”Restrinja a mesma pergunta a um único membro para obter uma decomposição precisa:
Explain just the Operations cost centre.
O agente separa os dois efeitos — quanto resultou da variação do conjunto global e quanto resultou da alteração da quota da fatia nesse conjunto. Por exemplo: Operations desceu porque o conjunto diminuiu, apesar de Operations ter ficado com uma quota maior do mesmo.
Quando a explicação é que a quota se alterou, o agente indica o indutor segundo o qual essa quota é repartida e apresenta a quota antes e depois — “the shift in this slice’s share of the pool (split on the headcount driver; this slice’s share of the cost pool went 26.5% to 18.2%)”. Esta é a parte em que pode atuar: uma quota é um resultado, um indutor é uma entrada de que alguém é responsável e que pode verificar. Os dois valores são essa mesma quota do conjunto, apresentada em vez de o deixar a procurá-la. Indicam de quem é a quota porque não são uma quota da coluna do indutor, e as duas podem diferir por completo: uma fatia pode manter uma quota perfeitamente constante do indutor nos dois anos enquanto a sua quota do conjunto cai oito pontos, pelo que ler o par como sendo do indutor levá-lo-ia a reponderar uma entrada que nunca se alterou. O indutor é indicado sem valores sempre que essa quota não seja uma percentagem razoável. Uma fatia pode deter mais do que a totalidade de um conjunto, ou menos do que nenhuma parte dele, quando o conjunto inclui créditos ou estornos que se compensam entre si — uma linha com prejuízo é o caso mais comum — e uma quota de “11.1% to 900.0%” parece um erro em vez de informativa. Nesses casos o indutor continua a ser a alavanca, pelo que continua a ser indicado. E um passo sem qualquer indutor não tem nenhum para indicar, pelo que a frase se mantém como sempre foi.
A quota indica a coluna a cujo conjunto pertence. Cada coluna de valores é alocada a partir do seu próprio conjunto, pelo que, numa tabela com várias delas, uma fatia tem uma quota de cada uma — e a linha dizia apenas “pool share”, o que, num modelo, apresentava três quotas para a mesma fatia sobre o mesmo par de anos (26.5% to 18.2%, 25.9% to 18.1%, 21.9% to 16.9%) sem nada que as distinguisse. Agora cada uma lê-se “this slice’s share of the cost pool”, “of the revenue pool”, “of the margin pool”. As respostas de coluna única também indicam a respetiva coluna, porque “pool share” é igualmente indeterminado aí — quota do conjunto desta coluna ou do conjunto do modelo? Quando o passo não tem um nome de coluna legível, a linha lê-se como antes, em vez de não indicar nada.
As outras duas explicações são deixadas propositadamente como estão: quando a explicação é que o conjunto como um todo se alterou, ou que o valor recebido mudou, o indutor não é o mecanismo e indicá-lo apontar-lhe-ia a entrada errada.
De onde vêm os valores e o que alimentam
Seção intitulada “De onde vêm os valores e o que alimentam”Siga a linhagem de uma alocação em qualquer das direções:
Where does this cost line come from?
What does the GL cost pool feed downstream?
O agente enumera as origens e os indutores a montante, ou todos os passos a jusante que a tabela alimenta — entre alocações e as transformações que as separam.
O que determina uma alocação
Seção intitulada “O que determina uma alocação”Is revenue used as a driver, and where?
O agente enumera cada passo que utiliza a tabela como indutor — a base da repartição — em oposição a uma entrada, os valores a repartir.
O que faria uma alteração
Seção intitulada “O que faria uma alteração”Faça uma pergunta prospetiva:
If revenue rises by 1 million next quarter, which cost lines are affected?
O agente indica as saídas afetadas e uma dimensão estimada para cada uma — repartida por uma expansão segundo a quota atual do conjunto de cada resultado, para que os valores por destino somem em vez de cada um mostrar a alteração completa. Também pode restringir a pergunta a um único destino — “what would a $1M revenue rise do to Customer A?” — e a estimativa é aplicada apenas a essa fatia.
Que alocações existem
Seção intitulada “Que alocações existem”What cost allocations are in this project?
O agente enumera os modelos de alocação e as respetivas tabelas de saída finais — útil para se orientar num modelo desconhecido.
Compreender a resposta
Seção intitulada “Compreender a resposta”Cada explicação é etiquetada com o grau de confiança do agente nela — e, igualmente importante, sinaliza quando um número com ar confiante seria enganador. Esses avisos são levados para o próprio resumo em linguagem corrente, e não enterrados no detalhe, pelo que os vê antes de atuar com base no valor.
A linha indica que decomposição está a classificar, quando classifica uma. Quando a resposta abrange uma única coluna de valores e lhe mostra uma decomposição por membro, a linha de confiança indica o campo segundo o qual essa decomposição é feita — “Confidence in this breakdown by lob: high” — e é o mesmo campo que encabeça a lista de maiores variações acima dela. Isto é mais importante quando segue o passo seguinte sugerido pela própria resposta: o mesmo valor repartido por linha de negócio e, depois, por agência pode ser classificado com toda a honestidade como médio e depois como alto, porque repartir de outra forma altera os membros que se compensam mutuamente. Sem o campo indicado, estas leituras surgem como um só número classificado duas vezes, com a segunda leitura a soar a “olhámos de novo e está bem”. Com o campo, são duas classificações de duas decomposições diferentes.
Quando uma resposta abrange várias colunas, não indica qualquer campo, porque mostra a decomposição de uma delas. A classificação abrange todas as colunas; a lista de membros abrange uma e diz qual no seu próprio cabeçalho. Indicar o campo nos dois locais classificava uma decomposição por programa em três colunas ao mesmo tempo que lhe dizia, poucas linhas abaixo, que duas das três descrevem apenas o conjunto na sua totalidade. Essa resposta lê-se agora “Confidence in these figures”, e a lista de maiores variações é que lhe diz a que coluna e a que campo pertencem os seus membros. Uma resposta que não mostra qualquer decomposição lê-se da mesma forma.
Quando uma resposta abrange várias colunas de valores, o bloco diz como essas colunas se relacionam e entre que valores cada uma se moveu. Cada linha indicava uma variação e uma percentagem, mas não os montantes, pelo que margin a descer 19.9% ficava ao lado de cost a descer 10.4% e de revenue a descer 11.5% e lia-se como a margem a erodir quase ao dobro da velocidade dos custos. Não é assim: as três equilibram-se exatamente, e margin abre em $53,848,657.50 contra $401,305,825.54 de cost, pelo que o mesmo montante em dólares é uma percentagem muito maior dela. Nenhum dos factos estava na página, e a única coluna cujos montantes de abertura e fecho eram apresentados era a única que não precisava deles — pelo que apurar a alavancagem implicava recuperar um montante inicial a partir de uma percentagem arredondada a uma casa decimal, que o fixa com precisão não melhor do que alguns por cento. Agora cada linha termina com os dois montantes entre os quais se moveu — - margin: -$10,701,036.06 (-19.9%), from $53,848,657.50 to $43,147,621.44 — e uma linha acima das linhas indica que as colunas se equilibram ao cêntimo em ambas as extremidades do período, bem como nas respetivas variações, exprime esse equilíbrio em função de uma delas e diz qual parte do montante mais pequeno: “These 3 tie out to the cent at both ends of the period, and so do their changes: margin equals revenue less cost. The smallest opening level is margin’s, so a given dollar amount is a much larger percentage of it than of the others.” Ambas as afirmações podem ser verificadas nas linhas imediatamente abaixo, que é toda a razão para as fazer.
Não diz nada sobre a forma como o seu modelo é construído. Se uma dessas colunas é calculada a partir das outras não é algo que a resposta consiga ver, e todos os rearranjos de um equilíbrio são igualmente verdadeiros — margin = revenue - cost e cost = revenue - margin descrevem os mesmos três valores — pelo que indicar uma como a coluna calculada afirmaria algo que a aritmética não sustenta. A coluna em função da qual o equilíbrio é expresso é uma escolha declarada, a que parte do montante mais pequeno, e não uma constatação. A resposta também não inclui uma negação explícita: nada na página a sustentaria, e uma negação sem fundamento ao lado de um equilíbrio verificável custa ao equilíbrio a sua credibilidade.
Quando existe uma segunda relação exata nos mesmos valores, o bloco indica-a também. O equilíbrio diz como as colunas se somam, e um leitor a quem isso é entregue deixa de procurar outras — pelo que, num modelo bancário que reportava proveitos face aos encargos que os reduzem, o facto de o encargo de capital ser exatamente quatro décimas do encargo de financiamento nos dois períodos ficava por dizer, e duas linhas que são uma só quantidade contada duas vezes liam-se como custos independentes. Quando duas colunas mantêm um rácio em ambas as extremidades, o bloco indica agora o rácio e diz que as duas se moveram, por isso, à mesma taxa: “capital_charge and funding_charge hold a constant ratio of 0.4 at both ends, so the two move at the same rate.” Quando um grupo mais alargado de colunas mantém um, indica o grupo — “All 3 moved at the same rate, so their ratios to one another are unchanged” — e quando um rácio se mantém ao longo de uma mudança de sinal, essas colunas moveram-se em proporção e não a uma só taxa, porque uma subida medida face a um montante positivo e uma descida medida face a um montante negativo são iguais e de sentido oposto. Tal como o próprio equilíbrio, cada uma pode ser verificada nos dois montantes de cada linha abaixo.
O equilíbrio é indicado e a comparação de dimensões é omitida quando uma coluna parte de um montante negativo — o menor em dimensão e o menor em valor passam então a ser duas colunas diferentes, e “o menor” deixa de poder ser respondido a partir dos montantes impressos abaixo — quando o menor montante inicial não é muito inferior ao seguinte, e sempre que os valores a seu lado já mostrem essa coluna a mover-se à taxa de outra — que é precisamente onde estabeleceria uma diferença que eles depois negam. Não é indicado nada quando mais do que um arranjo do equilíbrio se ajusta aos valores, quando as colunas dão zero entre si, quando não se equilibram ao cêntimo, ou quando duas colunas partem do mesmo montante e não existe um único menor em função do qual exprimir o equilíbrio. Este último caso abrange todas as respostas de duas colunas: a = b e a = -b são os únicos equilíbrios que duas colunas podem satisfazer, e ambos tornam os dois montantes iniciais iguais em dimensão. As respostas que abrangem uma única coluna de valores não se alteram.
O resumo inicial diz que os seus valores são variações, e entre que dois períodos. Esse resumo de uma linha é a parte de uma resposta que viaja sozinha — para uma resposta de chat, um mosaico de painel de controlo ou um passo automatizado — e, quando uma resposta abrangia várias colunas de valores ou vários ramos recombinados, listava a variação de cada uma como um valor solto, interest_income=$6,177,792.16, sem qualquer período indicado na linha. Lido isoladamente, é tomado como o saldo de fecho do período. Numa tabela em que uma coluna é as outras compensadas, os valores continuam a equilibrar-se sob essa leitura, pelo que um leitor que os verificasse entre si obtinha uma resposta errada e autoconsistente, sem nada que o levasse a olhar uma segunda vez: dada apenas essa linha, três leitores independentes reportaram cada um uma linha de negócio a perder $3.0m, quando já estava $12.9m abaixo e tinha caído mais $3.0m. A linha passa agora a iniciar os valores com a janela sobre a qual são uma variação e a assinalar com sinal os que subiram — “Change from year 2024 to 2025: interest_income +$6,177,792.16, funding_charge +$6,584,192.90, capital_charge +$2,633,677.18, net_contribution -$3,040,077.92”. Uma resposta sobre uma única coluna de valores já dizia “delta” e não se altera.
E deixa de dar uma confiança combinada única para colunas que classifica de forma diferente. Esse resumo trazia uma única palavra — “high” — quando a resposta abaixo classificava net_contribution como média, porque a média é ponderada pelo quanto cada coluna se moveu e uma coluna de síntese é a que menos se move. Reencaminhada isoladamente, a linha afirmava a classificação da maioria sobre a única coluna em que alguém atua. Agora indica essa coluna em primeiro lugar, com a sua classificação e o motivo, e dá a classificação das restantes a seguir: “medium for the net_contribution column (mostly clean — 10% of the move is interaction between the change in the pool total and the shift in this slice’s share of the pool); high for the other 3 columns” — a mesma forma, e a mesma coluna fraca, da linha de confiança na resposta abaixo. Quando as colunas concordam, o resumo indica um só nível, como sempre fez.
Quando uma tabela tem várias colunas de valores, essa etiqueta é uma média entre elas, ponderada pelo quanto cada coluna se moveu — e qualquer coluna em que o agente tenha menos confiança é indicada em primeiro lugar: “Confidence in these figures: medium for the net_contribution column (gross offsetting); high for the other 3 columns”. Leia o primeiro nível, não o último. Uma coluna de síntese é a diferença entre as outras, pelo que é normalmente a que menos se move e tem o menor peso nessa média, sendo ao mesmo tempo a coluna com que a resposta abre e aquela em que é mais provável que atue. A coluna indicada é a mais fraca, que nem sempre é a de síntese: quando o agente escolheu uma coluna para pesquisar por si, essa é muitas vezes aquela de que está menos seguro.
Quando a coluna mais fraca é aquela de que trata a resposta, a classificação mais forte é afirmada para as outras colunas e não para a resposta. Costumava terminar “high overall across 4 columns”, e numa tabela que reporta proveitos juntamente com os encargos que os reduzem, essas outras colunas são aquilo de que a coluna de síntese é feita — pelo que concentram a maior parte do movimento pelo qual a média é ponderada, e a média era uma garantia sobre colunas que não tinha pedido. Um leitor que percorresse a linha até ao fim levava “high” sobre o único valor que tinha. Quando a coluna mais fraca não é aquela com que a resposta abre — uma coluna que o agente escolheu pesquisar, por exemplo — a linha continua a terminar com a classificação global, porque essa classificação diz então respeito à coluna que pediu.
Quando as colunas concordam, a linha diz a quantas se refere, e dá um motivo apenas quando o partilham. Uma classificação sem nada indicado a seguir lia-se como um único veredicto com uma única explicação, quando era uma média com a explicação de uma coluna anexada. Agora indica o seu âmbito — “medium across 3 columns” — e indica o motivo entre parênteses apenas quando todas as colunas dão o mesmo motivo. Quando diferem, não é dado motivo, porque anexar o motivo de uma coluna a uma média de três é uma afirmação sobre uma coluna que não lhe foi mostrada: num modelo automóvel real, isso colocou “mixed residual” junto de uma queda de 38.0% em margin, quando o resíduo pertencia a cost, uma coluna que se tinha movido 0.2%. Os motivos por coluna continuam em Limites reconhecidos abaixo, cada um junto da coluna a que pertence. Uma resposta de coluna única não tem nada para calcular a média, pelo que se lê como sempre.
Uma classificação que abrange todas as colunas continua a indicar qualquer coluna com um limite declarado. Quando as colunas são todas classificadas da mesma forma, não há uma mais fraca a indicar — mas uma delas pode ainda ter um limite exposto em Limites reconhecidos, e uma única palavra que as abranja a todas lê-se como se nenhuma o tivesse. Num modelo bancário real, a linha classificava quatro colunas como médias doze linhas acima de um limite em net_contribution, precisamente a coluna com que a resposta abre. A linha termina agora por indicar essa coluna — “medium across 4 columns; the net_contribution column carries a stated limit as well” — para que a classificação e o limite sejam lidos em conjunto. O limite em si não é aí repetido: é uma afirmação sobre a forma como uma variação se divide entre as suas causas, não sobre a fragilidade do valor, e permanece por inteiro em Limites reconhecidos. Quando todas as colunas têm o mesmo limite, a linha não se altera e o bloco de decomposição di-lo uma vez acima dos valores; quando uma coluna já é indicada como menos confiável, essa indicação prevalece por si só.
Quando a resposta já disse que a divisão entre causas não é uma constatação, a classificação diz o que está a classificar. Uma alocação reparte um conjunto sem alterar a sua dimensão, pelo que, numa resposta sobre o conjunto inteiro, a divisão entre “o valor recebido” e “o indutor” é imposta por essa aritmética e não medida — o que a resposta diz em Limites reconhecidos e de novo no estágio rastreado. A classificação acima dela lia-se “high (clean attribution)”, e um leitor que parasse aí tomava a causa como assente, enquanto a mesma página a retirava mais abaixo. Agora lê-se “high across 3 columns (clean attribution — rated on the arithmetic, not on why it moved)”, pelo que a própria linha recusa essa leitura. A classificação em si não mudou: os valores continuam a equilibrar-se e a ser classificados como altos. Quando a divisão foi genuinamente medida, e quando apenas algumas das colunas dizem respeito ao conjunto inteiro, a linha lê-se como antes.
Quando as colunas partilham um motivo mas mediram quantidades diferentes dele, o valor ao lado desse motivo é o intervalo que mediram — “mostly clean — 8% at the lowest and 12% at the highest of the 3 columns’ own moves are interaction between …” — em vez do valor de uma coluna a representar todas. Quando mediram a mesma quantidade, um único valor é indicado como antes.
Quando várias colunas são classificadas em conjunto, a linha diz quando a resposta abre com aquela que explica pior. Cada passo do rastreio indica o maior fator isolado por trás da variação dessa coluna e quanto da variação esse fator explica. Esses valores surgem uma vez cada, um por passo, no fim da resposta, e nada os comparava — pelo que, num modelo automóvel, a resposta abria em margin, dava a margin a única decomposição por membro da página, e só o rastreio no fim mostrava que o maior fator isolado explica 81% da variação de custos, 79% da variação de receitas e 60% da de margem. O valor em que a resposta assenta era aquele cuja história menos se sustenta, e a classificação única que abrange as três colunas é a que o leitor lhe aplica. A linha de confiança termina agora por o dizer: com que coluna a resposta abre, que é também aquela de que um único fator explica menos, se é o mesmo fator em cada caso, o que explica para cada coluna, e que o resto de cada variação é suportado pelos outros fatores e pela interação entre eles e não está em falta. É uma medida diferente do próprio nível de confiança, e diz respeito à forma como cada variação se divide entre fatores e não aos montantes. Nada é dito quando a dispersão é pequena, quando a divisão de alguma coluna está a ser retida, ou quando duas colunas empatam no último lugar — não há então uma coluna que a resposta explique pior, e indicar uma implicaria escolher entre dois valores idênticos.
Uma tabela que recombina vários ramos de alocação é lida da mesma forma. Esse nível global é uma média entre os ramos, ponderada pelo quanto cada um se moveu, pelo que um ramo pequeno cuja atribuição é frágil é superado em votos pelos grandes e limpos, e o valor que retém é a média. Qualquer ramo em que o agente tenha menos confiança é indicado em primeiro lugar, antes desse valor — “Confidence in these figures: medium for the Allocate Support Costs branch; high overall across 2 branches” — e a sua linha na decomposição por ramo traz o seu próprio nível a seu lado, para que um ramo indicado na linha final possa sempre ser encontrado na lista. Quando um ramo abrange várias colunas de valores, a coluna é indicada com ele. A linha de cada ramo indica também os dois valores entre os quais a sua variação se moveu — Allocate Support Costs: -$72,000.00 (from $120,000.00 to $48,000.00) — para que a variação de um ramo possa ser avaliada face à sua própria dimensão e não lida como um montante solto, o que, por si só, nada diz sobre se é a maior parte de um ramo pequeno ou um erro de arredondamento num grande. Uma linha cujo valor tem uma ressalva é assinalada com · carries a caveat, e isto é separado do nível de confiança a seu lado: um nível diz como um ramo se compara com a resposta no seu conjunto, pelo que, quando todos os ramos partilham o mesmo problema, nenhum se destaca — que é exatamente quando a decomposição mais merece ser qualificada. Quando todos os valores do bloco são abrangidos pela mesma ressalva, o bloco di-lo uma vez, acima dos valores, e diz que a ressalva afeta a comparação dos ramos entre si — uma dúvida que os abrange a todos, lida como uma dúvida separada sobre cada um, convida a descontar os montantes e a confiar na classificação, que é a parte que uma tal ressalva é menos provável de deixar de pé. Uma decomposição por coluna de valores é assinalada da mesma forma.
Um nível assinalado numa coluna ou num ramo significa sempre mais fraco do que a resposta no seu conjunto. Um que concorde com o valor global, ou que seja mais confiante do que ele, fica sem marca — uma marca é um motivo para ter cuidado, nunca uma garantia.
A linha final vai um passo além das marcas: quando algumas colunas ou ramos são mais fortes do que os restantes e o grupo mais fraco dá sempre o mesmo motivo, esse grupo é indicado mesmo que apenas iguale o nível global em vez de ficar abaixo dele — porque ao nível global o próprio nível não é novidade e o motivo é tudo o que há a dizer. Quando todas as colunas ou ramos estão ao nível global, nenhum é indicado: a linha já diz respeito a todos.
A mesma regra aplica-se dentro do rastreio. O relato passo a passo no fim de uma resposta costumava carimbar a confiança de cada passo nas suas ressalvas — pelo que uma resposta que abria com “low (partial attribution)” podia dizer “Caveats (high confidence)” duas vezes, oito linhas abaixo, no bloco onde estão os valores. Uma palavra, dois âmbitos, sem nada na página que os distinguisse, e um leitor à procura dos números levava o errado. Um passo indica agora uma palavra de confiança apenas quando é mais fraca do que a resposta no seu conjunto; caso contrário a linha lê-se “Caveats: …” e a própria ressalva não se altera.
Quando duas coisas mantêm a confiança em baixo, a linha indica ambas. Uma classificação mantida em média por períodos desigualmente preenchidos e por parte da cadeia a montante que o agente não conseguiu atribuir costumava imprimir apenas a primeira, pelo que um leitor que percorresse até à etiqueta nunca soube da metade mais grave. Agora lê-se “Confidence in this breakdown by account: medium (uneven period coverage; partial attribution)”, que é o que o resumo inicial dessa mesma resposta já dizia.
Uma linha “Concentrated:” no rastreio indica a coluna sobre a qual o seu valor é medido. Cada passo do rastreio abrange uma coluna de valores, e quando a variação de um passo está concentrada num único membro di-lo — “branch=REGIONAL = 70% of the delta”. O passo indica a sua coluna no início da linha, mas, numa resposta que abrange várias colunas, isso perde para a decomposição impressa acima dele: num modelo bancário, dois passos citavam 70% para REGIONAL enquanto as únicas linhas na página eram net_contribution, onde REGIONAL ficava em último de quatro com cerca de um quinto do movimento. Ambos tinham razão quanto à sua própria coluna. Essas linhas lêem-se agora “70% of the funding_charge delta — that is its own change, not its share of the pool shifting”, e a decisão é tomada sobre toda a resposta e não linha a linha — dois passos que citam a mesma percentagem sobre colunas diferentes são a mesma confusão sem qualquer decomposição envolvida, pelo que ou todas as linhas de concentração indicam a sua coluna ou nenhuma o faz. Uma resposta que abrange uma única coluna, e uma cujos passos dizem todos respeito à coluna que decompôs, lêem-se como antes.
Cada passo do rastreio diz que linhas os seus valores abrangem. Uma pergunta restrita a uma fatia executa o seu próprio passo nessa fatia e todos os passos acima dele no conjunto inteiro — o âmbito é definido sobre a tabela que perguntou e não chega a uma anterior — e nada o dizia. Dois passos da mesma resposta mostravam por isso -$9,321,592.41 e -$16,235,106.82 sem forma de saber que o segundo abrange linhas que o primeiro exclui, o que convida à divisão que parece mais natural e que é uma quota de nada. Os passos passam agora a trazer a sua população onde discordam — (entity=DE) no restrito, (all entity values) no que está acima — e, quando toda a cadeia usou as mesmas linhas, nada é acrescentado. Ambos os lados são assinalados e não apenas o invulgar: uma nota numa única linha lê-se como um facto adicional sobre essa linha, ao passo que a mesma nota em ambas se lê como o contraste que é.
Um valor “Concentrated:” diz a que passo pertence. Quando dois passos de uma mesma resposta estão concentrados no mesmo membro com a mesma percentagem arredondada, imprimiam-se de forma idêntica — “account=600000 = 64% of the delta” duas vezes, para variações $6.9m distantes. Cada linha estava certa quanto ao seu próprio passo; em conjunto liam-se como uma só constatação repetida, e coincidir na mesma percentagem é exatamente o que elimina o estímulo para verificar. Essas linhas lêem-se agora “64% of the delta at stage 1”, indicando o passo e não a tabela — um passo restrito a uma fatia não partilha o total da sua tabela, pelo que indicar a tabela indicaria uma base sobre a qual a percentagem não foi calculada. Surge quando uma resposta tem mais do que uma linha deste tipo a distinguir, no rastreio e no resumo inicial.
A nota de conservação do conjunto indica a metade que a aritmética impõe e mede o resto. Uma alocação não pode alterar a dimensão do conjunto que divide, pelo que o total do grupo de um passo credita ao indutor essencialmente nada do movimento — essa metade é fixa, e a nota diz agora que ~0% da variação vai para o total do indutor. O que resta era atribuído ao valor recebido como um “~100%” correspondente, o que não é imposto: quando os dois fatores interagem, visivelmente menos do que a totalidade recai sobre o valor recebido, e uma resposta trazia essa afirmação acima do seu próprio passo a reportar 82%. A nota descreve agora o remanescente como dividido entre o valor recebido e a interação entre eles, e indica o “~100%” apenas quando o passo o mediu. O objetivo da nota não mudou — diz-lhe que a divisão é uma propriedade da forma como a alocação conserva o conjunto e não uma constatação sobre qualquer membro, e remete-o para a tabela do próprio passo se quiser as variações entre membros.
E o passo que indica o “~100%” diz agora na sua própria linha que é aritmética. Quando um passo abrange o conjunto inteiro e o valor recebido assume todo o movimento, a sua linha de rastreio lia-se “dominant: the value coming in explains 100% of the move” — uma frase escrita como uma constatação, num bloco que um leitor cético percorre por parecer o trabalho de base. A nota que a retira estava a uma secção de distância, e só um tipo de passo trazia uma forma abreviada dela por baixo do valor; a linha de todos os outros passos dizia apenas que a divisão “describes the whole pool”, o que se lê como uma nota sobre o âmbito. Numa resposta bancária de quatro colunas, isso significava que os mesmos 100% apareciam quatro vezes e eram chamados mecânicos uma só vez, pelo que o passo assinalado parecia o único duvidoso. A linha por baixo de cada um desses passos lê-se agora “whole-pool only — the split is arithmetic, not a driver finding; filter to a member for key shifts”. Não indica qualquer percentagem, porque a mesma linha também é impressa quando a resposta retém a divisão por completo e ao lado do valor de outra coluna no resumo inicial. Os passos que mediram um genuíno fator dominante — uma pergunta restrita a um membro, em que o total do conjunto e a quota do membro nele realmente se movem — não se alteram.
Uma divisão que não pode resultar de outra forma deixa de abrir a resposta como uma constatação. Uma alocação reparte um conjunto sem alterar a sua dimensão, pelo que, numa resposta que abrange o grupo inteiro, a divisão entre os fatores por trás da variação lê-se 100% para o valor recebido e 0% para o total do indutor — em todas as respostas deste tipo, para todas as alocações, em todos os períodos. Não dizia nada sobre os seus dados, e abria o resumo inicial sob a palavra “Dominant:”, que é onde um leitor procura a constatação; a resposta retirava-a depois duas vezes, uma nas suas ressalvas e outra em Limites reconhecidos, bem abaixo de onde tinha alguma hipótese de ser notada. Um leitor a quem foi dada uma tal página leu-a como uma medição, concluiu que os indutores não se tinham movido e teria cancelado qualquer investigação à combinação — numa página cuja linha seguinte indicava o único membro cuja quota do conjunto de facto se deslocou, de 64.8% para 70.3%. Essa linha lê-se agora “Factor split at stage 1, which cannot vary: an allocation preserves the total it distributes, so whatever moved it reads 100% to the value coming in and 0% to the driver total.” Ambos os valores continuam impressos, pelo que ainda pode distinguir esta resposta de uma que reteve a divisão — e um passo cuja divisão mediu menos do que a totalidade, em que os dois fatores genuinamente interagem, mantém os seus próprios valores e continua a ler-se como uma constatação.
Um valor de deslocação de quota mostra as duas quotas entre as quais é uma deslocação. Quando um membro é indicado como a maior parte de um movimento “by its shift in share of the pool”, esse valor é uma quota da variação total em dinheiro, e não uma quota do conjunto — duas coisas diferentes, e só a primeira era alguma vez impressa. As respostas diziam três vezes o que o valor não era (“that is its shift in share of the pool, not its own change”) e nunca uma vez o que era, pelo que nada ligava “a sua quota mudou” a “71% da variação”. Quando as duas medidas ficavam próximas, isso era ativamente enganador: num modelo de seguros, o valor citado era 11.7 vezes o movimento e a variação do próprio membro era 12.3 vezes, com cinco por cento de diferença e a poucos centímetros na página, o que ensina que o aviso que as separa é pedantismo. Essas linhas trazem agora o par — “by its shift in share of the pool, from 26.5% to 18.2%”. A versão que não imprime qualquer percentagem, usada quando a deslocação de um membro é maior do que o movimento total, também a ganha e é onde mais ajuda, uma vez que até agora essa frase não trazia qualquer número. Quando o conjunto é positivo numa extremidade da comparação e negativo na outra, os dois valores não são quotas de nada e são omitidos em vez de impressos.
“Below the bar for a finding” indica agora qual é o limiar. Quando faz uma pergunta sem indicar uma decomposição, o agente pesquisa as dimensões disponíveis e diz-lhe a mais próxima que encontrou, mesmo quando nada foi forte o suficiente para reportar — “branch accounts for a share shift worth ~45% of that column’s change, below the bar for a finding”. Ficava a saber que um valor tinha falhado um teste e nunca qual era o teste, pelo que não conseguia distinguir um quase acerto de algo longe do alvo — todo o juízo que essa frase convida, no único tipo de resposta que existe porque a constatação é incerta. Agora lê-se “below the 60% a finding needs”. O limiar não é fixo: sobe com o número de dimensões examinadas, de 60% até 80%, pelo que uma resposta que pesquisou mais delas citará um valor mais alto. Quando o valor do candidato é maior do que o movimento total, é escrito como um múltiplo e não como uma percentagem, e nenhum limiar é citado aí, uma vez que uma barra percentual ao lado de “11.7×” contradir-se-ia a si própria.
O rastreio numera os ramos paralelos como ramos e reserva “stage” para a profundidade. O relato passo a passo no fim de uma resposta numerava tudo da mesma forma, e a numeração significava duas coisas diferentes consoante a forma do modelo. Numa resposta que rastreava uma cadeia, “Stage 2” alimentava “Stage 1” — um salto real a montante. Numa resposta que abrangia uma tabela que recombina vários ramos de alocação, “Stage 1” a “Stage 4” eram quatro ramos lado a lado que se recombinam e nunca se tocam, pelo que um leitor que tivesse visto o primeiro tipo de resposta tomava o segundo por uma cadeia de quatro saltos e desenhava uma linhagem que não existe. Uma resposta usava ambas as palavras para as mesmas duas tabelas com seis linhas de distância, chamando-lhes “Branches 1, 2” nos seus limites e “Stage 1, Stage 2” no seu rastreio. Um ramo paralelo lê-se agora “Branch 2 of 4”, com a mesma numeração que o resto da resposta já usa para ele, e “Stage” surge apenas quando um passo alimenta genuinamente outro. Quando um ramo abrange várias colunas de valores, mantém um só número, e as suas linhas são distinguidas pela coluna indicada em cada uma. Uma tabela que recombina apenas um ramo lê-se “Branch 1”, sem contagem a seguir — uma contagem de um não é uma contagem. As respostas que rastreiam uma cadeia não se alteram.
Cada ramo é designado da mesma forma nos dois locais, e a resposta diz o que os ramos são uns para os outros. Os valores por ramo designavam um ramo pelo passo que o constrói — S1_cost_line_rev — enquanto o relato passo a passo abaixo designava o mesmo ramo pela tabela que esse passo escreve — cost_line_rev — e nada na página dizia que os dois eram o mesmo ramo. Quando o nome de um passo contém por acaso o nome da sua tabela, os dois apenas parecem remeter um para o outro; quando não contém, Alloc_u867_minor e u867_branch_minor não partilham qualquer prefixo comum e associá-los é adivinhação. Cada valor de ramo traz agora ambos — “Alloc_u867_minor (writes u867_branch_minor)” — exceto quando o passo e a sua tabela têm o mesmo nome, o que dispensa uma segunda menção. A linha inicial indica também a estrutura: “These 2 branches are separate paths into the union and never feed one another”. “Recombined” era a única palavra na página a afirmá-lo, e os leitores a quem se pedia que desenhassem o modelo apenas a partir dos títulos desenhavam uma cadeia. Quando os valores dos ramos somam de facto o total combinado, a linha di-lo também; quando não somam, a diferença é indicada em Limites reconhecidos com ambos os valores, como antes.
Cada resposta indica os dois períodos que compara, na linha que reencaminha. Os valores eram citados ao cêntimo e não estavam associados a nada: nenhuma resposta indicava uma data, um trimestre ou um ano em lado algum, pelo que um valor não podia ser associado a uma declaração, a um balancete ou a um registo do ano anterior, e duas respostas sobre intervalos consecutivos eram indistinguíveis na página de duas sobre o mesmo intervalo — uma resposta fiscal termina em $25,999,193.60 e a seguinte começa aí, sem nada em nenhuma das páginas a dizer porquê. O parágrafo inicial traz agora “Periods compared: year 2024 → 2025”, ordenado para corresponder ao par “from $X to $Y” a seu lado, de modo a que cada valor fique associado a um período em vez de o deixar a perceber qual é qual. Quando a pergunta usou um intervalo de datas em vez de uma única etiqueta, o intervalo é indicado por extenso; quando o agente não consegue indicar os períodos de forma fiável — o caso raro de uma resposta cujos passos não usaram todos a mesma janela — não diz nada em vez de indicar os errados.
A moeda é uma questão à parte e isto não a aborda: o PlaidCloud reporta os montantes que o seu modelo contém, e não conhece a respetiva moeda nem qualquer base de conversão, pelo que os valores são mostrados em unidades monetárias simples. Quando isso importa — um modelo que abrange várias jurisdições, ou que alimenta uma declaração — registe você próprio a moeda funcional junto da resposta.
Quando uma resposta abre com um único valor, a linha inicial indica os níveis entre os quais a variação se moveu, e não apenas a percentagem — it fell 7.2% (from $26,121,744.14 to $24,229,133.70). Como cada resposta indica onde começou e terminou, duas perguntas sobre a mesma fatia em períodos consecutivos encaixam — o valor de fecho de uma resposta é o valor de abertura da seguinte. A variação citada com eles é a diferença entre esses dois valores tal como impressos, pelo que subtrair um ao outro dá o valor que a resposta indica. Até setembro de 2026 era arredondada a partir do seu próprio total exato, o que, numa variação grande, podia deixá-la a um cêntimo dos dois níveis a seu lado — três valores cada um certo com uma margem de meio cêntimo, e nada a dizer qual era o discrepante.
Quando o valor é inferior a zero em ambas as extremidades, a linha inicial descreve a dimensão do saldo e não a sua direção. “Fell” está correto quanto a um valor com sinal e ao contrário quanto à quantidade que a maioria das pessoas tem em mente, pelo que uma perda a agravar-se lia-se como uma a melhorar: net_contribution fell 23.5% (from -$12,917,012.01 to -$15,957,089.93) é três milhões de dólares pior, anunciado com a única palavra que um leitor que percorre uma linha de perda toma como significando o oposto. Essa linha lê-se agora net_contribution went further below zero — the negative balance grew 23.5%, com os mesmos dois valores a seguir, e o caso inverso lê-se “moved back toward zero — the negative balance shrank”. A percentagem não se altera: num valor negativo em ambas as extremidades, a percentagem em que se moveu é exatamente a percentagem em que o saldo cresceu ou diminuiu. A resposta continua a não dizer se isso é bom ou mau — o sentido bom depende da coluna, e só você o sabe. Um valor que cruza zero mantém a palavra de direção simples, porque aí só tem uma leitura.
Uma resposta cuja linha inicial reporta subidas e descidas grandes que se anulam indica também o par — “the net barely moved (3.7%, from $85,472,090.25 to $88,668,890.26), but that hides large offsetting movements up and down”. Esses dois valores são os do conjunto, não os do líquido, pelo que tornam o ponto dessa linha mais claro em vez de o suavizarem: $3.2M de movimento dentro de um conjunto de $85.5M é visivelmente nada, ao passo que “barely” por si só era um juízo sobre uma base que a resposta nunca mostrava. Continua a dizer-lhe que o líquido subestima o que aconteceu e continua a encaminhá-lo para um único membro. Uma resposta que reporta nenhuma alteração material traz o mesmo par, pelo mesmo motivo.
Uma resposta que abrange uma tabela que recombina vários ramos de alocação abre com o total da própria tabela. Costumava abrir apenas com uma contagem e uma direção — “across 4 recombined branches, all 4 fell” — com o raciocínio de que uma tabela recombinada não tem um total único a indicar. Tem um: é uma tabela real, e o agente lê o seu total diretamente dela. Por isso a linha lê-se “the combined total fell 58.0% (from $34,621,164.20 to $14,535,705.89); across 4 recombined branches, all 4 fell”, e a comparação ano a ano resolve-se para estas respostas como para todas as outras formas. O total é lido da tabela e não pela soma dos ramos, porque um ramo que chega à recombinação por mais do que um caminho é listado uma vez na decomposição e contado mais do que uma vez na tabela. Quando os valores dos ramos não somam a variação da própria tabela, a resposta di-lo e dá ambos — “the branch figures shown ($12,231,623.56) do not account for the combined change of $25,082,057.48” — em vez de o deixar a somar uma lista que não reconcilia. Quando o total genuinamente não pode ser lido, a linha inicial lê-se como antes e a resposta indica a condição que a impediu: os ramos alocam colunas de valores diferentes, ou a tabela recombinada não tem a coluna que está a ser totalizada.
Essa linha inicial traz também a classificação da resposta e o que os ramos que atribuiu deixam por explicar. É a parte de uma resposta que viaja sozinha, e costumava dar a variação combinada e uma contagem — “2 rose and 2 unattributable” — enquanto a classificação e a dimensão da diferença estavam nove linhas abaixo. Lida isoladamente, é uma história de crescimento limpa, e “2 unattributable” lê-se como dois ramos demasiado pequenos para medir; na resposta em que isto foi encontrado, eram a metade maior. A linha lê-se agora “…across 4 recombined branches, 2 rose, and 2 could not be measured. The 2 attributed branches leave $12,850,433.92 of the $25,082,057.48 change unaccounted for. That gap is a subtraction: unmeasured branches would produce it, and so would rows the table counts more than once. Low confidence in how the apparent change splits across the branches. Whether it happened is not rated.” A diferença é uma frase própria, porque o aviso que pode seguir a linha — o de que o movimento pode ser um artefacto de um período que não terminou de carregar — é uma preocupação separada, e os leitores a quem era mostrado como uma oração final tomavam-no como uma explicação que dissipava a diferença. Dá o montante que sobra e não o montante coberto, porque os leitores a quem só era mostrado o valor coberto levavam consigo “cerca de metade foi explicada” e deixavam a subtração por fazer. A classificação é uma frase própria no fim, indicando o que abrange e dizendo claramente que não é classificado se a alteração ocorreu — costumava estar entre parênteses junto dos valores como “attribution is low confidence”, onde os leitores a tomavam por um veredicto sobre o próprio número. Só surge quando está abaixo de alta, como em todo o lado na página, pelo que uma resposta cujos ramos reportaram todos e que é classificada como alta se lê exatamente como antes. O montante que sobra é uma subtração, e a linha di-lo. Lidos isoladamente, a contagem de ramos que não puderam ser medidos e o montante que sobra estão a uma oração de distância, e os leitores tomavam o segundo pelo primeiro — que os ramos que não conseguiu medir são o montante em falta. Podem ser; mas um ramo que chega à recombinação por mais do que um caminho tem as suas linhas contadas duas vezes e alarga o mesmo montante, e qual dos dois o produziu não é algo que a resposta consiga dizer. Por isso a linha indica ambos sem classificar nenhum, e a nota de limites abaixo faz o mesmo em vez de apresentar os ramos que não conseguiu medir como o motivo.
Quando todo o movimento é do tamanho da diferença de linhas entre os dois períodos, a resposta di-lo na sua linha inicial. Dois períodos podem conter números muito diferentes de linhas — mais frequentemente porque o posterior não terminou de carregar — e a resposta sempre avisou disso. O que não fazia era colocar as duas proporções lado a lado, que é a única comparação que resolve a questão: num modelo real, ao perguntar porque desceram os custos alemães, devolveu “it fell 58.0%”, em períodos com 1,755 linhas e 754, e o dinheiro desceu quase exatamente na mesma proporção. Os 58% inteiros eram, portanto, consistentes com um período carregado a meio, e o aviso lia-se “part of this change may reflect incomplete data” — uma cautela sobre algo que podia ser tudo. A nota de Limites reconhecidos lê-se agora “the later period holds 43% of the earlier period’s rows, and the change reported here leaves its value at 42% of the earlier period’s — close to the same proportion, so this movement is what the row shortfall alone would produce”, e a linha inicial traz o mesmo aviso, onde uma resposta de ramos recombinados que indicava uma queda de $20m costumava não trazer nenhum.
Diz que as duas proporções são próximas e não iguais, porque o teste por trás dessa expressão permite que difiram em alguns pontos percentuais — impressas lado a lado como 50% e 45%, “the same proportion” é a frase a contradizer os seus próprios valores.
Esse aviso abre agora a linha em vez de seguir o valor. Short answer: é lida até à sua primeira oração e interrompida, pelo que uma linha que indicava o movimento e o qualificava depois era reencaminhada limpa: cortada na primeira vírgula, tudo o que viajava era uma queda citada ao cêntimo. Abre agora com “this may not be a change at all”, indica qual extremidade da comparação está em falta, tanto pelo seu papel como pela sua etiqueta — “the later period (2025) loaded short” — e termina pedindo-lhe que verifique esse período indicado e não “the later one”, o que podia igualmente significar a tabela ou o carregamento. Quando vários ramos recombinados se moveram todos no mesmo sentido, acrescenta que é isso que um carregamento incompleto faz a todos os ramos de uma vez, pelo que a concordância deles não é lida como confirmação — é o que a própria diferença produz. E quando parte da variação não pôde ser atribuída, a frase que diz quanto sobra assume a condição do próprio aviso: “Only if 2024 loaded in full does the 1 attributed branch leave …”. Citada isoladamente, essa frase lia-se como um montante assente e enfraquecia o aviso acima dela.
É explícito quanto a não resolver qual: um período incompletamente carregado e uma queda genuína desse tamanho são idênticos nessa medida, pelo que a resposta lhe pede que verifique o carregamento em vez de lhe dizer que o movimento não foi real. Quando o dinheiro não se moveu com as linhas, a resposta di-lo também — a metade tranquilizadora, igualmente indisponível antes. E quando qualquer parte de uma resposta abrange um par de períodos uniformemente preenchido, a linha inicial é deixada como está: uma tabela recombinada que subiu 11.1% num ramo saudável, ao lado de um ramo pequeno cuja queda é inteiramente de calendário, indica a sua subida claramente e nomeia o ramo fraco em Limites reconhecidos, onde pertence.
Uma resposta que recusa porque o total cruzou zero mostra agora os dois valores que o cruzaram. Não tem uma variação única a repartir, que é toda a razão para recusar — mas tem o montante em cada extremidade, e não imprimia nenhum. O único par de valores de período numa tal página era o da tabela inteira, ambos positivos, pelo que um leitor que verificasse a alegação de que o total ficou negativo encontrava a página a contradizê-la; e a resposta terminava a dizer-lhe para ler os dois períodos como valores separados — os dois que estava a reter. A linha lê-se agora “not attributable (sign flip) — this slice went from $45,031,369.24 to -$20,776,630.76”, indicando se o par é o da fatia que perguntou ou o da coluna inteira, para que não possa ser tomado pelo par da tabela inteira impresso noutro local. O resumo inicial continua a não citar qualquer valor: uma resposta que abre com um número está a fazer aquilo que recusa fazer.
Quando uma resposta recusa, o passo seguinte sugerido diz respeito àquilo a que não conseguiu responder. Uma resposta recusada diz onde o rastreio parou e depois o que fazer a esse respeito, e os dois costumavam divergir: “this can’t be answered as asked — the expected allocated column is not on the result table. Trace cost_pool as the target in its own right.” Ambas as metades eram verdadeiras e a segunda nada tinha que ver com a primeira, porque a sugestão era escolhida entre tudo o que o agente notou ao longo da cadeia e não a partir do passo que de facto parou — pelo que segui-la gastava uma consulta no local errado. A sugestão vem agora do passo que parou: uma coluna alocada em falta leva-o a verificar as colunas dessa tabela, um conjunto de entrada que não foi construído leva-o a executar o fluxo de trabalho que o constrói. Quando genuinamente não há nada de específico a oferecer, a resposta continua a transmitir a sugestão útil mais próxima em vez de o deixar sem nenhuma, e diz claramente que diz respeito a um passo diferente.
Uma resposta recusada explica-se em linguagem simples. Perguntar sobre uma tabela sem indicar a sua coluna de período, quando o agente não conseguia deduzir a coluna por si, costumava devolver um código interno citado como se significasse alguma coisa — “auto-detect returned ‘no_candidates’”. Diz agora o que aconteceu e o que fazer: “No period column was supplied and none of the table’s columns look like a period column. Pass temporal_filter.column explicitly.” Quando mais do que uma coluna parecia igualmente provável, enumera-as, pelo que a resposta contém a correção. A nota que explica porque uma comparação ano a ano foi ignorada lê-se da mesma forma. As perguntas que têm sucesso não se alteram; apenas o que uma sem sucesso lhe diz.
A qualidade da atribuição por trás da confiança:
- Clean — a variação foi totalmente atribuída aos seus indutores. Inclui as alocações filtradas, as restritas a contas específicas: o filtro é aplicado automaticamente, pelo que os contribuintes são exatamente as linhas no âmbito.
- Partial — o agente consegue mostrar o quê mudou e onde — os totais e os principais contribuintes estão corretos — mas não consegue atribuir totalmente o porquê por si só. Diz-lhe porquê e o que perguntar a seguir.
Avisos que pode ver associados a uma resposta:
-
Uma comparação ano a ano medida sobre um período atual ainda incompleto — ou sem dados do ano anterior com que comparar, caso em que diz que não há base de comparação em vez de chamar normal à variação.
Quando existe um ano anterior, a resposta dá ambas as metades dessa comparação: se a variação foi normal, elevada ou extrema, e como se compara em dimensão — “normal in size — 62% the size of last year’s move in absolute terms; 2024 → 2025 moved +$6,183,330.15”, o que significa que a subida foi menor do que a anterior. A palavra sozinha responde se isto é uma anomalia; a dimensão responde se continua a acelerar, que é geralmente a pergunta que se faz. O veredicto traz na própria palavra aquilo sobre que é um veredicto. Classifica uma coisa — quão grande foi a variação deste período face à do período anterior, em moeda — e costumava ler-se como um “normal” solto, com aquilo que julgava várias orações para trás, pelo que um leitor que percorresse a linha parava na palavra e tomava-a como um veredicto sobre a resposta no seu conjunto. “In absolute terms” está lá porque a mesma linha traz também uma variação percentual, e esta comparação é entre montantes, não entre taxas. Como é apenas entre dimensões, quando os dois períodos se moveram em sentidos opostos a resposta di-lo também — “normal in size, opposite in direction” — e di-lo antes da percentagem e não cinco orações depois, onde um leitor que já leu “normal” não chegará.
Uma frase a seguir dá a taxa de crescimento do próprio período anterior. Comparar dois movimentos em moeda nada diz sobre o ritmo: um valor que cresceu 14.7% depois de crescer 31.2% abrandou para menos de metade da sua taxa anterior, e a comparação acima continua a chamar a esse movimento “normal in size”, porque em moeda o é. Os leitores a quem era dada uma tal resposta saíam com “negócios como habitualmente”. A resposta passa agora a seguir o veredicto com “The 2024 → 2025 move was 31.2% of that period’s opening level”, e os leitores a quem isso é dado descrevem o período como em desaceleração. A frase dá deliberadamente apenas a taxa anterior: a deste período já está à cabeça da linha, e colocar as duas lado a lado convida a dividir uma pela outra — o que dá uma resposta diferente da percentagem junto ao veredicto, porque essa compara montantes e a base cresceu por baixo deles. O veredicto em si não se altera, e a frase é omitida quando o período anterior não pode ser indicado.
A comparação só é etiquetada como ano a ano quando os dois períodos distam realmente um ano. Uma comparação de dois meses consecutivos, ou de dois trimestres consecutivos, é medida face à mesma janela um ano antes tal como uma anual — mas chamar-lhe “year-on-year” diz que a própria variação abrange um ano, o que não acontece. Essas respostas lêem-se “against a year earlier” e indicam a janela. Nada na medição se altera; apenas a afirmação que a etiqueta faz.
Um veredicto ano a ano medido sobre um período carregado a meio di-lo. Quando a resposta avisa também que os dois períodos estão desigualmente preenchidos e que o dinheiro se moveu a par da diferença de linhas, esse veredicto não é uma segunda opinião sobre se o movimento é real: é um rácio cuja metade superior é o movimento em dúvida, pelo que um período que não terminou de carregar puxa o veredicto para “normal” exatamente pelo motivo de que a resposta está a avisar. Diz agora qual — “this verdict is computed from the change reported in this answer, so it is not an independent check on whether that change is real” — para que uma leitura “normal year-on-year” não possa ser tomada como se anulasse o aviso de carregamento acima. O veredicto em si é uma medição real e continua a ser dado.
O movimento do ano passado é indicado, com os anos que abrange, e vale a pena lê-lo antes do múltiplo. Uma comparação só é tão significativa quanto o ano face ao qual é medida, e um ano em que subidas e descidas grandes quase se anularam deixa um líquido próximo de nada — pelo que o ano seguinte pode ser comum e, ainda assim, resultar num múltiplo muito grande. Num modelo de seguros real, um ano anterior que somou +$1,792,719.72, de movimentos de membros de cerca de $22 milhões em cada sentido, fez um ano seguinte banal ler-se como “extreme — 1325%”. Indicar aquilo face ao qual o múltiplo é medido é o que lhe permite distinguir um movimento grande de um termo de comparação pequeno: os dois montantes estão ambos na linha, pelo que a percentagem entre eles pode ser verificada. Esse montante traz agora também os seus períodos — “2024 → 2025 moved +$1,792,719.72” — para que o valor pelo qual a percentagem divide possa ser rastreado até um ano e não até às palavras “last year”. Quando os dois estão demasiado afastados para que valha a pena citar um rácio, continua a receber esse movimento e o sentido, que é o caso em que mais importa.
Quando não foi possível fazer uma comparação ano a ano, a resposta di-lo em vez de se calar. Uma tabela escrita por um passo que aloca várias medidas de uma vez — custo, receita e margem em conjunto — não obtém nenhuma das duas comparações que colocam um movimento em contexto: face ao mesmo movimento um ano antes e face aos períodos recentes. Cada uma é construída para uma resposta que abrange uma única medida, e reportar uma das três como se fosse a resposta seria pior do que não as executar. Até agora isso era silencioso, pelo que uma resposta a “why is margin eroding” trazia uma queda, uma decomposição e um relato passo a passo, e nenhum indício de que a única verificação que diz se uma queda desse tamanho é normal nunca tinha sido executada. Lê-se agora “This answer does not say whether a change this size is unusual here”, nomeia ambas as comparações em falta e diz que um só passo produz todas as medidas — pelo que não há uma resposta de medida única a pedir em alternativa, que é a nova execução que um leitor tentaria de outra forma. Termina dizendo que nenhum valor acima é retirado: os montantes são exatos e é apenas o contexto que falta, e uma nota em Limites reconhecidos é de outro modo lida como dúvida sobre os números a seu lado. A mesma frase cobre dois casos mais restritos — períodos que não podem recuar um ano, em que nomeia os formatos de período que podem, e uma tabela recombinada cujo total combinado não pôde ser lido, em que a comparação acompanha o total.
-
Um total do grupo inteiro que esconde por baixo uma reorganização ao nível dos membros.
-
Uma fatia cujos fatores se movem em conjunto, pelo que as percentagens principais não são fiáveis por si sós.
-
Uma variação cujas partes atribuídas não somam de volta ao total reportado.
-
Uma hipótese cujos impactos por destino não podem simplesmente ser somados.
Quando um resultado é parcial, a orientação normalmente remete-o para o aprofundamento de fatia acima, que dá uma decomposição real para um único membro.
Quando o agente escolhe a decomposição por si
Seção intitulada “Quando o agente escolhe a decomposição por si”Quando não indica um campo, o agente experimenta todos os que consegue e reporta o mais forte — e passa agora a dizer-lhe quanto mais forte, nomeando o campo que ficou em segundo: “On that measure account scored about 2.0× the next candidate, line”. Essa margem é a diferença entre um indutor dominante e três histórias plausíveis das quais foi tomada a maior, e vale a pena lê-la antes de atuar com base no campo escolhido. É deliberadamente uma comparação e não uma segunda percentagem, porque duas percentagens medidas de forma diferente lado a lado são a confusão que estas respostas mais se esforçam por evitar. Quando apenas um campo pôde ser pontuado, a resposta di-lo em vez de se referir a um segundo classificado que não existe.
Por vezes nenhum campo vence. Quando dois ou mais pontuam de forma demasiado próxima para os separar, o agente não aplica nenhum e di-lo — e nomeia-os agora. Cada um é dado com o seu membro mais forte e quanto o valor desse membro se moveu, em comparação com a variação da coluna no seu conjunto, para que possa ponderar as histórias empatadas em vez de escolher às cegas: “the candidates are program=I4 and account=WARRANTY … program=I4 moved -$40,680,000.00 and account=WARRANTY moved -$32,270,411.54, against a column that moved -$16,590,844.99”. Esses montantes são as variações próprias dos seus membros, enquanto aquilo em que os campos foram pontuados é uma deslocação de quota do conjunto — duas medidas diferentes, e a resposta diz qual é qual. Os candidatos também se sobrepõem em vez de dividirem o conjunto entre si, pelo que os seus valores não são partes de um só total: no exemplo acima somam mais de quatro vezes a variação da própria coluna, e somá-los não descreve nada. A par de uma sugestão por campo empatado, a resposta propõe decompor a variação por dois deles ao mesmo tempo — uma tabulação cruzada, que é uma vista que a pesquisa nunca pontuou, pelo que é proposta como algo a executar e não como uma constatação.
Quando a tabela de membros mostra apenas os maiores movimentos em vez de todos os membros, diz agora quanto da variação está de facto na página. Um cabeçalho “Top movers by account, sales_document (largest shown)” e um cabeçalho “All movers by account” parecem semelhantes e têm pesos completamente diferentes: o segundo soma exatamente a variação, e o primeiro pode ser um canto pequeno e misto dela. Num modelo, vinte linhas, nenhuma delas com tanto como $110,000, estavam sob uma queda de $9,321,592.41 e somavam $169,230.35 entre todas — treze a descer, sete a subir — pelo que a tabela se lia como um retrato ruidoso da queda ao mesmo tempo que explicava menos de dois por cento dela, e “(largest shown)” era todo o aviso. A tabela traz agora uma linha acima das suas linhas: quantas das linhas mostradas se movem em cada sentido, a que soma ascendem as suas dimensões, a que ascendem em termos líquidos, qual é a própria variação e que a diferença está nos membros não mostrados. Fica acima das linhas para que viaje com elas quando são copiadas.
Ambos os totais são dados porque qualquer um deles isolado é lido como o outro. O líquido sozinho — a que ascendem as linhas depois de as subidas e descidas se anularem — lê-se como “isto é ruído, ignore”, o que é errado quando as suas dimensões somam cinco vezes esse montante; o bruto sozinho lê-se como um líquido, o que exagera o que a tabela contém. Nomear as duas operações em separado é o que as mantém distintas. Não é dada qualquer percentagem, e isso é deliberado e não uma omissão: as linhas mostradas podem mover-se contra a variação ou superá-la, pelo que uma quota da variação é um valor que se torna negativo, excede cem por cento ou se arredonda para nada, e precisa de redação diferente em cada caso para o mesmo facto subjacente. Dois montantes impressos ao lado da variação respondem à pergunta de relance e significam uma só coisa em todos os resultados. Uma tabela que mostra todos os membros não é afetada — já soma a variação por definição, e o seu cabeçalho di-lo.
Quando a tabela mostra todos os membros, as linhas somam a variação por definição — mas cada linha é arredondada ao cêntimo para apresentação, enquanto a própria variação é arredondada uma só vez, pelo que, numa variação grande, a coluna que soma à mão pode ficar a um cêntimo do valor com que a resposta abre. Esse cêntimo não é um erro, e nada na página dizia o que era, pelo que verificar a tabela era o que acabava penalizado. Quando os dois diferem, a tabela traz agora uma linha acima das suas linhas com ambos os valores — a que somam as linhas e qual é a própria variação — e a dizer que a diferença é esse arredondamento. Nada é ajustado para forçar a coincidência: nenhuma linha é alterada em um cêntimo para fechar o total da coluna, pelo que cada linha continua a corresponder exatamente à sua origem e um valor que verifique linha a linha continua certo.
Uma tabela de membros é lida como uma classificação — é para isso que serve uma lista de membros — pelo que, quando duas linhas mostram o mesmo montante, a que é impressa primeiro lê-se como o maior problema. Não é: nada as separa, e qual das duas vem primeiro não tem significado. Num modelo automóvel, dois centros de custos moveram-se cada um -$1,738,461.53, e a página não dava ao leitor forma de distinguir isso de um verdadeiro primeiro e segundo. Quando as linhas mostram o mesmo montante, a tabela nomeia-as agora acima das linhas e diz que são mostradas com o mesmo montante, pelo que a ordem entre elas não é uma classificação. Diz mostradas deliberadamente: a comparação é dos valores tal como são impressos, ao cêntimo, e a linha pode ficar diretamente por baixo de uma que diga que esses valores são arredondados. Não diz como a ordem foi escolhida, porque isso não é algo que a resposta consiga sempre verificar. Os membros que não se moveram de todo não são descritos desta forma — não há classificação entre dois nadas a desmentir — e, quando a tabela mostra todos os membros, já nem sequer são listados. Um cabeçalho “All movers by account” colocava duas contas idênticas nos dois períodos na página como linhas a $0.00, no bloco que um leitor tem mais probabilidade de copiar por inteiro. Quando a tabela mostra apenas os maiores movimentos, essas linhas ficam, porque aí uma linha a $0.00 diz-lhe que a classificação chegou ao fundo do que se moveu. Nenhum valor se altera: nenhuma linha é reordenada ou ajustada, e as linhas continuam a somar a variação.
Quando uma tabela mostra apenas os maiores movimentos e o corte em si caiu num empate, a resposta diz também que um membro tão grande como o último mostrado foi deixado de fora. É o caso em que o empate altera não apenas a ordem mas qual membro chega a ver, e pedir mais linhas é a forma de o ver.
Numa tabela com várias colunas de valores, a tabela de membros que a resposta imprime é a da coluna que o agente pesquisou — que não é a coluna com que a resposta abre. O cabeçalho di-lo, e era tudo o que dizia: num modelo automóvel, a resposta abria com a margem a cair $10,701,036.06 e a única tabela na página tinha o cabeçalho “All movers by program — cost”, encabeçada por um programa a -$40,680,000.00. Quatro caracteres de cabeçalho separavam um valor de custo de uma pergunta sobre margem, pelo que a linha de topo se lia como a causa da queda e trazia um número quatro vezes superior a esta. A tabela di-lo agora por si, acima das linhas, para que viaje com elas quando são copiadas: “These are cost figures. The answer leads on margin, where the biggest mover is not necessarily the one at the top here.” A redação indica o que os valores são antes de dizer que a ordem pode diferir, porque saber que a classificação pode diferir não o impede de ler a linha de topo como a causa. Quando é você a indicar a decomposição, cada coluna tem a sua própria tabela e as duas concordam sempre, pelo que nenhuma linha deste tipo surge.
Quando a resposta indica também um fator principal por trás da variação e lhe atribui uma percentagem — “the shift in this slice’s share of the pool … explains 73% of the move” — a tabela de membros diz agora que esse valor não é uma quota das suas linhas. Os dois são cortes da mesma variação em eixos diferentes: um divide-a entre os fatores que a determinam, o outro divide-a entre membros, e nenhum é parte do outro. Ambos os valores estão certos, que é o que leva o leitor a procurar a ligação: num modelo fiscal, um leitor que perseguiu os 73% por quatro contas a 55.6%, 23.9%, 12.7% e 7.8% não encontrou combinação delas que o desse, porque não existe. A tabela lê-se agora “These rows are the change split by account. A factor percentage stated for this change answers a different question — which factor moved — so no row here is part of that percentage.”, acima das linhas, para que viaje com elas quando são copiadas. Só surge quando a percentagem do fator está abaixo de 100% e as linhas mostradas explicam a variação inteira — a 100% não há remanescente a procurar, e quando a tabela mostra apenas os maiores movimentos já diz que as suas linhas não somam a variação. Nenhum valor se altera.
Numa tabela com várias colunas de valores, a decomposição que o agente sugere responde sobre a coluna com que a resposta abre, que nem sempre é a que pesquisou. Num modelo, a história foi encontrada em cost e a decomposição sugerida voltou sobre margin — uma coluna diferente, encabeçada por um programa diferente, com um valor de topo uma ordem de grandeza menor. Ambas estavam corretas. A sugestão nomeia agora ambas as colunas e avisa que o membro principal também pode diferir, e não apenas a percentagem, pelo que uma lista que abre com um nome inesperado não é lida como uma contradição. Quando a resposta abrange uma única coluna, as duas são a mesma e nenhum aviso deste tipo surge.
Quando a deslocação do membro mais forte é maior do que toda a variação líquida — rotina num conjunto em que subidas e descidas grandes se anulam — a resposta dá essa dimensão como um múltiplo em vez de uma percentagem absurda: “by more than the whole net change in share-shift terms (11.7×)”. Quando nem isso pode ser indicado de forma sensata, explica o que são as duas medições sem prometer que diferirão visivelmente.
Nem o aviso nem a sugestão a seu lado prometem agora que a percentagem de um membro nessa decomposição diferirá do valor citado. Nenhuma tabela de membros imprime uma percentagem por membro, em qualquer resposta — as linhas são montantes — pelo que a comparação que o aviso preparava não podia ser feita de todo: seguiria o aviso, obteria valores monetários, não encontraria nada com que verificar o aviso e, com razão, desvalorizaria o resto da página. Ambos dizem agora apenas o que são as duas medidas, e ficam por aí: o valor citado é uma deslocação na quota do conjunto do membro, e a decomposição reporta a variação própria de cada membro.
Cada resposta termina também com passos seguintes sugeridos, pela ordem com maior probabilidade de ajudar. Quando a resposta avisa que subidas e descidas grandes se estão a anular, a primeira sugestão restringe a pergunta ao único membro por trás do movimento — aquele cuja própria subida ou descida é maior face à variação principal — e executá-la dá a variação própria desse membro, normalmente com os avisos dissipados. Quando não indicou um campo, o agente escolheu um — e, numa resposta que abrange uma única coluna, o campo que escolheu é o campo pelo qual a tabela de membros acima já está agrupada, pelo que a proposta de decompor a variação por ele devolvia a mesma tabela. Pior, a nota a seu lado avisava que os valores não coincidiriam com os que estava a ler, quando coincidem exatamente, o que o ensina a desvalorizar também as outras sugestões. Essa proposta deixa de ser feita. Quando a pesquisa pontuou um segundo campo, a resposta propõe esse em vez disso — cortar a mesma variação de outra forma — que é uma vista que ainda não tem; é o mesmo segundo classificado que a margem nomeia onde quer que essa margem apareça, pelo que as duas nunca nomeiam campos diferentes. Quando nada mais pontuou, a proposta é retirada. Só é mantida quando retirá-la deixaria a resposta sem qualquer passo seguinte, uma vez que uma resposta que lhe diz para experimentar outro campo e depois não oferece nenhum é pior do que uma sugestão vaga. E quando executar a proposta original reportaria genuinamente uma coluna diferente, mantém-se. Quando a pesquisa terminou num empate, as sugestões cobrem cada campo empatado por si e depois mais uma que corta a variação por dois deles em conjunto, listada em último para que as propostas de campo único mantenham a sua ordem.
Uma resposta que abrange várias colunas de valores propõe restringir a um membro. A sua lista de maiores movimentos decompõe uma coluna por membro; as outras colunas são reportadas para a fatia no seu conjunto. Assim, a única coisa que uma tal página não pode dizer é o que um único membro fez em todas as colunas — que ramo ficou com a maior parte da queda do encargo de financiamento, e o que fizeram os seus proveitos de juros ao mesmo tempo. A resposta sugere agora um target_filter que nomeia um membro dessa lista, e diz que as linhas acima abrangem uma coluna. Não nomeia o campo pelo qual a lista é cortada, embora o cabeçalho acima das linhas o faça: um nome de campo escrito por um autor que chega à prosa pode soletrar a palavra-chave que alguma outra ressalva tem de dizer, e verificaria então essa ressalva como limpa numa página que a omitiu. Quando já propõe restringir por um motivo mais forte — um valor que descreve o conjunto inteiro, ou subidas e descidas que se anulam — mantém a proposta que tinha. Antes disto, uma resposta que indicava uma constatação e não tinha outra sugestão a fazer terminava na última linha sem nada para executar.
Quando mais do que um passo escreve uma tabela em que o rastreio parou, a proposta de escolher um diz o que escolher faz. A resposta lista cada um dos passos ativos dessa tabela com o id a colar, e executar um leva o rastreio através desse passo. Não restringe a variação a esse passo: quando as linhas dos passos se sobrepõem, o valor que volta abrange todos eles, e a resposta que volta di-lo. O facto de as linhas poderem sobrepor-se é o motivo pelo qual a resposta não escolheria um passo por si. A proposta costumava descrever-se como atribuindo a variação especificamente ao passo nomeado, o que os próprios limites da mesma página contradiziam. A linha que descreve esse passo do rastreio indica agora que mais do que um passo ativo produz a tabela, em vez de que um deles poderia produzi-la.
Esse aviso indica o teste que aplicou, para que o possa verificar: surge quando o movimento de um membro, a deslocação de quota do conjunto desse membro, ou a contribuição de um fator é pelo menos um quarto maior do que toda a variação líquida. Três medidas e não uma, porque a quota do conjunto de um membro pode mover-se várias vezes mais do que o próprio membro — pelo que uma regra que nomeasse apenas o membro seria verificável e, nessas respostas, errada. Costumava explicar-se como “the top mover alone exceeds the net delta”, que é um teste diferente e mais frouxo do que o que o agente usa — pelo que um leitor que o tomasse à letra e o verificasse na resposta seguinte encontrava a regra aparentemente quebrada. Um movimento maior do que a variação líquida mas não por um quarto é um excesso ligeiro e não a agitação para que este aviso existe, e essas respostas são classificadas pelos seus méritos sem ele.
O aviso dá depois a medição, para que possa ver até que ponto a resposta ultrapassa esse quarto: “Here account=LAE moved +$22,067,919.71, larger in size than the whole net change of +$1,792,719.72.” O limiar é um mínimo e os relatórios em que dispara estão normalmente bem acima dele — um modelo de seguros a doze vezes a variação líquida lê-se igual a um a uma vez e meia, a menos que o valor seja indicado. Ambos os valores trazem o sinal, e a comparação é em dimensão, pelo que um membro que desceu dentro de um total que subiu se lê como o movimento compensatório que é. Quando o que fez disparar o aviso não foi o movimento próprio de um único membro — uma deslocação de quota do conjunto, ou a contribuição de um fator — a frase nomeia essa medida em vez disso e não cita qualquer valor, porque o valor para esses já está indicado noutro local da resposta ou ficaria ao lado de um diferente e lia-se como uma contradição.
A linha que nomeia o membro concentrado diz que o movimento foi compensado por movimentos opostos noutros locais, e já não caracteriza em que medida. Costumava ler-se “others partly offset” — uma palavra a cobrir tudo, desde alguns por cento até mais de noventa. Num modelo de seguros em que uma conta se moveu $22,067,919.71 contra uma variação líquida total de $1,792,719.72, os movimentos opostos tinham anulado mais de nove décimos da subida dessa conta, e “partly” dizia a um leitor quase o oposto do que aconteceu.
Uma resposta que abrange vários ramos recombinados propõe um desses ramos para seguir. O agente não rastreia uma pergunta para além do ponto em que os ramos se encontram, pelo que é aqui que devolve o fio a si: nomeia um ramo e a tabela a rastrear para o retomar por si. O ramo proposto é o maior movimento entre os que consegue nomear e atribuiu — quando não conseguiu atribuir nenhum, mantém a sua recusa simples — e não se descreve como o maior por esse motivo — a lista por ramo acima já mostra a variação de cada ramo, pelo que pode ver a classificação por si.
Limitações atuais
Seção intitulada “Limitações atuais”Sugestões
Seção intitulada “Sugestões”- Indique a tabela e o período. “Why did
cost_line_revchange from 2025-01 to 2025-02?” obtém uma resposta mais precisa do que “why did costs change?”. - Escolha um período anterior e um posterior reais com um movimento que possa verificar.
- Se o agente analisar a tabela errada, indique explicitamente o projeto e a tabela para que não tenha de adivinhar.
Passos seguintes
Seção intitulada “Passos seguintes”- Ligar um agente de programação com IA — ligue um agente à sua área de trabalho por MCP
- Resultados de alocação — o que a tabela de resultados contém
- Resolução de problemas de alocações — quando a reconciliação falha