Software Engineer · Application Security & AI Systems

David
Builds & Breaks

Full-Stack Engineer focused on Application Security. Shipping web systems with security as a design input, not an afterthought.

01 Career

Experience

2025

Tambora

Frontend Developer

Jul 2025 - Sep 2025

Migrated business-critical legacy modules from jQuery to React: 40% bundle-size reduction and shrunk the client-side attack surface by consolidating logic into a modular Atomic Design library. Engineered Azure CI/CD to replace manual SSH deploys, cutting deploy time from 2+ hours to <15 min and enabling automated test gates — foundation for SAST and dependency scanning.

ReactAzureTypeScriptCI/CDSAST-ready

2024

EliteStack Bootcamp

Full-Stack Development

Jun 2024 - Jul 2024

Hands-on bootcamp: Linux/CLI, TypeScript, Node.js, Docker, REST APIs, WebSockets, Next.js, AWS. Foundation of how modern production systems fit together.

LinuxTypeScriptDockerAWS

02 About

Who I am

David portrait

I'm a Full-Stack Engineer from Bogotá, Colombia, focused on Application Security and the reliability of modern web systems. I build end-to-end, React and Next.js on the front, Node, TypeScript, and PostgreSQL on the back, with attention on the layer where working code becomes a security risk.

I approach development with a security-first mindset: threat modeling features before they ship, using the OWASP Top 10 as a baseline, and validating systems through offensive testing. I actively train on platforms like TryHackMe and PortSwigger Web Security Academy to understand how real attacks work and how to prevent them.

I'm particularly interested in securing AI-integrated applications as they introduce new attack surfaces beyond traditional web security.

Open to full-time roles, freelance, or interesting side projects. If you have a problem worth solving, let's talk.

Bogotá, Colombia
2024 Building since
AppSec Focus area
EN / ES / DE C1 / Native / B1
Remote LATAM / US / EU hours

03 Credentials

Certification roadmap

Credentials backing the security pivot — completed and in progress, alongside shipped projects.

Completed

Google Professional Cybersecurity Certificate

Google · Coursera

Completed: 2026

Completed

PortSwigger Web Security Academy

PortSwigger

Completed: All free courses

In progress

CompTIA Security+

CompTIA

Target: 2026 Q3

04 Expertise

Skills

Application Security

OWASP Top 10Threat Modeling (STRIDE)OAuth 2.0 / OIDCJWT (EdDSA)RBACSession HardeningArgon2idCSRF / XSS / SQLi defensesSecure Code ReviewSecrets ManagementInput Validation

Offensive & AppSec Tooling

Burp SuiteOWASP ZAPnmapWiresharksqlmapffufNucleiGobusterHydraHashcatMetasploitNiktoSemgrepTrivyKali LinuxHackTheBoxTryHackMePortSwigger Academy

Backend

Node.jsNext.jsExpressREST APIsWebSocketsJestZod

Frontend

ReactNext.jsAstroTailwindCSSFramer MotionThree.js

Databases

PostgreSQLMySQLMongoDBPrismaRedis

DevOps & Cloud

AWSAzureDockerCI/CDDigital OceanLinux hardeningVercel

Languages

TypeScriptJavaScriptPythonCSQLBashHTML/CSS

AI & LLM

Claude APIOpenAISSE StreamingMCP ServersLLM IntegrationPrompt Injection defenseLLM GuardrailsRAGPrompt Engineering

Tooling

GitGitHubPostmanJiraSwaggerLinux

05 Work

Projects

Exploit the Box

Play

Playable, sandboxed web-security CTF

An interactive hacking terminal you can actually play — four boxes reproducing real vulnerability classes, safely simulated in the browser with no network and no eval.

  • Four exploit paths: SQLi auth bypass, IDOR / broken access control, JWT alg=none signature strip, and reflected XSS — each pattern-matched against a fake target.
  • Full terminal UX: command interpreter, command history, typewriter boot, matrix-rain canvas, CRT scanlines, and flag-capture progression.
  • The same attack classes I defend against in my JWT Security Lab and jwt-scan work — offense to prove the defense.
ReactTypeScriptSQLiIDORJWTXSS

