Linux
Pablo Vásquez
Wed Sep 30 09:05 AM

Career_Growth - 2025_ApparelLinks.md

FILES
Experiencia
Formación

# Desarrollador de Software e IA

#full-stack #mlops #devops #on-premise

## Apparel Links S.A., Guatemala (Ene. 2025 – Actualidad)

Empresa del sector textil/apparel con operaciones en Guatemala y clientes internacionales (Corea, EEUU). Trabajo en el área de tecnología desarrollando sistemas internos, infraestructura de IA y automatización de procesos industriales.

### FilesToData — Sistema de extracción de PDFs de producción

  • Diseñé y desarrollé de cero un sistema enterprise que automatiza el ingreso de órdenes de producción desde PDFs (español, inglés, coreano) hacia el ERP.
  • Stack: Blazor Server (.NET 10) + FastAPI (Python 3.11) + Azure Document Intelligence + MongoDB + Azure SQL. Arquitectura Clean en el backend Python.
  • Deploy en servidor físico Ubuntu con Docker Compose, Nginx como reverse proxy y Cloudflare Tunnel para HTTPS sin abrir puertos.

### Servidor LLM On-Premise — Qwen3-27B-FP8

  • Monté desde cero un servidor de inferencia privado con sglang sobre hardware dedicado: Intel Xeon W7-3455, dual NVIDIA RTX Pro 6000 Blackwell, 256GB RAM.
  • El modelo Qwen3-27B-FP8 corre con tensor parallelism en las dos GPUs. Interfaz OpenAI-compatible para integración transparente en apps existentes.
  • Backend propio de autenticación con sistema de API keys por consumidor. Lo usan: FilesToData, apps internas web y móvil, y el equipo de devs vía OpenCode.

### Infraestructura y DevOps

  • Administración de servidores Linux en producción, CI/CD, gestión de contenedores con Portainer CE.
  • Configuración de entornos de desarrollo asistido por IA para el equipo usando OpenCode con perfiles custom que apuntan al servidor LLM interno.

# Soporte Técnico y Desarrollo Web

#experience #it-support #web

## Transcafe S.A., Guatemala (Jul. 2023 – Nov. 2023)

Empresa del sector de café en Guatemala. Primer trabajo formal en tecnología, combinando soporte técnico con desarrollo web durante mi formación en Kinal.

  • Soporte IT: Mantenimiento, configuración y diagnóstico de equipos y redes. Punto de contacto para incidencias técnicas del personal.
  • Administración de sistemas: Monitoreo básico de servidores y gestión de disponibilidad de servicios internos.
  • Desarrollo web: Mejoras y mantenimiento del sitio web corporativo. Primera experiencia real trabajando con código en un entorno de producción.

# Universidad del Valle de Guatemala

#cs #beca

## Ingeniería en Ciencias de la Computación y TI (2024 – 2028)

Carrera de ingeniería en una de las universidades más exigentes de Centroamérica. Cursando tercer año mientras trabajo full-time en Apparel Links.

### Beca por mérito académico

  • Becario del Programa de Becas Universitarias de la Fundación Juan Bautista Gutiérrez, otorgada por rendimiento académico sobresaliente y liderazgo estudiantil.

### Hackatón Copernicus 2025 — 1er Lugar

  • Primer lugar nacional en la Hackatón organizada por SENACYT usando datos satelitales del programa espacial europeo Copernicus.
  • Proyecto: WaterWay+ — plataforma de monitoreo del Río Motagua con datos Sentinel-2, reportes ciudadanos geolocalizados y análisis con OpenAI. Construido en 48 horas.

# Centro Educativo Técnico Laboral Kinal

#técnico

## Perito en Computación (2021 – 2023)

