I build the unglamorous half of software: the integrations, the fallbacks and the checks that decide whether a workflow still runs at 3 a.m. on a Tuesday.
Day to day that is n8n and Zapier pipelines against HubSpot, Salesforce and Pipedrive at my job. On my own time it is shipped products — a Rust security scanner, a precision-first playlist migrator, a desktop app that replaced a legacy Access system in a real business — built to degrade gracefully instead of failing loudly.
🐧 Claude Pet · JavaScript
A desktop pet that knows what Claude Code is doing. Download →
It types while the agent iterates, looks up when it is thinking, and pops a speech bubble when the turn ends — so you stop switching to the terminal to check whether it finished. The expensive case is the other one: an agent stalled on a permission prompt nobody saw, and there the pet takes its hands off the keyboard and says what it is asking for. It learns all of this without reading the transcript, opening a port or making a single network request — Claude Code's hooks drop one JSON file per session and the window watches the directory. The drawing is a module of its own: a penguin and an otter ship with it, anyone can write theirs and pick it from the panel. Packaged for Windows, macOS and Linux.
Electron · Claude Code hooks · zero network · pluggable avatars · cross-platform installers
🎸 Guitar Learning · TypeScript
A guitar class that watches you play and corrects your fretting hand, finger by finger. Live →
It makes no sound — the sound is your guitar. You mark the four corners of the fretboard once, and a four-point homography turns any pixel into a (string, fret) position; the same maths used the other way, as registration against the frame you calibrated in, keeps the grid on the neck as the guitar shifts in your lap. MediaPipe puts the hand on top of that, and the verdict is per finger, never per chord — "wrong" teaches nobody anything, so what shows on screen is one arrow from where a finger is to where it goes. Everything runs in the browser: no backend, one runtime dependency, and a single network request, enforced by CSP rather than promised.
computer vision · homography · MediaPipe · zero backend · Vite + TS
🎵 Migratify · Python
Migrates playlists between Spotify and YouTube Music, in both directions, without adding the wrong song. Site →
The same title exists as a cover, a karaoke track, a live take, a remix and as a completely different song by a completely different artist. Most migrators take the first search result and hand you a playlist that is quietly 15% wrong. Migratify scores candidates on artist, title, duration, album and result type, hard-vetoes wrong-artist and wrong-version matches, and when it still cannot tell two candidates apart it asks instead of guessing. Nothing is written until you run apply.
weighted scoring · hard vetoes · review queue · SQLite cache · bidirectional
🐝 Wasp · Rust
An OWASP Top 10 auditor that walks a repository end to end.
A cheap, deterministic Rust harness sweeps the tree for vulnerable patterns, hardcoded secrets and vulnerable dependencies, then reports as SARIF so it drops straight into a CI annotation pipeline. Incremental mode rescans only the diff.
rust · SAST · SARIF · secrets detection · incremental scanning
🎼 Agent-Orchestra · Python
A coding agent built from scratch — a raw agentic loop, no frameworks.
An orchestrator coordinates specialised sub-agents (explorer, researcher, implementer, tester, reviewer) over an OpenAI-compatible API. Written to find out what an agent framework is actually doing under the abstraction, so everything between the LLM and its tools is visible and editable.
agentic loop · multi-agent · tool calling · no frameworks
🧾 Vexa · Python
A desktop invoicing app that replaced a legacy Microsoft Access system, in production.
Clients, products and documents in PySide6 over SQLite. The Access migration is a one-time bootstrap step — at runtime the app depends on no ODBC driver and no Access install, which is the entire reason the replacement was worth doing.
PySide6 / Qt · SQLite · legacy migration · PyInstaller
🗺️ Track Optimizer · JavaScript
Orders a list of stops into the shortest driving route. Live →
Google Maps routes stops in the order you type them; for a delivery round the order is the whole problem. Nearest-neighbour lands ~20–25% above optimal, so a 2-opt pass uncrosses the path and pulls it to within ~5%. Built on Leaflet, OpenStreetMap, Nominatim and OSRM, so it needs no billing account and runs the moment you clone it — one index.html, no build step.
⚔️ Isometric God of War · JavaScript
A Vampire Survivors-style roguelite in the God of War universe. Play →
Isometric 2.5D, pixel art generated 100% in code. No assets, no dependencies, no build — the entire game is one index.html.
HTML5 Canvas · procedural pixel art · zero dependencies
Also: ai-benchmarks-testing — MMLU across 57 subjects plus agentic evaluation scored by an LLM judge · Mundialaustral — match recommender for the Universidad Austral AI competition
Languages — Python · TypeScript · Rust · Java · Kotlin · JavaScript · Embedded C
AI & Automation — OpenAI API · prompt design · n8n · Zapier · webhooks
Web — React · NestJS · Flask · Express · Vite · PySide6 / Qt
Data — PostgreSQL · MySQL · SQLite · SQLAlchemy 2.0 · Prisma
Cloud & DevOps — Azure · Docker · GitHub Actions · CI/CD · PyInstaller
Integrations & Auth — HubSpot · Salesforce · Pipedrive · OAuth 2.0 · JWT · Auth0 · SOAP
Open to roles and freelance · decoudjuan.github.io



