O Compromisso Que Você Esqueceu de Ter Feito (o Stark Não)

Algures no registo de um cliente, no meio de uma nota comum sobre uma chamada comum, está uma frase como esta: “O orçamento está apertado agora, ficou combinado voltarmos a contactá-los daqui a dois meses para retomar o assunto.”

Escrita uma vez. Nunca mais revista. Não porque alguém se tenha esquecido de que era importante, mas porque nada nela parecia uma tarefa. Não era uma entrada de calendário. Não era um lembrete. Era só uma frase, a fazer o que as frases nas notas fazem: ficar ali, tecnicamente verdadeira, funcionalmente invisível.

Queríamos saber se o sistema conseguia apanhar esse tipo de coisa sozinho, sem que ninguém tivesse de se lembrar de voltar atrás e transformar à mão uma frase numa tarefa.

O que realmente construímos, e o que deliberadamente não

O instinto com uma funcionalidade destas é deixar a IA tratar de tudo — ler a nota, calcular a data, decidir que está em atraso, talvez até redigir o seguimento. Optámos, de propósito, por dividir isto.

O único trabalho do modelo é a compreensão de linguagem: ler as notas recentes de um cliente e reconhecer um compromisso orientado para o futuro, algo como “retomamos o assunto daqui a dois meses” ou “voltamos a contactar depois da reunião do conselho deles.” Estima o atraso implícito em termos simples. É só isso. Todo o cálculo real de datas — o prazo, se hoje já o ultrapassou — acontece depois, em código comum e determinístico. O modelo nunca faz contas nem toma a decisão final sobre o que está em atraso. Ele lê. O código decide.

Essa divisão importa mais do que parece. A compreensão de linguagem é exatamente o tipo de tarefa vaga, dependente de contexto, em que um modelo é bom. O cálculo de datas é exatamente o tipo de tarefa em que não se quer que um modelo improvise, nem um pouco.

O teste real

Não nos limitámos a verificar se o endpoint devolvia algo com aspeto razoável. Escrevemos uma nota real num registo de cliente real: “…ficou combinado voltarmos a contactá-los daqui a 2 meses para retomar o orçamento.” Chamámos o endpoint. Extraiu corretamente o compromisso, calculou um atraso implícito de 60 dias, e chegou a um prazo exatamente 60 dias depois da data e hora reais da nota, corretamente assinalado como ainda não em atraso.

Pequeno, e é exatamente esse o ponto. O sistema não precisou que lhe dissessem que havia um compromisso para encontrar. Leu uma frase que uma pessoa escreveu para si própria, não para um formulário, e tirou dali um prazo real.

A parte fácil de não notar

As notas no Craft11 só podem ser acrescentadas. Ninguém as edita, ninguém as apaga, nem sequer o Stark. É o mesmo princípio que mantém honesto o lado em bruto de cada registo: o que você realmente escreveu fica exatamente como escreveu. Quando depois precisámos de remover a nota de teste, não havia um botão de eliminar a que recorrer, porque não é suposto existir um. Foi preciso uma operação direta na base de dados, confirmada primeiro, desfeita logo a seguir.

Isso é um pequeno incómodo para nós durante os testes. É também a razão pela qual a funcionalidade de deteção de compromissos é, à partida, digna de confiança: lê texto humano real, inalterado, não limpo, e não uma versão higienizada dele.

Porque vale mesmo a pena fazer isto

Nada disto substitui um gestor de tarefas. Substitui aquele modo de falha específico e silencioso em que o único registo de uma promessa é uma frase que ninguém vai voltar a ler. O sistema não precisa que você escreva de forma diferente, estruture as suas notas, ou se lembre de assinalar seja o que for. Só precisa que escreva o que realmente aconteceu, da forma como escreveria para si próprio, e ele trata de reparar nisso.

Perguntas que as pessoas realmente fazem

A IA decide o prazo real, ou apenas deteta que existe uma promessa?

Dividido deliberadamente ao meio. A IA só faz compreensão de linguagem: lê uma nota e reconhece um compromisso orientado para o futuro, depois estima o atraso implícito em termos simples — daqui a dois meses torna-se cerca de 60 dias. Todo o cálculo real de datas, o prazo, se já está em atraso, acontece depois, em código comum. O modelo nunca faz contas nem toma a decisão final.

O que acontece se a IA não encontrar nenhum compromisso, ou a chamada falhar?

Devolve uma lista vazia. Sem fornecedor configurado, um tempo limite excedido, uma resposta mal formada — tudo isso falha em segurança para nada, em vez de adivinhar um compromisso que não existe ou de lhe devolver um erro.

O Stark pode agir automaticamente sobre o compromisso, como enviar um seguimento?

Não. Apresenta o compromisso e a data calculada. É sempre uma pessoa a decidir o que fazer, se é que há algo a fazer.

Junte-se à Early Crew →← Voltar a todos os artigos

Recorded on a live database and a live screen, but run by automated scripts standing in for a human's clicks and typing, not performed live. When Stark answers faster than the script expects, the screen can hold still for a beat before the next step starts. That's left in on purpose. The goal was never a polished demo reel, it was proof the feature actually works. Dejan's own verdict, after watching the raw footage: rough, but the best demo video we've made.