Formación técnica de tres años donde construí las bases sólidas que luego apliqué en mi carrera profesional. Kinal es uno de los centros técnicos de referencia en Guatemala.

  • Fundamentos de programación: Lógica, algoritmos, estructuras de datos y primeros proyectos en lenguajes como Java y C.
  • Bases de datos: Diseño relacional, SQL, MySQL — base de lo que hoy aplico en proyectos como ChemiQ y FilesToData.
  • Redes y sistemas: Configuración de redes, administración básica de sistemas operativos y servidores. Punto de partida para el trabajo actual en infraestructura Linux.
  • Acá también conseguí mi primer trabajo (Transcafe) y empecé a construir portafolio mientras estudiaba.

VS Code — Proyectos

Projects filestodata
PROYECTOS

FilesToData

Empresa · En Producción

FilesToData

Pipeline enterprise para extracción de datos desde PDFs industriales

Sistema interno que automatiza el ingreso manual de órdenes de producción en Apparel Links. Los PDFs llegan en español, inglés y coreano. Blazor Server + FastAPI + Azure Document Intelligence + LLM local. Todo dockerizado en servidor físico Ubuntu.

🔒 Repositorio privado
Infra On-premise Ubuntu 24.04
Containers 4 servicios Docker Compose
OCR Azure DI + Ollama local

Contexto

Apparel Links recibía órdenes de producción en PDF de clientes en Corea, EEUU y Centroamérica. Ingresarlas al ERP a mano tomaba horas. Construí un pipeline que lee el PDF, extrae los campos con Azure Document Intelligence, los mapea al schema del ERP y los envía directo a Azure SQL. El frontend en Blazor Server permite revisar y corregir antes de confirmar.

OCR multi-idioma con Azure Document Intelligence

Extracción de tablas y campos desde PDFs en español, inglés y coreano. El campo mapping por buyer se configura por plantilla — cada cliente tiene su propio formato de work order.

Orquestación Docker Compose con healthchecks

Blazor (.NET 10) + FastAPI (Python 3.11) + Nginx en red Docker interna. El nginx no arranca hasta que backend y frontend pasen healthcheck. Sin esto, el reverse proxy apuntaba a contenedores que aún cargaban.

LLM local para Q&A de documentos

Endpoint de preguntas sobre documentos extraídos. Claude API para calidad, Ollama + Qwen3 para queries que no deben salir de la red interna. La decisión de qué modelo usar depende del tipo de datos del documento.

Infra on-premise + Cloudflare Tunnel

Ubuntu 24.04 en servidor físico de la empresa. Sin puertos abiertos al exterior: Cloudflare Tunnel maneja SSL y exposición. Portainer CE para gestión de contenedores sin necesidad de SSH en producción.

Learnings.md

Lo que este proyecto me enseñó

Las decisiones técnicas que haría diferente, lo que funcionó mejor de lo esperado, y lo que no aparece en los tutoriales.

01

Azure DI es preciso pero el field mapping por buyer es el trabajo real. El modelo OCR es solo 20% del problema; el otro 80% es entender qué campo va a qué columna del ERP.

02

Cloudflare Tunnel es la forma más limpia de exponer servicios on-premise: SSL termination en el edge, HTTP limpio internamente, sin VPN ni puertos abiertos.

03

En producción real, los healthchecks en Docker Compose no son opcionales. Sin ellos el nginx arranca antes que el backend y los primeros requests fallan.

LLM Infrastructure

Infraestructura · Apparel Links

AI Inference Server

Servidor de inferencia LLM privado con sglang, autenticación y multi-tenant

Despliegue desde cero de un servidor de inferencia privado con Qwen3-27B-FP8 en hardware de alto rendimiento (dual RTX Pro 6000 Blackwell, Xeon W7-3455, 256GB RAM). Lo consumen FilesToData, apps internas web y móvil, y los devs del equipo para coding asistido con OpenCode.

🔒 Infraestructura interna
Modelo Qwen3-27B FP8 quant
GPU 2× RTX Pro 6000 Blackwell
RAM 256 GB Xeon W7-3455

Contexto

El equipo necesitaba un LLM privado: los datos de producción no podían salir a APIs externas. Monté sglang sobre una estación con doble RTX Pro 6000 Blackwell y Xeon W7-3455. El modelo Qwen3-27B-FP8 se persiste en volumen Docker para evitar re-descargas. Encima del servidor de inferencia construí un backend con sistema de API keys para que el acceso no fuera abierto dentro de la red.