authzscan

Autonomous IDOR/BOLA review, driven by Claude agents

An autonomous pentest of authorization logic in Next.js App Router repos: agents trace each client-controlled identifier to the database query it reaches and flag the ownership checks that are missing — the #1 OWASP risk that pattern-matching SAST largely misses.

  • Four-phase pipeline: deterministic endpoint inventory with ts-morph (route handlers, Server Actions, auth-library detection), an agent trace pass, an adversarial verify pass that kills false positives, and Markdown / SARIF / JSON reports with CI-ready exit codes.
  • Measured, not vibes: evaluated on a seeded benchmark of 16 IDOR/BOLA vulnerabilities plus 6 hardened twins as false-positive tripwires, with recall/precision gates and an oracle runner that validates the harness independently of model quality.
  • Degrades loudly, never silently: endpoints that can’t be analyzed are reported as not-analyzed rather than clean, and unverifiable candidates surface as low-confidence instead of being dropped.
TypeScriptClaude agentsts-morphNext.jsIDOR/BOLASARIF

LLM/RAG Security Lab

Offense-and-defense LLM/RAG security lab

Two FastAPI services with the same RAG surface — one intentionally vulnerable, one hardened. Every attack in the suite succeeds against the first and fails against the second, so each fix is demonstrated rather than claimed.

  • Five OWASP LLM Top 10 scenarios as an executable pytest attack suite: cross-tenant retrieval leak (confused deputy), indirect prompt injection via retrieved documents, vector-store poisoning through forged ingest metadata, excessive agency over a real MCP tool server, and stored XSS from model output.
  • RAG pipeline built by hand — embeddings, in-memory vector store, multi-tenant ACL corpus — no LangChain, so the diff between the two apps is exactly the set of security decisions.
  • A deterministic mock LLM makes “every attack fails against the secure API” a reliable CI property; an OpenRouter-backed provider re-checks injection behavior against a real model.
PythonFastAPIRAGPrompt InjectionMCPOWASP LLM Top 10

JWT Security Lab

Offense-and-defense JWT vulnerability lab

Offense-and-defense lab exercising real-world JWT vulnerabilities against a hardened mirror, proving each fix rather than claiming it.

  • From-scratch JWT sign/verify in TypeScript (no libraries) reproducing five production-grade flaws: alg=none bypass, HS256/RS256 key confusion, weak-secret brute-force, kid header injection, and missing iss/aud/exp validation.
  • Reproducible exploit scripts (Bash + OpenSSL) and a harness that proves each payload succeeds against the vulnerable API and is rejected by the secure one.
  • Hardened service eliminates entire bug classes: single-algorithm RS256 allowlist, fixed in-memory kid registry with rotation, generic errors, and scrypt password hashing.
TypeScriptNode.jsDockerJWTOpenSSLBash

PairCode

Secure real-time collaborative workspace

Secure collaborative system with verified identity, hardened authentication, and a purpose-built realtime layer.

  • In-house auth stack: EdDSA JWTs, rotating refresh tokens with reuse detection, Argon2id hashing, CSRF protection.
  • Custom WebSocket server with single-use ticket handshake, per-event authorization, and RBAC enforced server-side.
  • Realtime room layer: presence, typing, shared threaded context, and persistent history that survives reconnects.
Next.jsPostgreSQLEdDSAArgon2idRBACWebSockets

Materiales La Bodega

Solo-built, in-production e-commerce platform

Solo-built, in-production e-commerce platform for a family-owned hardware retailer.

  • Sole engineer end-to-end: requirements, architecture, real-time inventory catalog, deployment, and ongoing maintenance for a live retail storefront.
  • Designed and shipped authentication, session security, and RBAC for staff vs. customer surfaces; integrated Mercado Pago for live online transactions.
  • Hardened the application layer against OWASP Top 10 risks: parameterized queries, server-side input validation, CSRF protection on state-changing endpoints, and least-privilege database roles.
Next.jsPostgreSQLMercado PagoOWASPRBACCSRF

06 Get in touch

Let's build something

Open to Software Engineer and junior AppSec roles — remote, or relocating. If you're hiring for security-minded developers, let's talk.