YOUbot

Orquestrador

A IA interpreta · o servidor autoriza · o banco guarda

Modo demonstração no aparelho

Sem sessão, os registros ficam apenas neste navegador e a interpretação usa o motor local de regras.

As 7 camadas

A IA decide o que a usuária quis dizer. O backend decide o que pode ser feito.

1

Experience Layer

Parcial

Interfaces da usuária: PWA mobile-first, desktop, captura por voz e texto, telas de confirmação e notificações.

PWA, voz, texto e confirmação prontos. Upload de foto/PDF e notificações push pendentes de configuração.

src/routes/* · src/components/youbot/* · src/lib/youbot/speech.ts

2

AI Gateway

Implementada

Recebe a solicitação, autentica a sessão e prepara o contexto antes de qualquer interpretação.

Sessão validada no servidor antes da IA rodar; sem sessão, cai no motor local de demonstração.

src/lib/orchestrator/orchestrator.functions.ts · auth-middleware

3

AI Orchestrator

Implementada

O cérebro: transforma linguagem natural em intenção + entidades estruturadas, monta o plano e aplica políticas.

IA (Gemini via Lovable AI) com fallback determinístico; plano e políticas sempre decididos no servidor.

src/lib/orchestrator/interpret.server.ts · policy.server.ts · contract.ts

4

Domain Services

Implementada

Regras reais de cada área: Medical, Finance, Family/Casa, Calendar, Smasher, Content, Inventory e Documents.

Cada domínio valida e persiste seus registros; o orquestrador só propõe, o serviço de domínio executa.

src/lib/med/* · src/lib/fin/* · src/lib/casa/* · src/lib/content/* · src/lib/orchestrator/mapping.ts

5

Integration Hub

Pendente de configuração

Fala com sistemas externos: calendário, WhatsApp, e-mail, OCR de agenda, push e pagamentos.

11 adaptadores catalogados, todos visivelmente 'pendente de configuração'. Nada é simulado.

src/lib/integrations/catalog.ts · src/routes/integracoes.tsx

6

Data Layer

Implementada

Banco Postgres com autenticação, storage e isolamento por usuária.

RLS ativa em todas as tabelas; sem sessão, os dados ficam só no aparelho (modo demonstração).

Lovable Cloud · tabelas records, orchestrator_log, audit_log, profiles

7

Security & Audit

Implementada

Autorização, políticas de confirmação, logs de auditoria, desfazer e proteção de dados sensíveis.

Ações sensíveis e externas exigem confirmação explícita; toda gravação gera entrada de auditoria com desfazer.

RLS no banco · policy.server.ts · audit_log · histórico no app

O cérebro: pipeline do Assistant Orchestrator

Cada etapa é código de verdade, não instrução dentro do prompt. Assim a lógica fica testável e auditável.

  1. 1

    Input

    Camada 1
    Implementada

    A usuária fala, escreve ou envia um arquivo pelo app.

    Captura por voz e texto disponível em todas as telas pelo botão central.

    src/components/youbot/CaptureSheet.tsx

  2. 2

    Speech-to-Text / OCR

    Camada 1
    Parcial

    Transforma áudio em texto e, no futuro, foto/PDF em texto.

    Transcrição por voz do próprio aparelho já funciona. OCR de foto/PDF pendente de configuração.

    src/lib/youbot/speech.ts · src/routes/medicina.importar.tsx

  3. 3

    Normalize

    Camada 3
    Implementada

    Limpa o texto, resolve datas relativas (amanhã, sexta) e padroniza valores.

    Normalização em português: datas, horários, dinheiro, recorrência e área.

    src/lib/youbot/nlu.ts

  4. 4

    Intent Detection

    Camada 3
    Implementada

    Descobre a intenção: criar compromisso, tarefa, financeiro, ideia ou consulta.

    Modelo de linguagem no servidor com fallback determinístico de regras.

    src/lib/orchestrator/interpret.server.ts

  5. 5

    Entity Extraction

    Camada 3
    Implementada

    Extrai pessoa, paciente, data, hora, local, valor, responsável e recorrência.

    Saída sempre estruturada e validada antes de seguir adiante.

    src/lib/orchestrator/interpret.server.ts · nlu.ts

  6. 6

    Context Retrieval

    Camada 4
    Implementada

    Busca o contexto da usuária: pacientes, contas, filhos, agenda e registros parecidos.

    Context Engine no servidor: conversa recente, última pessoa citada, registros relacionados e agenda — só o necessário vai ao modelo.

    src/lib/orchestrator/context.server.ts · src/lib/search/universal.ts

  7. 7

    Policy Check

    Camada 7
    Implementada

    Decide o que PODE ser feito: dado sensível, ação que sai do app, integração ausente.

    A IA nunca autoriza. Toda permissão é decidida no servidor, com motivo escrito.

    src/lib/orchestrator/policy.server.ts

  8. 8

    Action Planning

    Camada 3
    Implementada

    Monta o plano: salvar registro, programar lembrete, preparar mensagem, compartilhar.

    Cada ação carrega se é interna ou externa e qual integração exigiria.

    src/lib/orchestrator/policy.server.ts (buildPlan)

  9. 9

    Confirmation

    Camada 1
    Implementada

    Mostra o resumo editável e espera o 'sim' da usuária quando a política exige.

    Financeiro, dados de paciente e qualquer ação externa sempre pedem confirmação explícita.

    src/components/youbot/CaptureSheet.tsx

  10. 10

    Tool Execution

    Camada 5
    Parcial

    Executa as ferramentas autorizadas: calendário, mensagem, e-mail, documento.

    Catálogo de ferramentas controladas com validação de dados e autorização no servidor; ferramentas externas seguem pendentes de configuração e nada é simulado.

    src/lib/orchestrator/tools.ts · tools.server.ts · src/lib/integrations/catalog.ts

  11. 11

    Persist

    Camada 6
    Implementada

    Grava o registro no banco, com a identidade da usuária.

    Gravação só no servidor, com RLS por usuária. Sem sessão, fica no aparelho (demonstração).

    src/lib/orchestrator/orchestrator.functions.ts (executePlan)

  12. 12

    Response

    Camada 1
    Implementada

    Devolve a confirmação em português e atualiza as telas do domínio.

    O registro aparece imediatamente na área certa depois do salvamento.

    stores de domínio · telas de agenda, medicina, financeiro, casa

  13. 13

    Audit Log

    Camada 7
    Implementada

    Registra o que foi interpretado, o que foi autorizado e o que foi gravado — com desfazer.

    Cada comando vira uma linha auditável, do texto original até a decisão final.

    tabelas orchestrator_log e audit_log · src/routes/historico.tsx

Context Engine — quem é “ela”?

Antes de chamar o modelo, o servidor monta um pacote mínimo de contexto e entrega só o necessário: menos custo, mais precisão.

Conversa recente

Últimos comandos da usuária e a pessoa citada em cada um.

Última paciente mencionada

Resolve pronomes como “ela”, “a mesma”, “essa paciente”.

Registros relacionados

Só os registros com palavras em comum com o comando atual.

Agenda próxima

Compromissos futuros para ancorar “semana que vem”.

src/lib/orchestrator/context.ts · context.server.ts

Tool Calling — ferramentas controladas

A IA não tem acesso ao banco. Ela só pode pedir uma destas ferramentas, e cada chamada é validada em dados e autorização antes de rodar. Exemplo: “A Ana fez laser hoje” vira search_patient → get_patient → create_procedure → create_followup.

search_patient()

Leitura
Sensível

Procura a paciente pelo nome dentro dos registros da usuária.

Exige: pessoa · records (kind=compromisso/tarefa, area=socciederm)

get_patient()

Leitura
Sensível

Carrega o histórico da paciente encontrada para dar contexto à ação.

Exige: pessoa · records + memória estruturada

create_patient()

Escrita
Sensível

Cadastra uma paciente nova.

Exige: pessoa · cadastro de pacientes

create_procedure()

Escrita
Sensível

Registra o procedimento realizado (laser, cirurgia, aplicação).

Exige: título · records (compromisso · socciederm)

create_followup()

Escrita
Sensível

Programa o retorno da paciente (D+1, D+7, D+14, D+30).

Exige: pessoa · records (tarefa · socciederm)

create_task()

Escrita

Cria uma tarefa, com responsável opcional.

Exige: título · records (tarefa)

create_reminder()

Escrita

Programa um lembrete interno com data e antecedência.

Exige: título, data · records (compromisso) + lembrete interno

create_calendar_event()

Escrita

Cria compromisso no calendário interno do YOUbot.

Exige: título, data · records (compromisso)

create_expense()

Escrita
Sensível

Registra uma despesa com valor, categoria e meio de pagamento.

Exige: valor · records (financeiro · saída)

create_payment()

Escrita
Sensível

Registra um recebimento de paciente.

Exige: valor · records (financeiro · entrada)

search_inventory()

Leitura

Consulta o estoque por item, lote ou validade.

Exige: nenhum campo · estoque da clínica

create_inventory_item()

Escrita

Registra entrada de insumo com lote e validade.

Exige: título · estoque da clínica

search_memory()

Leitura

Busca na memória operacional e estruturada para responder perguntas.

Exige: nenhum campo · records + cadastros

generate_document()

Geração
Sensível

Prepara um documento editável (relatório, orientações, laudo).

Exige: título · documentos (rascunho editável)

generate_message()

Geração

Escreve a mensagem para copiar — não envia nada.

Exige: título · rascunho de mensagem

send_message()

Externa
Sensível
Sai do app

Envia a mensagem para fora do app.

Exige: pessoa, título · WhatsApp / e-mail

src/lib/orchestrator/tools.ts · tools.server.ts

Intent Engine — catálogo de intenções

Detectar a intenção não basta: cada intenção declara a entidade envolvida, os campos obrigatórios e se o dado é sensível ou sai do app.

CREATE_TASK

Criar tarefa

Entidade: Tarefa · Domínio: Calendar

Obrigatórios: título

Pedir para a secretária confirmar a agenda de quinta

CREATE_REMINDER

Criar lembrete

Entidade: Lembrete · Domínio: Calendar

Obrigatórios: título, data

Me lembra de falar com a Ana amanhã sobre o laser

CREATE_EVENT

Criar compromisso

Entidade: Compromisso · Domínio: Calendar

Obrigatórios: título, data

Cirurgia da Helena sexta às 14h no Hospital Santa Luzia

UPDATE_EVENT

Atualizar compromisso

Entidade: Compromisso · Domínio: Calendar

Obrigatórios: título

Passa a cirurgia da Helena para sábado às 9h

CREATE_PATIENT
Sensível

Cadastrar paciente

Entidade: Paciente · Domínio: Medical

Obrigatórios: pessoa

Cadastrar a paciente nova, Beatriz Nogueira

CREATE_FOLLOWUP
Sensível

Programar follow-up

Entidade: Follow-up · Domínio: Medical

Obrigatórios: pessoa

Follow-up D+7 da Ana depois do laser

CREATE_PAYMENT
Sensível

Registrar recebimento

Entidade: Recebimento · Domínio: Finance

Obrigatórios: valor

Recebi 1.800 da paciente Ana por Pix

CREATE_EXPENSE
Sensível

Registrar despesa

Entidade: Despesa · Domínio: Finance

Obrigatórios: valor

Comprei material da clínica por 640 reais no cartão

CREATE_INVENTORY_ITEM

Registrar insumo

Entidade: Insumo de estoque · Domínio: Inventory

Obrigatórios: título

Chegaram 10 caixas de fio de sutura, validade em março

CREATE_GIFT_IDEA

Salvar ideia de presente

Entidade: Presente · Domínio: Family / Casa

Obrigatórios: título

Ideia de presente para a minha mãe: kit de jardinagem

CREATE_SHOPPING_ITEM

Adicionar à lista de compras

Entidade: Item de compra · Domínio: Family / Casa

Obrigatórios: título

Põe café e azeite na lista do mercado

CREATE_SMASHER_IDEA

Salvar ideia Smasher

Entidade: Ideia · Domínio: Smasher

Obrigatórios: título

Ideia para o Smasher: ranking por região

GENERATE_DOCUMENT
Sensível

Gerar documento

Entidade: Documento · Domínio: Document

Obrigatórios: título

Gera as orientações pós-procedimento da Ana

GENERATE_MESSAGE
Sensível

Gerar mensagem

Entidade: Mensagem · Domínio: Document

Obrigatórios: pessoa

Escreve uma mensagem para a Ana confirmando o retorno

GENERATE_REPORT
Sensível

Gerar relatório

Entidade: Relatório · Domínio: Finance

Obrigatórios:

Fecha o relatório financeiro do mês

SEARCH_MEMORY

Buscar na memória

Entidade: Memória · Domínio: Memory / Busca

Obrigatórios:

O que eu anotei sobre a viagem de julho?

SEARCH_PATIENT
Sensível

Buscar paciente

Entidade: Paciente · Domínio: Medical

Obrigatórios: pessoa

Quando foi a última consulta da Ana?

SEARCH_CONTACT

Buscar contato

Entidade: Contato · Domínio: Memory / Busca

Obrigatórios: pessoa

Qual é o telefone da escola da Manu?

SEND_MESSAGE
Sensível
Sai do app

Enviar mensagem

Entidade: Mensagem · Domínio: Document

Obrigatórios: pessoa

Manda a mensagem de confirmação para a Ana

Comandos interpretados

O registro do pipeline aparece aqui depois de entrar — cada comando fica salvo com intenção, plano e decisão de política.