Computer Engineering · Universidad Austral

Automations that
survive production.

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 means n8n and Zapier pipelines against HubSpot, Salesforce and Pipedrive at Darwin AI. On my own time it means shipped products, cloud infrastructure and LLM integrations built to degrade gracefully instead of failing loudly.

72.6%Degree completed
1 yr+At Darwin AI
1stHackathon, 2026
Stack

What I work with

AI & Automation

OpenAI APIGPT-4on8nZapierPrompt designWebhooks

Languages

PythonTypeScriptRustJavaKotlinJavaScriptEmbedded C

Web & Frameworks

ReactNestJSFlaskExpressVitePySide6 / QtFletREST APIs

Cloud & DevOps

AzureDockerCI / CDGitHub ActionsGitGradlePyInstaller

Data

PostgreSQLMySQLSQLiteSQLSQLAlchemy 2.0Prisma

Integrations & Auth

HubSpotSalesforcePipedriveOAuth 2.0JWTAuth0SOAP

Security

OWASP Top 10SemgrepGitleaksTrivySARIFCWE mapping

Quality & Practices

TDDBDDSoftware QATest automationSOLIDGoF patternsAgile

Design & Frontend craft

Landing pagesUI designCustom iconographySVGResponsive layoutTypography

IoT & Embedded

ESP32MQTTMosquitto
Work

Selected projects

01
Snippet Searcher · language + microservices platform

Two-part Systems Engineering capstone, team of three. First PrintScript, a programming language written from scratch in Kotlin: streaming lexer, AST parser, interpreter, configurable formatter and a static analyser driven by YAML and JSON rules, built on SOLID and GoF patterns. Then the platform around it, 8 independent services (snippet, execution, static analysis, user, gateway, UI, infra, asset) with Auth0 authentication, deployed on Azure across separate dev and prod VMs. Docker CI/CD wired so touching one service rebuilds that container in place while touching infra rebuilds everything, with branch-based continuous delivery through Gradle.

My role: architecture, Azure VM setup and management, the full CI/CD pipeline and cloud infrastructure lead, alongside hands-on service development across the platform.
KotlinTypeScriptDockerAzureCI/CDGradleAuth0MicroservicesCompilers
02
Sonora · full-stack cloud web app

Collaborative Lab 2 project built with three fifth-year students acting as product owners. React front end, NestJS back end, deployed on Azure. I contributed across the whole stack, front end, back end and database, with primary ownership of cloud infrastructure and deployment.

ReactNestJSAzureDockerTypeScriptPostgreSQL
03
Vexa · desktop & mobile invoicing platform
Shipped · Windows + Android releases

A billing application built solo in Python to replace a legacy Microsoft Access system that had outlived its usefulness. Migration off Access is a one-time startup step, read straight from the .mdb with access_parser, so at runtime the app needs neither Access nor any ODBC driver. Structured as a monorepo around a UI-agnostic core (SQLAlchemy 2.0 over SQLite in WAL mode) shared by two clients: a PySide6 desktop app and a Flet Android app. One domain layer, two very different front ends, no duplicated business rules.

The hard part was compliance, not the UI: Argentine electronic invoicing through ARCA (ex AFIP) means SOAP against WSAA and WSFEv1, with CMS digital signing of the auth ticket, token lifecycle handling, the RG 4291 QR code stamped into the PDF, and retries that must never double-issue an invoice. The fiscal layer is pluggable, so with nothing configured documents still come out as non-fiscal and the rest of the app does not care.

Shipped for real: signed Android APKs per ABI and a Windows installer via PyInstaller and Inno Setup, with a stable release key so updates install over the previous version without wiping user data. Correctness is held down by BDD where the Gherkin scenarios are the business rules themselves, so a rule that changes has exactly one obvious place to change, plus Appium visual end-to-end runs against the APK on an emulator.

PythonSQLAlchemy 2.0PySide6 / Qt6FletSQLite WALSOAP / zeepCMS signingReportLabpytest-bddAppiumPyInstallerMonorepo
04
Scout · World Cup 2026 match classifier
Hackathon winner

The 72 group-stage matches do not fit in anyone's calendar. Scout sorts them per user into unmissable, worth it, and just watch the highlights, and justifies every call. The obvious move was to let an LLM recommend. I rejected it: not explainable, not reproducible, does not learn. Instead the engine is an explainable Bayesian model running client-side. Eight normalised features per match, each weight a normal distribution, so the score carries its own uncertainty: a high but unconfident score never reaches unmissable, while a mid score whose optimistic bound clears the cut gets promoted, upper-confidence-bound style. Every thumbs up or down updates the posterior through a diagonal Kalman filter with credit assignment, so a complaint about kickoff time does not punish the features about football.

Where the LLM sits, and its blast radius: GPT-4o does exactly two things, neither of them deciding. It turns one sentence of natural language into a structured prior the client validates against the dataset, and it writes up a justification the model already computed. If the server or the OpenAI API is down the LLM path disappears, the questionnaire takes over, and the app still classifies and justifies all 72 matches. The LLM improves the experience, it is never a single point of failure.

Verified rather than assumed: a test suite that pins the maths down, the features, timezone conversion, classification thresholds and credit assignment, plus a live accuracy metric in the UI measured against cold-start priors so the model cannot grade itself on what it already learned.

TypeScriptReactViteGPT-4oBayesian inferenceKalman filterExpressPrismaGoogle Calendar APIVitest
05
Wasp · OWASP security auditor
In progress · Rust