sglang como engine de inferencia

sglang sobre dual RTX Pro 6000 Blackwell (NVIDIA Blackwell, ~96GB VRAM total). FP8 quantization del Qwen3-27B permite correr el modelo completo con latencias bajas. Interfaz OpenAI-compatible para que las apps existentes apunten al servidor sin cambiar código.

Docker con modelo persistente

Imagen Docker custom con sglang + backend de autenticación. El modelo se monta desde un volumen persistente en disco — sin esto cada reinicio del contenedor re-descarga 27B de pesos. El compose levanta inference + auth como servicios separados.

Sistema de API keys + backend propio

Backend Python que actúa como proxy autenticado al servidor sglang. Cada consumidor (FilesToData, apps móvil, devs) tiene su propia key. Sin key válida, el request no llega al modelo. Logs de uso por key para trazabilidad.

Integración con OpenCode para devs

JSONs de configuración personalizados para OpenCode que apuntan al endpoint interno. Los devs solo importan el perfil y OpenCode usa el Qwen3 interno como backend — sin cuentas externas, sin costo por token, sin datos saliendo de la red.

Learnings.md

Lo que este proyecto me enseñó

Las decisiones técnicas que haría diferente, lo que funcionó mejor de lo esperado, y lo que no aparece en los tutoriales.

01

sglang necesita configuración específica por GPU para aprovechar tensor parallelism en multi-GPU. Sin ese tuning, usaba una sola GPU aunque hubiera dos.

02

FP8 vs FP16 en Qwen3-27B: calidad casi idéntica en tareas de coding y análisis de documentos, con ~40% menos uso de VRAM. La precisión reducida no se nota en la práctica.

03

Un proxy de autenticación propio da control total sobre quién usa el modelo y cuánto. Esencial cuando el hardware es compartido y los recursos son limitados.

WaterWay+

Hackathon · 1er Lugar SENACYT

WaterWay+

Plataforma de monitoreo ambiental del Río Motagua con datos satelitales e IA

Ganamos el primer lugar del Hackathon Copernicus 2025 organizado por SENACYT. En 48 horas construimos una plataforma completa para monitoreo del Río Motagua: mapa interactivo con React Leaflet, reportes ciudadanos geolocalizados, análisis con OpenAI, dashboard de métricas y coordinación de eventos de limpieza.

Repositorio
Premio 1er Lugar SENACYT 2025
Río Motagua Guatemala
Satélite Sentinel-2 Copernicus ESA

Contexto

La Hackatón pedía usar datos de Copernicus sobre el medioambiente. La mayoría de equipos mostró mapas estáticos. Nosotros construimos una SPA completa: autenticación, reportes ciudadanos con geolocalización directa en el mapa, feed de publicaciones, coordinador de eventos de voluntariado, dashboard con métricas y un módulo de IA para análisis de contaminación del Motagua.

Mapa interactivo con React Leaflet

El usuario hace click directamente en el mapa para registrar un punto de contaminación. React Leaflet con capas de OpenStreetMap, marcadores dinámicos por tipo de incidente y clustering para zonas de alta densidad de reportes.

Sistema de reportes ciudadanos

CRUD completo de reportes de contaminación: formulario geolocalizdo con React Hook Form + Zod para validación, Axios para comunicación con el backend, y Sonner para feedback inmediato sin interrumpir el flujo del usuario.

Módulo de IA para análisis del Motagua

Página dedicada (`MapaIA.jsx`) que cruza los reportes ciudadanos con datos satelitales de Copernicus y análisis de OpenAI para identificar patrones de contaminación y generar alertas automáticas.

Dashboard de impacto ambiental

Métricas de incidentes reportados, tasa de resolución y participación comunitaria visualizadas con react-chartjs-2. Sistema de roles y autenticación con AuthProvider propio en TypeScript.

Learnings.md

Lo que este proyecto me enseñó

