Inteligência que

Programador de Software | Design de Sistemas e IA. Concebo e desenvolvo software, dos modelos de dados e da arquitetura de backend a interfaces intuitivas. Vivo no Porto e estou disponível para trabalhar a tempo inteiro.

Explorar o NEXUS↓

A MINHA POSIÇÃO

Levo problemas complexos da arquitetura ao software funcional. Ligo dados, lógica de backend e interfaces em produtos que as pessoas conseguem compreender e utilizar.

ENTRADAESTADODECISÃOMEMÓRIAPRÓXIMA AÇÃO

PROJETO EM DESTAQUE / NEXUS + MESH

Investigação ligada às suas fontes.

Concebi o NEXUS para tornar a investigação verificável: 400 projetos financiados pela UE ligados aos Objetivos de Desenvolvimento Sustentável através de excertos das fontes, verificações de evidência e um histórico de decisões. Desenvolvi os fluxos de dados e a interface que os reúne.

O trabalho de validação inclui a verificação por reprodução de 5.085 decisões em 24 execuções. O Mesh, a biblioteca de governação em Python e SQLite, acrescenta revisões imutáveis, comandos transacionais e controlos de revisão, com 39 testes documentados.

FOAAP / UM PRODUTO QUE CONCEBI E CONSTRUÍ

FOAAP. Um sistema operativo para negócios que mantém a memória.

O contexto de quem cria um negócio dispersa-se por conversas, documentos e ferramentas. O FOAAP transforma-o num estado persistente do negócio, resolve contradições e apresenta uma ação de elevado impacto.

CONCEITOS DE INTERFACE / SEIS SITES DE DEMONSTRAÇÃO
Passa o cursor sobre um nome para explorar. Toca ou usa as setas para mudar.
NNorth — Estúdio de design independente

FOAAP / ESTÚDIOS

A interface, de perto.

Explorar a demonstração do motor ↗
Estúdios FOAAP para MVP, apresentações, som, conteúdos com IA e código. Captura original em inglês.

Estúdios FOAAP · Captura da interface em inglêsDesliza para explorar ↔

O MODELO OPERATIVO

Um percurso contínuo da ambiguidade à ação.

Muitas vezes, a informação já existe. Ligo-a entre fontes e modelos de pensamento para que uma pessoa compreenda a sua posição, veja as suas opções e aja a tempo.

01

compreender

Compreender a posição da pessoa dentro de um sistema: o que a afeta, o que consegue ver e onde a sua capacidade de agir está limitada.

02

estruturar

Construir uma ontologia que liga pessoas, instituições, registos, obrigações e prazos. Transformar factos isolados em relações sobre as quais uma pessoa pode raciocinar.

03

investigar

Cruzar fontes e modelos de pensamento pouco familiares. Encontrar contradições, registos desatualizados e informação que passou a ser relevante para uma decisão ou um prazo.

04

decidir

Formular uma afirmação explícita sobre a situação, sustentada por evidência. Tornar os pressupostos visíveis, ponderar alternativas e manter a posição aberta a revisão.

05

produzir

Reunir esse raciocínio em algo utilizável: um mapa de evidência, uma síntese para decisão ou software funcional. Dar à pessoa uma base para agir.

06

recordar

Preservar as fontes e o raciocínio por detrás de cada posição. Permitir que nova informação atualize o modelo, para que o conhecimento se acumule entre decisões.

07

próxima ação

Identificar o próximo passo concreto, do que depende e quando deve acontecer. Tornar explícito o percurso da compreensão à capacidade de agir.

A TESE

Ampliar o teu repertório cognitivo através de investigação e síntese.

Construo sistemas que ajudam as pessoas a investigar problemas pouco familiares, ligar evidência entre domínios e transformar essa síntese em decisões que podem revisitar.

Explorar o meu GitHub ↗

Repositórios selecionados

03 REPOSITÓRIOS / CÓDIGO E DECISÕES
scripts/mesh_ontology.py
        fingerprint = digest(request)        self.db.execute("BEGIN IMMEDIATE")        try:            prior = self.db.execute("SELECT * FROM commands WHERE actor=? AND key=?", (actor.id, request["idempotency_key"])).fetchone()            if prior:                require(prior["request_hash"] == fingerprint, "Idempotency key reused with different content", "version_conflict")                result = json.loads(prior["response"])···            self.db.commit()            return result        except BaseException:            self.db.rollback()            raise

