Forge Labs · Co-fundador & Tech Lead

Sense Smart Clinic

SaaS de gestão para clínicas e profissionais de saúde: agenda completa, repasse financeiro por profissional e API pública. Carro-chefe da Forge Labs.

Cliente
Forge Labs
Papel
Co-fundador & Tech Lead
Período
2026 ao presente

O problema

Clínicas e profissionais de saúde no Brasil ainda operam em uma stack que parou no tempo: agenda no telefone, prontuário no papel e, quando um procedimento divide receita entre a clínica e o profissional, conciliação na mão. O Sense é o SaaS que estamos construindo na Forge Labs para cobrir esse fluxo de ponta a ponta, atendendo tanto a operação da clínica quanto o profissional que trabalha nela.

É o carro-chefe da Forge Labs, e eu lidero a engenharia: arquitetura, escolha de stack, code review, cadência de sprint e onboarding técnico do time.

Arquitetura

Aplicação única em Next.js 16 (App Router) com React 19 sobre PostgreSQL via Prisma 7. Autenticação em Better Auth, com a hierarquia de papéis SUPER_ADMIN > ADMIN > CLINIC_MANAGER > PROFESSIONAL > PATIENT. Arquivos, como anexos e mídia de perfil, ficam em storage compatível com S3, usando MinIO em desenvolvimento.

O código segue uma regra de camadas que é levada a sério:

UI Components → Hooks → Services → Repositories → Database (Prisma)

Componentes e hooks nunca importam o cliente do Prisma. Os services nunca pulam os repositories. As rotas de API e as server actions são finas: validam a entrada com schemas Zod, delegam para um service e respondem por helpers tipados (apiSuccess, apiList, apiError). O resultado é que toda a lógica de acesso a dados fica num único lugar, e o escopo por clínica vive na camada de repository, não espalhado pelas telas.

A clínica é a unidade central do modelo. Profissionais e pacientes se relacionam com clínicas, e um mesmo paciente pode estar em mais de uma. Os componentes de interface são uma biblioteca interna, a Coss UI, sobre Base UI e Tailwind 4, tratada como intocável para manter consistência sem reescrever primitivos.

Uma decisão que atravessa o sistema inteiro: todo valor monetário é inteiro, em centavos. finalValueInCents = transferValueInCents + commissionValueInCents. Nenhum float perto de dinheiro.

A agenda

O coração do produto é a agenda, e é a parte mais completa. Ela tem visões por dia, semana e mês, e cada agendamento percorre uma máquina de estados: PENDING → PAYMENT_CONFIRMED → COMPLETED, com desvios para CANCELLED, NO_SHOW, RESCHEDULED e EXPIRED.

A disponibilidade é configurada por dia da semana, com bloqueios para férias e feriados, e o sistema recusa conflito de horário na marcação. Um agendamento guarda um retrato imutável dos serviços no momento em que foi criado, então mudar o preço de um serviço depois não reescreve o histórico. Há ainda tipos de atendimento (presencial, online e domiciliar), consultas de retorno encadeadas à original e geração de guia em PDF.

O aprendizado que carrego daqui: em agenda de saúde, o difícil não é desenhar o calendário, é modelar as exceções (bloqueio, remarcação, retorno, falta) sem que elas se contradigam. O retrato imutável dos serviços foi o que evitou que o relatório financeiro e o histórico clínico divergissem com o tempo.

Financeiro: split e repasse

Cada atendimento gera um pagamento com o valor cheio dividido entre o que o profissional recebe e a comissão da plataforma, sempre em centavos. As regras de parcelamento são explícitas: só cartão de crédito parcela, no máximo em quatro vezes, e à vista não parcela. Estorno é rastreado com valor, motivo e data.

No fim do mês, o repasse consolida os pagamentos confirmados de cada profissional em uma transferência, com os dados de recebimento dele (PIX ou conta bancária) e um fluxo de status próprio. Esse cálculo de split e de repasse roda inteiro dentro do sistema. A integração com um gateway externo, para de fato liquidar a transferência, é o próximo passo, e os campos de gateway já estão modelados para receber essa etapa sem reescrita.

Sendo honesto sobre a maturidade: a contabilidade do dinheiro é real e funciona; o que ainda não está plugado é o provedor externo que move o dinheiro.

Uma API pública para um agente de IA

Uma adição recente é uma API pública versionada em /api/v1, autenticada por chave de API e descrita em OpenAPI, pensada para um agente de IA consumir: buscar profissionais, criar e remarcar agendamentos, listar pacientes. Documentar o contrato em OpenAPI desde o começo foi o que tornou viável expor isso com segurança, em vez de um endpoint improvisado.

Onde está

Em produção, com uso diário. Hoje 4 clínicas e 37 profissionais tocam a rotina dentro do sistema: agenda, pacientes, financeiro de repasse e perfis públicos com busca por especialidade e data. As decisões de base, como o modelo orientado à clínica, a separação em camadas e o dinheiro em centavos, foram tomadas para manter linear o custo de chegar à décima e à centésima clínica. O passo que ainda falta para fechar o ciclo de receita é integrar o gateway de pagamento, mas a operação já roda sobre essa fundação todos os dias.

Números

  • 37

    Profissionais ativos

  • 4

    Clínicas em produção

Stack

  • Next.js 16
  • React 19
  • TypeScript strict
  • Prisma 7
  • PostgreSQL
  • Better Auth
  • MinIO
  • Tailwind 4
  • Base UI
  • TanStack Query
  • React Hook Form
  • Zod
  • Resend
  • Google Maps API
  • Vitest