Las decisiones técnicas que haría diferente, lo que funcionó mejor de lo esperado, y lo que no aparece en los tutoriales.

01

shadcn/ui es una decisión que se amortiza muy rápido en hackathones: los componentes son tuyos, no una dependencia, y Tailwind los hace adaptables al diseño en minutos.

02

La separación de servicios por dominio (reportes, eventos, usuarios) evitó que el código se convirtiera en un caos cuando tres personas tocaban el mismo archivo a la vez.

03

React Leaflet necesita workarounds para SSR y para importar los íconos correctamente con Vite. Lo aprendimos a las 2am del hackathon cuando el mapa dejó de mostrar los marcadores.

ChemiQ

Producción · UVG

ChemiQ

Portal web para la Asociación de Química UVG

Portal en producción real para la Asociación de Química de la Universidad del Valle. Mi rol fue diseñar el backend y la base de datos pensando en que quien lo va a mantener son estudiantes de química, no desarrolladores de software.

🔒 Repositorio privado
DB PostgreSQL via Supabase
Usuarios UVG Asociación Química

Contexto

El requerimiento real no era "hacer un portal bonito" sino hacer algo que los próximos estudiantes que tomen el proyecto puedan mantener sin pedirle ayuda a nadie. Diseñé el schema con migrations versionadas, la API con separación de capas explícita, y documenté cada decisión técnica en el código.

Schema pensado para continuidad

Migrations versionadas con Knex para que cualquier cambio de schema sea reversible y auditable. Supabase como host pero sin vendor lock-in: las queries son SQL puro, no llaman a funciones propietarias de Supabase.

API REST con capas explícitas

Controllers → Services → Repository. Si alguien necesita migrar de Supabase a RDS en el futuro, solo toca la capa de repositorio. Eso era el requerimiento real del cliente.

Streaming de pódcast integrado

Los episodios viven en UploadThing CDN. El backend gestiona metadatos y URLs, no binarios. Aprendido de una experiencia anterior donde guardar archivos en la DB era un desastre de performance.

Learnings.md

Lo que este proyecto me enseñó

Las decisiones técnicas que haría diferente, lo que funcionó mejor de lo esperado, y lo que no aparece en los tutoriales.

01

Supabase + Knex es una combinación sorprendentemente efectiva: la velocidad de setup de Supabase con el control total de schema que da Knex migrations.

02

Para proyectos de larga vida, la mantenibilidad es el feature más importante. Un nuevo dev que entiende el código en 20 minutos es más valioso que una arquitectura perfecta.

03

Documentar las decisiones de diseño directamente en el código (no en un wiki externo) es lo único que sobrevive el paso del tiempo en proyectos estudiantiles.

SeaSOS

Académico · UVG

SeaSOS

Landing interactiva sobre ecosistemas marinos con mapa de fauna y heatmap

Proyecto universitario: landing page educativa sobre ecosistemas marinos construida con React + Vite, desplegada en Firebase Hosting. Mapa interactivo con React Leaflet para ubicar fauna marina, heatmap de zonas críticas y visualizaciones con Google Charts.

Repositorio
Deploy Firebase Hosting CDN
Mapa Leaflet React Leaflet

Contexto

Landing educativa sobre el impacto humano en ecosistemas marinos. El enfoque fue hacer los datos fáciles de leer para cualquier usuario: un mapa con marcadores de animales marinos por región, un heatmap de zonas de alto impacto y gráficos de tendencias con Google Charts. Desplegada en Firebase Hosting.

Mapa interactivo con fauna marina

React Leaflet con marcadores custom por especie (`Animal.jsx`, `Marker.jsx`). Cada marcador muestra información de la especie y su estado de conservación al hacer click.

Heatmap de zonas críticas

Componente HeatMap propio sobre el mapa base para visualizar concentración de amenazas por región geográfica usando datos mockeados en `regions.js`.

Visualizaciones con Google Charts

Gráficos de tendencias de impacto ambiental con react-google-charts. Tailwind CSS + MDB React UI Kit para el sistema de diseño consistente en toda la landing.