Tornar cada alteração rastreável.

Construí a camada de governação do NEXUS com revisões imutáveis, revisão independente e comandos transacionais. Uma repetição devolve o resultado registado; reutilizar a chave com conteúdo diferente é rejeitado.

O comando e o resultado registado são confirmados em conjunto, ou a transação é revertida.

A aplicação fornece identidades de confiança. A integridade da evidência não prova que uma interpretação esteja correta.

02 / FOAAP Engine ↗PostgreSQL / PL/pgSQL
supabase/engine-schema.sql
  select v.version into cur_version from public.venture_models v    where v.user_id = p_user and v.venture_id = p_venture for update;···  if p_base = -1 or cur_version = p_base then    update public.venture_models set model = p_model, version = cur_version + 1      where user_id = p_user and venture_id = p_venture;    return query select 'ok'::text, cur_version + 1, p_model, now(); return;  end if;  return query select 'conflict'::text, v.version, v.model, v.updated_at    from public.venture_models v    where v.user_id = p_user and v.venture_id = p_venture;end $$;revoke all on function public.save_venture_model(uuid, text, jsonb, int) from public, anon, authenticated;

Tornar explícitas as escritas desatualizadas.

Um bloqueio de linha serializa as atualizações de um modelo existente. Quem faz o pedido fornece uma versão de base; uma gravação desatualizada devolve um conflito e o estado atual do servidor para que a aplicação possa conciliá-los.

A concorrência faz parte do contrato de persistência.

A via de gravação forçada (p_base = -1) é explícita. Os papéis public, anon e authenticated não podem executar diretamente esta RPC.

lib/validate_candidate.mjs
    const n = countOccurrences(rawText, q);    if (n === 0) {      errors.push(`quote_not_found: evidence_quotes[${i}] ${JSON.stringify(q.slice(0, 60))}`);    } else if (n > 1) {      errors.push(`ambiguous_quote: evidence_quotes[${i}] occurs ${n}+ times ${JSON.stringify(q.slice(0, 60))}`);    } else {      const start = rawText.indexOf(q);      spans.push({ start, end: start + q.length, text: q });    }

Rastrear cada afirmação até à sua fonte.

Mantenho as extrações do modelo como candidatas. Em anchorQuotes, uma citação tem de ocorrer exatamente uma vez no texto original antes de o validador aceitar a sua posição na fonte. Evidência ausente ou ambígua produz um erro explícito.

O modelo fornece a citação. Código determinístico calcula a sua posição.

Uma correspondência exata estabelece a proveniência; não estabelece que a afirmação é verdadeira.

Excertos exatos das revisões indicadas. Os intervalos assinalam linhas omitidas. Cada repositório inclui código que pode ser inspecionado publicamente.

RESPONSABILIDADE DE PONTA A PONTA

01

Produto

Definir o problema, modelar as suas relações e conceber a forma como uma pessoa utiliza o produto.

02

Engenharia

Desenvolver a interface, o backend e os fluxos de dados com React, Python, SQL e Supabase; integrar IA e publicar.

03

Critério

Testar pressupostos, ligar decisões à evidência e tratar conflitos de estado, falhas e novas tentativas.

Paulo Villalobos a falar em palco

QUEM CONSTRÓI

Transformo complexidade em software que as pessoas conseguem utilizar.

Os problemas que mais me envolvem são aqueles em que a informação, os processos e as decisões estão dispersos. Estudo a estrutura subjacente: o modelo de dados, a arquitetura de backend, o estado e as relações. Depois transformo tudo num produto coerente, com uma interface que torna essa complexidade clara e intuitiva.

Assumo a responsabilidade desde a definição do problema e a conceção do sistema até à implementação, aos testes e à publicação. O meu trabalho inclui o NEXUS e o Mesh, os fluxos de estado persistente e memória do FOAAP e uma plataforma imobiliária para um cliente privado. Motiva-me compreender um sistema em profundidade, fazer todas as partes funcionar em conjunto e tornar o resultado útil para outra pessoa.

PORTO / REMOTO

Dá-me a parte difícil.

paulo@foaap.app ↗
WhatsApp