Portfolio

Real projects. Three product suites.

Real projects come first: what the problem was, what I built, what exists today and what is still planned. Below them, three product suites you can open in your browser.

Real projects

Built for real use.

Personal, client and method work. Client detail is anonymised where it has to be.

Personal project · private network

Hive: a local multi-agent system

A hierarchical multi-agent system that runs on my own hardware. I talk to one master agent; it delegates to group leaders, they delegate to specialists, and the answers come back up the same path.

Problem
I wanted an agent team that runs on my own machine, that I can watch while it works, and that I can call from the tools I already use, instead of a black box billed per call.
What I built
A Go backend (standard library only) orchestrates the agents against a local LLM served by llama.cpp, streams every delegation over HTTP and SSE, and feeds a React and TypeScript dashboard. An MCP server over stdio exposes three tools (ask_master, list_agents, search_vault), so Claude Code or Copilot can call the system. Agent context comes from hybrid retrieval over an Obsidian vault: keyword search combined with embeddings generated by a local server. A job engine only marks a step as done when there is evidence: a written file, a saved note, a command that passed.
Stack
Go · React · TypeScript · HTTP / SSE · MCP (stdio) · llama.cpp · local embeddings · Tailscale
Exists today
Orchestration, live dashboard, MCP server, hybrid vault search, and the job engine, with Go and UI tests. It runs on a private Tailscale network, so there is no public demo.
Limits and roadmap
The local model is slow (agents share one GPU, so a round takes minutes) and can be wrong: answers are treated as drafts, and harder work can be handed to a cloud model. Agents take no external action without human approval.

Client project · anonymous industrial client

Industrial MES / WMS platform

A modular, on-premise manufacturing platform for a plastic-injection manufacturer, designed and built end to end as sole engineer.

3D view of a warehouse sector in the platform, with fictional data.
Problem
Materials, moulds and production were tracked in spreadsheets, labels and memory. Finding stock and knowing what each machine was doing got slower as volume grew.
What I built
Warehouse management with 2D/3D views, audit history and role-based access. A Node.js edge app that reads machine digital inputs and outputs every 300 ms over HTTP and Modbus-TCP, detects cycles, buffers offline in SQLite and resends, with idempotent, sequence-validated ingestion on the backend. Production planning with work orders, per-machine queues, downtime and scrap. For the client: versioned proposals with acceptance criteria and change control, and a documentation site with a plain-language user manual and a full API reference.
Stack
Java · Spring Boot · PostgreSQL · Docker · Node.js · Modbus-TCP · SQLite · React Native / Expo · JWT
Exists today
Warehouse management is delivered and in use. Machine monitoring is a pilot in validation on one machine. 2,400+ automated tests across the edge app, the backend and the UI, written in an AI-assisted workflow with Claude Code and Codex.
Limits and roadmap
Planned, not built yet: scaling from the pilot machine to the full fleet, moving machine communication from HTTP to MQTT, multi-machine planning, and OEE / MTBF / MTTR indicators.

Method · works with any AI tool

PAIRED Engineering and Claude skills

A portable method for AI-assisted software engineering: Problem, Analysis, Implementation, Review, Explain and Document, with decision gates between phases.

Problem
AI coding tools produce code fast, and produce unreviewed, unexplained code just as fast. Without a method, quality depends on how the prompt happened to be written.
What I built
One canonical methodology document, five reusable prompts (problem discovery, technical analysis, implementation, code review, explain and document) that share a single preamble, a fast mode and a production mode, and an adapter that tells Claude how to apply the workflow. Alongside it, custom Claude skills, including an orchestration skill that keeps decisions and acceptance with the lead model and delegates only bounded, verifiable sub-tasks.
Stack
Markdown · Claude Code · Codex · Claude skills
Exists today
The methodology, the five prompts and the Claude adapter, kept in version control with one source of truth. Hive was built in its production mode.
Limits and roadmap
Adapters for other agents are not written yet; the pattern is to mirror the Claude one, not fork the method.

Client site · real-estate broker, Santa Catarina coast

Muriel Imóveis

A full-stack site for a real-estate broker on the Santa Catarina coast: a catalogue of developments served by an API, direct contact, and signed-in areas for the broker and for clients.

Problem
A broker who works with a short, hand-picked list of developments needs one address to present them in his own voice and to receive enquiries directly.
What I built
A single-page app in React and TypeScript on Vite and Tailwind CSS, served by a Cloudflare Worker that also runs the API (Hono) on a D1 database. The catalogue covers Penha, Balneário Piçarras and Massaranduba, with search by name, developer or city and filters by region and stage. Each development has its own page with a photo gallery, floor plans, a map with satellite view and a contact form; WhatsApp links go straight to the broker. The site runs in Portuguese and English, with light and dark themes. Sign-in uses OpenID Connect and opens a client area and a broker area.
Stack
React · TypeScript · Vite · Tailwind CSS · Hono · Cloudflare Workers · D1 · OpenID Connect
Exists today
Published and open to visit: catalogue, development pages, contact form, language and theme switch, and sign-in.
Limits and roadmap
Sign-in depends on an external OpenID Connect provider. There is no automated test suite yet. Listing content depends on data the broker confirms.

Client site · paint retailer, Santa Catarina

Escala Cor Tintas

The institutional site for a paint retailer with three stores.

Problem
Three stores, each with its own contact channel, and customers who need to reach the right one without hunting for a phone number.
What I built
A static site in React and TypeScript on Vite: a store picker that sends each visitor to the right store by WhatsApp or phone, product segments and brands, painting guides, a gallery, light and dark themes, SEO with structured data, and unit tests for routing, SEO, content and contact links. Published as a Cloudflare Worker that serves static assets only.
Stack
React · TypeScript · Vite · Vitest · Cloudflare Workers
Exists today
Published and open to visit.
Limits and roadmap
Content review with the owner is still open for a few sections, which are marked in the code.

Product suites

Three suites, twelve modules.

Each suite groups four modules behind one presentation page. The modules share one engine driven by configuration (entity, fields, KPIs, rules), and that is the point: a new module is a configuration file, not a new codebase. Everything runs in your browser with fictional data, in English, Portuguese and Spanish; the AI panel is simulated by local rules in this static build.

Also online: the Control Tower, a separate system that collects messages, health and DevOps signals from every project, per tenant. Control Tower (opens in a new tab)

Archive, an earlier suite kept online: Diário de Campo (opens in a new tab)