Learnings.md

Lo que este proyecto me enseñó

Las decisiones técnicas que haría diferente, lo que funcionó mejor de lo esperado, y lo que no aparece en los tutoriales.

01

Mezclar Tailwind con React Bootstrap y MDB crea conflictos de especificidad CSS constantes. En proyectos futuros elijo uno y lo uso consistentemente.

02

Firebase Hosting es la forma más rápida de desplegar una SPA de React: un `firebase deploy` y está en CDN global.

03

Los datos mockeados en `regions.js` sirvieron para el MVP, pero queda claro que sin una API real el proyecto no escala más allá de la demo.

DETALLES

Año 2025 - 2026
Rol Full Stack Developer & DevOps
Estado En Producción
Stack
  • Blazor
  • .NET 10
  • FastAPI
  • Python
  • Azure Document Intelligence
  • MongoDB
  • Azure SQL
  • Docker
  • Nginx
  • Cloudflare
Links
🔒 Repositorio privado

DETALLES

Año 2025 - 2026
Rol MLOps / AI Infrastructure Engineer
Estado En Producción
Stack
  • sglang
  • Docker
  • Qwen3-27B-FP8
  • Python
  • Linux
  • NVIDIA CUDA
  • OpenCode
Links
🔒 Infraestructura interna

DETALLES

Año 2025
Rol Full Stack Developer
Estado 1er Lugar SENACYT
Stack
  • React
  • TypeScript
  • Vite
  • React Leaflet
  • Tailwind CSS
  • Radix UI
  • Zod
  • React Hook Form
  • Node.js
  • MongoDB
  • OpenAI
  • Copernicus API
Links
Repositorio

DETALLES

Año 2024 - 2025
Rol Backend & Database Engineer
Estado En Producción
Stack
  • React
  • Node.js
  • PostgreSQL
  • Express
  • Supabase
  • Knex
Links
🔒 Repositorio privado

DETALLES

Año 2024
Rol Frontend Developer
Estado Completado
Stack
  • React
  • Vite
  • Tailwind CSS
  • React Leaflet
  • React Google Charts
  • React Bootstrap
  • Firebase Hosting
Links
Repositorio

Mi CV

pablo@portfolio:~

pablo@portfolio:~$
Music
Playlist Cover
PLAYLIST

Daily Soundtrack

Una muy pequeña selección de canciones que conforman el soundtrack de mi día a día, ya sea programando, diseñando o haciendo otras cosas.

Pablo Vásquez • 11 canciones

#
TÍTULO
1
Self aware
Self aware Tamper City
2
Mutt
Mutt Leon Thomas
3
From Time
From Time Drake
4
Chicago
Chicago Michael Jackson
5
Hvn on earth
Hvn on earth Lil Tecca
6
Instant crush
Instant crush Daft Punk
7
The color violet
The color violet Tory Lanez
8
Disenchanted
Disenchanted My Chemical Romance
9
Circles
Circles Pierce the Veil
10
Me Quieres Mal
Me Quieres Mal Jesse Baez
11
En el Suelo
En el Suelo Kidd Voodoo
Activity Monitor
Process Name Category User PID Status
React
Frontend pablo 3000
Running
JavaScript
Programming pablo 3080
Running
Node.js
Backend pablo 8080
Running
Python
Programming pablo 8000
Running
Docker
DevOps pablo 4521
Running
Astro
Frontend pablo 4321
Running
TypeScript
Programming pablo 3001
Running
Figma
Design pablo 1024
Running
AWS
Cloud pablo 9001
Running
Git
Tooling pablo 1337
Running
C#
Programming pablo 5001
Running
.NET
Backend pablo 5002
Running
Next.js
Frontend pablo 3005
Running
PostgreSQL
Database pablo 5432
Running
Linux
DevOps pablo 0001
Running
MySQL
Database pablo 3306
Running
MongoDB
Database pablo 2701
Running
Supabase
Backend pablo 5433
Running
Select a process to view details

Skill Name

Category
Implementación:

pvasquezs044@gmail.com