Juani Sarmiento

AI Automation Engineer · Mendoza, Argentina

Available for interviews · Full-time from Jan 2027

About

I started programming in 2022, self-taught, and earned my University Technician degree in Programming at UTN (2026). Today I am a technical tutor in UTN's distance-learning Programming degree and a co-founder of Blend Software, where I own the backend. I focus on AI applied to automation: agents, MCP servers, evals, and systems running in production.

I am looking for a remote role in LatAm, open to part-time freelance work in the meantime. My English is basic (A2): I read technical documentation without trouble, and I am not yet fluent in conversation.

Experience

  1. Feb 2026 to present

    Technical tutor, Distance-learning Programming degree (TUPAD), UTN

    Programming 1 (Python) and Programming 4 (FastAPI and Spring Boot), 4 class sections. Built Skill-Moodle, used by the tutoring team.

  2. Nov 2025 to present

    Co-founder and backend developer, Blend Software

    BlendPOS, a point-of-sale system in production with one client (a retail store).

  3. Apr to Jun 2024

    Pre-university Programming tutor, UTN

    Supporting incoming students.

How I work

I drive the architecture and delegate implementation to AI agents. To make that reliable, every change goes through a fixed cycle and through reviews against criteria written in advance, not through my impression when reading the code.

OPSX cycle
Every change goes through explore, propose, apply, verify and archive. The state of each change is tracked by a CLI (OpenSpec), not by the agent's memory.
Role reviewers
QA, backend, frontend, DBA, DevOps, architect and functional analyst, each with an observable definition of done. For the DBA, for example: every migration has a rollback tested against a copy of real data. I convene only the roles the change touches, and any role left out is recorded with its reason.
Adversarial review
After checking that what was built matches the spec, independent passes look for what nobody wrote down: the logic under boundary inputs, code left with no caller, and comments that stopped being true.
Typed reporting
Every claim an agent makes is labeled as evidence (command, output and time), judgment (who says it, what they compared it against and with what confidence) or assumption (what was taken for granted without checking). An auditor reads those reports and flags what does not hold up.
Strict TDD
During implementation there is no production code without a test that was seen failing first.
Human gates
The agent's autonomy depends on the domain it touches. In authentication, payments, security and audit logs, no code is written without my explicit approval, and pushing to the main branch always asks first.

Project log

What I built, in order, leading up to Jarvis.

  1. Entry 01Nov 2025

    BlendPOS

    in production

    An offline-first point-of-sale system with Argentine electronic invoicing (AFIP/ARCA) and inventory management.

    A store needs to keep selling when the internet goes down, and to invoice in line with Argentina's tax authority. Sales are recorded locally and synced later. It is in production at a retail store today.

    I co-founded Blend Software with two partners and own the backend.

    • Go
    • Gin
    • PostgreSQL
    • Redis
    • Docker
    • React
    • Vite
  2. Entry 02Mar 2026

    AI-Native

    in production

    A multi-university educational platform with a Socratic AI tutor and cryptographically signed cognitive traceability.

    When a student learns with AI, the teacher can't see whether the AI thought for the student or helped them think. The platform records and classifies that interaction.

    The platform is organized as 12 Python microservices (tutor, classifier, evaluation, student code execution and integrity attestation, among others) and four TypeScript frontends: admin, landing, student and teacher.

    I was the lead technical implementer of the platform, built for a university research project, and I co-authored the two related papers.

    • Python 3.12
    • uv workspace
    • TypeScript
    • pnpm + turbo
    • Playwright
    • Biome
  3. Entry 03Jun 2026

    Skill-Moodle / moodle-copiloto

    active

    An AI agent with its own MCP server that operates the degree's Moodle campus through the official REST API. One product, two deployment modes.

    A tutor with several class sections loses hours checking what's left to grade, building reports and entering grades by hand. I built all of it for the degree's tutoring team, about 25 people: it lists pending grading, generates progress reports, reads the gradebook, grades against a rubric with human validation, answers forums and enters grades.

    Writes, such as entering a grade, require confirmation, and that check is enforced by the harness, not the prompt. When it can't determine something, it says so instead of guessing.

    Local (Skill-Moodle)
    A Claude Code skill that runs on each tutor's computer, with a local panel and a chat to the same agent. This is the mode the team uses. MIT license.
    Web (moodle-copiloto)
    A multi-tenant app on a VPS, with FastAPI, the Claude Agent SDK and its own MCP server.
    • Python
    • MCP
    • Moodle REST API
    • FastAPI
    • React
    • Claude Agent SDK
  4. Entry 04Aug 2026
    branded-pdf-skillfinishedA Claude Skill that turns Markdown into a branded PDF using headless Chrome.

    Cover, table of contents and syntax-highlighted code. Sole author.

    • Python
  5. Entry 05Sep 2026

    Skill-Tutorial-Video

    finished

    A Claude Code skill that produces video tutorials without a video editor: it records the screen, drives the agent or VS Code, cuts by segment, narrates with TTS and delivers .mp4 files with subtitles.

    The picture is measured against the voice. For each script segment, the audio is generated and measured first; then the video segment is stretched or sped up to match. No dead air, nothing to sync by hand. It includes an OCR privacy sweep over the frames.

    I used it to produce two series of video tutorials; the latest replaces a virtual class for a UTN course. Sole author, Apache-2.0 license.

    • Python
    • ffmpeg
    • Whisper
    • tesseract
    • Fish Audio
    • ElevenLabs
    • Piper
  6. Entry 06Sep 2026

    Misresumenes

    active, developed daily

    A platform of interactive university study notes, with an AI chat anchored to each note.

    A generic AI chat answers about anything, including what's not in the notes. Here the chat answers about the summary the student has in front of them. The catalog already holds 258 notes. Sole author: product, architecture, code and curation.

    No RAG
    The chat's context is the full summary. One topic fits in the context window, which makes "I don't know" verifiable. With RAG, an "I don't know" can be a retriever failure in disguise.
    • Next.js
    • React
    • TypeScript
    • MDX
    • KaTeX
    • Vitest
    • OpenRouter
  7. Entry 07
    Other public repospublicSkill-Apunte-Interactivo, agent-hq and project-scaffold.
    Skill-Apunte-Interactivo
    Turns notes, scanned PDFs or whiteboard photos into an interactive HTML page with a summary, self-graded activities and a final exam.
    agent-hq
    Coordination of 14 specialized agents through an MCP server, in Go (March 2026).
    project-scaffold
    Fork of a Gentleman Programming skill that generates project documentation for SDD/OPSX workflows.

