Produto Territorial
Territorial Invoices
O sistema que roda o faturamento da Territorial: apontamento de horas em calendário, contratos com matemática de cobrança determinística e faturas geradas em minutos.
A Territorial fatura vários clientes sob tipos de contrato diferentes todo mês. Esta plataforma interna registra horas em um calendário de arrastar-e-criar, consolida as horas por contrato e marco e gera um lote completo de faturas com PDFs. O fechamento que levava uma tarde hoje leva menos de quinze minutos.
Em resumo
- Horas são registradas em um calendário como se cria um evento no Google Calendar: arrastar, redimensionar, mover
- Três tipos de contrato com matemática de cobrança pura e testável: por hora, por hora com base fixa, e por hora com crédito rotativo
- Faturas em rascunho são projeções ao vivo; faturas emitidas são snapshots imutáveis com câmbio congelado e PDFs A4
- Um servidor MCP permite que o Territorial Assistant registre lançamentos de horas automaticamente a partir da minha atividade
O problema
Faturar consultoria é simples até deixar de ser: um cliente por hora simples, outro em retainer com hora extra, um terceiro com base que rola horas não usadas para frente, todos em moedas diferentes, todos precisando de um documento com cara de definitivo. Eu queria que o mês inteiro fechasse em minutos e que os números fossem reproduzíveis.
O que faz
Clientes, contratos, projetos e marcos formam o modelo; lançamentos de horas se ligam a um projeto e marco e herdam a taxa do contrato. O calendário é o caminho rápido para registrar, com filtros por cliente, projeto e marco e cores por projeto. Quando um período fecha, o sistema calcula as horas faturáveis de cada contrato: por hora simples cobra o trabalhado; com base cobra o piso mais as extras à sua própria taxa; com rollover cobra a base, difere o excedente para um buffer de um ciclo e usa o crédito trazido para cobrir déficits antes de expirá-lo. Cada regra é uma função pura com exemplos resolvidos na documentação e nos testes.
Faturas começam como rascunhos projetados ao vivo dos lançamentos e se tornam imutáveis ao serem emitidas, com linhas, totais e câmbio congelados. PDFs são renderizados com Playwright a partir do mesmo HTML que a aplicação mostra, em inglês ou português, com endereços estruturados de emissor e cliente e instruções de pagamento por moeda. Um dashboard mostra horas, receita, distribuição por cliente e alertas de lançamentos órfãos e risco de horas base.
Automação e integração fiscal
Com o tempo fiquei preguiçoso para apontar, então hoje o Territorial Assistant propõe lançamentos a partir do histórico git, transcrições do Claude Code e atividade de janelas e os registra aqui por um endpoint MCP com token de acesso pessoal, com o mesmo modelo de papéis da aplicação web. A integração fiscal com a NF-e está em andamento: hoje a plataforma prepara tudo o que o sistema fiscal pede, de modo que emitir a nota vira uma tarefa de copiar e colar em vez de reconstrução.
A stack é um monorepo pnpm com uma API Fastify (validação Zod, Prisma, PostgreSQL) e um frontend Next.js App Router que mantém toda a lógica de negócio no servidor.
Mais projetos
Todos os projetos
Territorial Assistant
Um daemon baseado em Discord que transforma minha própria atividade de trabalho em timesheets aprovados e em uma base curada de histórias de engenharia.
- TypeScript
- discord.js
- Drizzle
- PostgreSQL
- +3

Finances
Um app pessoal de livro-razão e orçamento com arquitetura Postgres-first: uma instância PostgREST, um frontend estático, nada mais.
- PostgreSQL
- PostgREST
- React
- Vite
- +5
- Pergunta
- LLM
- Validação
- PostGIS
- Resposta
Plataforma de Consulta Geoespacial em Linguagem Natural
Um produto em que usuários fazem perguntas sobre dados geográficos em linguagem natural e recebem respostas, gráficos e mapas, gerados por um LLM sobre PostGIS.
- FastAPI
- Python
- LangChain
- PostgreSQL
- +7