Handing a whole repository to an LLM is expensive and noisy. Wasp inverts the flow: deterministic tools find candidates, the model only spends tokens confirming and explaining the high-value ones. A Rust CLI walks the repo respecting .gitignore, orchestrates proven OSS scanners (Semgrep, Gitleaks, Trivy), then normalises and compresses everything into a compact JSON. A companion Claude Code skill does the triage: it reads only the flagged fragments, discards false positives, maps findings to OWASP and CWE, assigns severity and proposes remediation.

Built to survive a real environment: it degrades gracefully, running whatever scanners are installed and reporting what is missing through wasp doctor. An incremental cache fingerprints every file and re-scans only what changed, which took a large monorepo from about 142 seconds down to 6. CI mode emits SARIF and exits 2 above a severity threshold, so it can block a pipeline. Developed under strict TDD, with tests that parse fixture output and therefore need none of the scanners installed.
RustOWASP Top 10SemgrepGitleaksTrivySARIFClaude Code skillTDDGitHub Actions
06
AI & agent benchmarking platform
Capstone 2026 · in progress

Year-long final-year capstone delivered for a real client: a web platform that benchmarks AI models and agents across different harnesses and tool sets, so results are comparable instead of anecdotal. The interesting problems are the ones a leaderboard never shows, namely fair harness parity, run isolation, cost and latency accounting, and making a stochastic result reproducible enough to defend.

LLM APIsEvaluation harnessesAgentsBenchmarkingWeb platform
Experience

Where I work

Darwin AI
Support & Integrations Engineer
Intern · Jul 2025 to Dec 2025 Part-time · Dec 2025 to present

Darwin AI is an AI-powered sales automation platform that plugs into clients' CRMs to qualify leads and run follow-ups. I am the technical bridge between the product and its customers: I design the automation workflows, own the CRM integrations, fix what breaks in production, and lead technical onboarding from kick-off to go-live.

Workflow automationEnd-to-end flows in n8n and Zapier: webhooks, conditional branching, data transformations and multi-step pipelines.
LLM in the loopLLM nodes inside production n8n flows for lead classification and information extraction, with output validation.
CRM integrationsHubSpot, Salesforce and Pipedrive: field mapping, OAuth 2.0 and API-key auth, bidirectional data consistency.
Production triageDiagnose integration failures, broken flows and API errors. Fast triage first, permanent root-cause fix second.
n8nZapierHubSpotSalesforcePipedriveWebhooksREST APIsOAuth 2.0LLM APIs
Freelance

Landings and web apps, end to end

Alongside my job I take freelance work: landing pages and web applications from blank page to deployed, by one person. Two things I do differently. I do not send a single design and then defend it, I put up several proposals so you decide looking at real options instead of a description. And the visual language gets built for the project rather than pulled off a shelf: icons drawn for the brand, type chosen on purpose, none of the default fonts and stock illustration that make a page instantly readable as machine-generated.

01
Several proposals, not one You compare real directions side by side and pick. No approving a layout you have only heard described.
02
Custom icons and type Iconography drawn for your project and typography chosen for it, deliberately away from the default AI look.
03
One person, whole build Design, front end, back end when it needs one, responsive behaviour, performance and deploy. One person accountable for all of it.
Landing pagesWeb appsReactCustom iconsSVGResponsiveDeploy
Background

Education

2023 to present
Bachelor's in Computer Engineering
Universidad Austral · Buenos Aires
72.6% completed, 45 subjects passed. Coursework in software development, systems architecture, embedded systems, algorithms and networking, with a heavy applied-project focus.
2026
Laboratorio III · Final capstone
Universidad Austral
Year-long project for a real client: a web platform to benchmark AI models and agents across different harnesses and tools.
2026
Aseguramiento de la Calidad del Software
Universidad Austral
Software quality assurance: test-driven development, behaviour-driven development, test design and automation strategy. TDD is the practice I took out of this course and into everything I build now, Wasp and Vexa included.
2025
Ingeniería de Sistemas · Systems Engineering
Universidad Austral
Built PrintScript, a custom language in Kotlin with lexer, AST, interpreter, formatter and static analyser, then architected Snippet Searcher, an 8-service microservices platform on Azure with full Docker CI/CD. Led cloud infrastructure and pipelines.
2025
Laboratorio II · Full-stack & cloud
Universidad Austral
Built Sonora with fifth-year product owners: React front end, NestJS back end, Azure deployment. Responsible for front end, back end and cloud infrastructure.
2025
Diseño de Sistemas · Systems Design
Universidad Austral
Applied GoF patterns (Strategy, Adapter, Observer) in Java to build a chess and checkers engine with full move validation and a Swing GUI, tested with JUnit.
2024 to 2025
Laboratorio I · Web development & IoT
Universidad Austral
Built Ubica2, a Flask and PostgreSQL parking system, and Portatic, an ESP32 and MQTT access-control system with a Flask back end and JWT authentication.
Spanish Native
English Intermediate, B2. Written and spoken, technical work daily.
Contact

Let's build something

Open to roles and freelance work

Looking for roles in automation, AI integration engineering, full-stack and cloud. Also available freelance, for landing pages and web apps end to end. Based in Buenos Aires, happy to work remote.

© 2026 Juan Manuel Decoud Buenos Aires, Argentina · decoudjuanmanuel1@gmail.com