Full-Stack / Applied AI Engineer

Reliable systems.
Answers you can trace.

I’m João Paulo. I build backend systems for public-sector workflows, and an AI tutor whose answers cite the pages they rely on. Now I’m bringing the same care for data integrity to open-source software for Nordic energy data.

  • 5 years shipping production software
  • Patient-regulation system in production
  • Open-source Nordic energy library on PyPI
  • AI answers linked to their source pages

What connects the work: business rules that have to hold, data that has to stay consistent, and answers that can be checked.

São Paulo, Brazil Available to relocate, with visa sponsorship

01 / Nordic energy, built in public

Making Nordic energy data easier to inspect and use.

Nordic balancing data comes from five sources, each with its own formats, gaps and revisions, and the public APIs show only the latest value. nordic-balancing puts it into one 15-minute UTC model and leaves a missing value missing instead of filling it in. Nordic Balancing Watch runs on that library and keeps every version it sees, so you can trace when a price first appeared and what changed later.

Open-source Python library

nordic-balancing

The data layer: typed Python clients for balancing and imbalance data from Energinet, Fingrid, Svenska kraftnät, eSett and ENTSO-E, on 15-minute UTC intervals. A value the source has not published stays empty, never zero, and two sources can be reconciled where they disagree. Installable from PyPI.

Live tracking site

Nordic Balancing Watch

Built on nordic-balancing: a collector polls the sources and keeps every price version it sees; the site shows when each price first appeared, per zone and source, and what was revised afterward. Collection started in October 2026, so the history is still short.

Upstream pull request

entsoe-py contribution

A contribution to entsoe-py, the Python client for the ENTSO-E Transparency Platform. Submitted, under review.

02 / Selected work

Built to solve real problems.

Health, regulation and applied AI.
Each one built so the right decision is the easy one.

01 / Public-service regulation

RegMais

In production

Patients reach the right specialist care, in the right order.

Public-sector staff have to match a specialist waiting list against limited appointment capacity. I built the system that proposes allocations by specialty, priority and waiting time. A proposal is only a preview: nothing changes in patient records until the operator confirms it.

  • React / TypeScript
  • FastAPI
  • SQLAlchemy / Alembic
Read the RegMais case study →

Inside the system

  1. Waiting list

    Specialty · priority · waiting time

  2. Allocation preview

    Compatible patients · available slots

  3. Operator confirms

    Explicit action before allocation

Interaction flow. Previewing compatible patients does not itself allocate them.

02 / Public pharmacy operations

DispensaMais

Built end to end · private repository

The right medicine, in the right amount, from the right lot.

A public pharmacy must give each patient exactly what they are authorized to receive and keep stock true down to the lot. I built the dispensing system end to end. Each dispensation rechecks the authorization version before stock moves and carries an idempotency key, so a retry is recognized instead of counted as a new dispensation.

  • Python / FastAPI
  • PostgreSQL
  • React / TypeScript
Read the DispensaMais case study →

Inside the system

  1. Authorization

    Patient · medicine · version

  2. Eligibility checks

    Active dates · cycle balance

  3. Dispensing

    Lot · quantity · stock event

Simplified write path. Authorization checks run before stock mutation.

03 / Applied AI · personal study tool

Study Brain

Personal tool · used daily · being rebuilt

AI answers you can check against the source.

Fluent chatbot answers were no use for exam study if I couldn’t check them. I built a personal AI tutor over my own PDF library and used it daily. Each retrieved passage keeps its file and page all the way to the answer, so every answer can be checked against the document.

  • Python / FastAPI
  • Qdrant / Neo4j
  • Ollama
  • Next.js / TypeScript
Read the Study Brain case study →

Inside the system

  1. PDF → worker

    Queued job · extraction · page-aware chunks

  2. Index → retrieve

    Qdrant vectors · source text and pages

  3. Tutor → evidence

    Model response · inspectable sources

Demonstrated answer path. The worker also indexes Neo4j; this diagram does not attribute the answer to graph reasoning.

03 / Engineering approach

The useful work is in the decisions.

A

Model the rules.

Authorization, stock, capacity and history deserve explicit models. The backend should protect the rules the interface promises.

See the dispensing boundary →
B

Make actions understandable.

Preview consequential changes. Explain empty and failure states. Let the operator understand a decision before committing it.

See the allocation workflow →
C

Make answers inspectable.

Carry source text and page references through ingestion, retrieval and model output. Verify the evidence against the document it came from.

See the document-to-evidence path →

04 / Further exploration

A wider engineering toolkit.

Interactive language learning

Bulldog: Sverige

A 2D life simulator in Unity 6 for learning Swedish by living an ordinary life in a small Swedish town: exploring, studying, shopping, working and making friends. Designed so Swedish becomes something the player needs, not just studies. In development.

Ask me about it →

05 / Professional context

Close to the domain.
Across the stack.

I build software that real organizations run on every day.

At DemandaNet, I’ve worked on education-management workflows, relational data migrations and product modules since 2021. My independent projects extend that practice into public-sector health services and evidence-grounded document intelligence.

Python and PHP have been part of my work since the start of my career: PHP is the base of the DemandaNet platform, and I also work with Laravel. TypeScript and SQL cover much of the rest, and I choose other tools around the problem, the people using the software and the cost of maintaining it.

Experience & résumé →

Let’s talk about the work

Need help with a backend system, a data integration or an AI tool with source-backed answers?

Tell me what you’re building. I’m looking for backend, full-stack and applied AI roles, in Nordic energy and beyond.

Based in Brazil. Fluent in English, learning Swedish. Available to relocate to Sweden, Denmark or elsewhere in Europe with visa sponsorship, or to work remotely.