Publications

Both derive from AI-Native. Citable result: κ = 0.68 on 95 gray-zone episodes blind-coded by an independent tutor; without the 7-rule tree, it drops to 0.14.

Entry 08

Jarvis

in production

An AI agent running 24/7 on my own server, operated over WhatsApp, working as a proactive personal assistant with memory and instrumented observability.

Chat assistants wait for you to talk to them. I wanted one that takes the initiative: plans the day, remembers pending tasks and gives timely heads-ups, on the channel I already use all day. It has been running since late May 2026.

Sole author and operator: design, code, deployment and operations.

  • Node.js 22 (ESM)
  • Claude Agent SDK
  • Baileys
  • Playwright MCP
  • Whisper (Groq)
  • TTS
  • PM2
  • Arize Phoenix

Architecture

Comes in through

  • WhatsApp, via Baileys
  • Voice notes, transcribed with Whisper
  • Local HTTP control channel: health checks and web panel
  • Scheduled jobs: morning brief, nightly memory consolidation, proactive check with a daily cap on messages

One Node process under PM2

  • Connection and message routing
  • Agent SDK wrapper: retries and dynamic system prompt
  • Memory
  • Anti-ban: Gaussian jitter, "typing..." proportional to length, per-minute limit, exponential backoff
  • Outbox that survives restarts

Talks to

  • Claude models via the Agent SDK, in three brains: fast, heavy and isolated instances
  • Playwright MCP for browsing
  • Arize Phoenix on localhost: one OTLP span per call
  • WhatsApp on the way back, as text or audio

Outside the process, a cron job checks the control channel every 5 minutes and restarts it after three consecutive failures. It covers the hung event loop that PM2 still sees as "alive".

With one environment variable, Jarvis starts without WhatsApp and keeps answering through the web panel, same thread and same memory. WhatsApp is a transport, not the product.

Observability and evals

Every model call emits an OTLP span to Arize Phoenix, self-hosted on the same server and listening on localhost only. Telemetry never breaks or slows the bot, and the system prompt is not traced. The traces are the first step of the evals plan: error analysis on real conversations read by hand, with no prior taxonomy, then a reference dataset and quality gates.

Ask Jarvis anything about me

It is the same system you just read about, running in an isolated instance with no access to anything private. It answers from the same public knowledge base this page is built from.

Message Jarvis on WhatsApp

Jarvis is an AI agent. When it doesn't know something, it says so and gives you my email.

Prefer email? juanisarmientoomartinez@gmail.com

Or scan the QR code with your phone.