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.


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
PROJETO EM DESTAQUE / NEXUS + MESH
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Í
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.
FOAAP / ESTÚDIOS
Estúdios FOAAP · Captura da interface em inglêsDesliza para explorar ↔
A TESE
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 ↗ 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() raiseConstruí 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.
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;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.
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 }); }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
Definir o problema, modelar as suas relações e conceber a forma como uma pessoa utiliza o produto.
Desenvolver a interface, o backend e os fluxos de dados com React, Python, SQL e Supabase; integrar IA e publicar.
Testar pressupostos, ligar decisões à evidência e tratar conflitos de estado, falhas e novas tentativas.

QUEM CONSTRÓI
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