Pular para o conteúdo
Projetos / Lukre
LukreEm produção

Controle de gastos que começa com uma mensagem.

Finanças pessoais por conversa no WhatsApp: registre um gasto por mensagem e deixe o software determinístico cuidar dos registros, totais e lembretes.

Papel
Criador · produto e engenharia
Áreas
Finanças pessoais · Produtos conversacionais · IA
Exemplo de conversa

Almoço 38

Registrado: almoço, 38,00, em alimentação.

Quanto gastei com alimentação nesta semana?

Nesta semana, até agora:

Alimentação
284.00
Transporte
120.00

Conversa ilustrativa · valores de exemplo

O problema

Controlar gastos costuma falhar por um motivo banal: é mais um aplicativo, mais um formulário, mais uma coisa para lembrar na hora de pagar o café. A informação existe. Só raramente chega a algum lugar útil.

O Lukre parte de uma aposta menor. Se registrar um gasto parecer enviar uma mensagem, talvez ele seja registrado. Trabalha com o que as pessoas informam: não se conecta a bancos, não movimenta dinheiro e não oferece aconselhamento tributário ou de investimentos.

A experiência

Você conversa com o Lukre pelo WhatsApp. Digita um valor, descreve em áudio ou envia a foto de um recibo, e isso vira um registro categorizado. Depois pergunta no mesmo chat: quanto foi para alimentação no mês, o que aumentou, como está o orçamento. Uma família pode compartilhar o histórico, com cada pessoa escrevendo do próprio número.

Um painel web complementa a conversa. Nele, os registros viram gráficos e histórico, e algumas revisões ficam mais confortáveis que no chat: confirmar um recibo que precisa ser conferido, responder uma pergunta pendente, ajustar um limite de orçamento.

A arquitetura em poucas linhas

Visão lógica. Um membro da família envia uma mensagem pelo WhatsApp à camada de conversa, onde um agente a lê e um plugin verifica a família e fixa o remetente validado. A chamada cruza o contrato MCP até o serviço financeiro, passando por ferramentas MCP, serviços de aplicação e regras de domínio, e é persistida no PostgreSQL com segurança por linha para cada família. Um resultado estruturado volta ao agente, que responde ao membro.
Diagrama conceitualVisão lógica simplificada: responsabilidades e chamadas, não onde cada parte roda.Selecione o diagrama para ampliar.

O Lukre são dois sistemas com um contrato entre eles. Uma camada de conversa, construída sobre o agente de código aberto Hermes, mantém a sessão do WhatsApp, lê cada mensagem e decide qual operação foi solicitada. Um serviço financeiro em Python é a única fonte de verdade para o dinheiro e expõe ao agente um conjunto selecionado de operações como ferramentas do Model Context Protocol (MCP).

O agente propõe; o serviço verifica quem está pedindo, lê os números com código determinístico, aplica as regras e grava o registro. A frase de confirmação que você recebe é construída a partir dos valores armazenados.

Decisões que o definem

Os números ficam no código

Para gastos digitados, o modelo repassa a mensagem; um analisador do domínio lê valor, data e categoria. Dinheiro usa Decimal de ponta a ponta.

A família nunca é um argumento

Ela vem da credencial do agente e é imposta novamente pela segurança por linha no PostgreSQL. O modelo não pode escolher outra família.

Cada mensagem é aplicada uma vez

O identificador da mensagem é reservado na mesma transação do registro; assim, uma mensagem reenviada não registra o gasto duas vezes.

Tecnologia por responsabilidade

Conversa

Hermes, um ambiente de execução de agentes de código aberto, com WhatsApp via Baileys. Minha parte é um plugin Python que controla a entrada de cada mensagem e fixa o remetente.

Model Context Protocol (MCP)

O limite estruturado das ferramentas entre agente e serviço financeiro: entradas tipadas, resultados JSON e nenhuma autoridade própria.

Aplicação e domínio

Python 3.12 e FastAPI, com Pydantic nas bordas e um pacote de domínio sem código web ou de banco de dados.

Registros

PostgreSQL via SQLAlchemy e Alembic, com toda tabela de locatários delimitada pela família.

Recibos e voz

Um modelo multimodal lê recibos e gera um candidato que precisa passar por verificações de confiança e aritmética. Áudios chegam como transcrições.

Painel

Páginas renderizadas no servidor com htmx e gráficos, lendo do mesmo serviço.