[DISPONIBLE · REMOTO]
Carlos Morales

Carlos Morales

Backend Developer · Recién egresado

El motor
invisible.

Desarrollador Backend recién egresado. Construyo sistemas con arquitecturas reales, microservicios, pipelines de AI, trading algorítmico y análisis de datos. Busco mi primera oportunidad remota.

# Proyectos

Lo que he construido

Cinco sistemas con arquitecturas reales. Microservicios, AI, datos financieros y trading algorítmico.

[ BACKEND / SISTEMAS ]Funcional

Sistema de Venta de Entradas

Alta concurrencia sin doble-venta, garantizada bajo carga real

0%

Doble-venta bajo concurrencia

15

Peticiones concurrentes probadas

10 min

Expiración de reserva

GoPostgreSQLRedisRabbitMQNuxtWebSocketsOpenAPI/SwaggerPodman
[ BACKEND / SISTEMAS ]Funcional

Sistema de Venta de Entradas

Alta concurrencia sin doble-venta, garantizada bajo carga real

0%

Doble-venta bajo concurrencia

15

Peticiones concurrentes probadas

10 min

Expiración de reserva

Problema

Cuando cientos de personas intentan comprar el mismo asiento al mismo tiempo, la mayoría de sistemas ad-hoc terminan vendiendo el mismo boleto dos veces — un bug de concurrencia, no de lógica.

Solución

Go con arquitectura hexagonal y Postgres con locks transaccionales atómicos garantizan que un asiento nunca se vende dos veces, incluso con peticiones concurrentes reales. Redis libera la reserva sola si no se paga en 10 minutos, y RabbitMQ actúa como una sala de espera real — un pool de workers procesa las reservas a un ritmo controlado en vez de dejar que cada petición golpee la base de datos directo.

Arquitectura

Arquitectura hexagonal (puertos y adaptadores) en Go: el dominio no depende de Postgres, Redis, RabbitMQ ni HTTP, todo pasa por interfaces. WebSockets notifican los cambios de asiento en tiempo real al frontend en Nuxt. Todo containerizado con Podman.

Stack
GoPostgreSQLRedisRabbitMQNuxtWebSocketsOpenAPI/SwaggerPodman
[ BACKEND / SISTEMAS ]Funcional

Chrono

Monitor de estado en tiempo real para APIs externas, con detección automática de incidentes

30s

Intervalo de chequeo

1200ms

Umbral de degradación

FastAPIPython asynciohttpxPostgreSQLSQLAlchemyWebSockets+4
[ BACKEND / SISTEMAS ]Funcional

Chrono

Monitor de estado en tiempo real para APIs externas, con detección automática de incidentes

30s

Intervalo de chequeo

1200ms

Umbral de degradación

0

Credenciales de BD en el worker

Problema

Cuando una API externa de la que depende tu producto empieza a fallar o degradarse, normalmente te enteras por quejas de usuarios, no por monitoreo propio — y para cuando lo notas, ya perdiste tiempo valioso de diagnóstico.

Solución

Un worker en asyncio revisa en paralelo el estado de cada servicio monitoreado cada 30 segundos y reporta los resultados al backend por HTTP — nunca toca la base de datos directamente. El backend detecta automáticamente las transiciones de estado (sano → degradado → caído, y de regreso), abre y cierra registros de incidentes con su duración exacta, y transmite cada cambio en vivo a todos los navegadores conectados por WebSocket, sin necesidad de refrescar. Las gráficas de latencia usan downsampling adaptativo en vez de bloques de hora fija, así un servicio recién agregado nunca se queda con una gráfica vacía durante la primera hora.

Arquitectura

Tres procesos independientes que nunca comparten conexión a base de datos: el worker no tiene ninguna credencial de Postgres, solo conoce la URL del backend. FastAPI es el único dueño del esquema, expone tanto la ingesta interna como las consultas públicas (incluyendo badges SVG de estado embebibles por servicio). Vue 3 + Pinia en el frontend, actualizado en tiempo real por WebSocket sin polling. PostgreSQL en contenedor Podman.

Stack
FastAPIPython asynciohttpxPostgreSQLSQLAlchemyWebSocketsVue 3Piniavue-i18nPodman
[ AI / BACKEND ]Funcional

Trenchcoat

Chat de IA 100% local: sin nube, sin telemetría, texto e imágenes en la misma conversación

0

Datos enviados a terceros

2

Modelos orquestados

FastAPISQLModelSQLiteOllamaStable DiffusionVue 3+4
[ AI / BACKEND ]Funcional

Trenchcoat

Chat de IA 100% local: sin nube, sin telemetría, texto e imágenes en la misma conversación

0

Datos enviados a terceros

2

Modelos orquestados

Problema

Los asistentes de IA basados en la nube implican mandar cada conversación a servidores de terceros, pagar por token, y depender de que el servicio siga disponible — sin control real sobre el modelo, el historial, ni la privacidad de lo que se comparte.

Solución

Trenchcoat corre enteramente en la propia máquina: un LLM local vía Ollama para texto y código, y Stable Diffusion (Forge) para imágenes, orquestados automáticamente según la intención de cada mensaje, sin que el usuario tenga que cambiar de modo a mano. Un clasificador de intención decide si un mensaje es texto, una imagen nueva, o una edición de la imagen anterior — con un modelo de respaldo para los casos donde el patrón no alcanza. Las ediciones de imagen tienen un control de intensidad (sutil / normal / agresivo) para balancear fidelidad contra cuánto se le permite cambiar al resultado.

Arquitectura

FastAPI + SQLModel + SQLite (modo WAL) en el backend, con streaming de respuestas por Server-Sent Events en vez de WebSockets — unidireccional, y cancelable con solo abortar la petición HTTP. Vue 3 + TypeScript + Pinia + Tailwind en el frontend, con una consola de código dedicada en escritorio (resaltado con tema Dracula fijo, independiente del tema claro/oscuro de la app) y un layout responsivo para mobile. Los prompts de imagen se traducen a inglés antes de llegar a Stable Diffusion, porque el codificador de texto que usa (CLIP) está entrenado casi enteramente en ese idioma.

Stack
FastAPISQLModelSQLiteOllamaStable DiffusionVue 3TypeScriptPiniaTailwind CSSServer-Sent Events
[ AI / BACKEND ]Funcional

Audit CV

Screening de candidatos con IA: puntuación, cobertura y brechas explicadas

FastAPILangChainDeepSeek APIPostgreSQLSQLAlchemyVue 3+4
[ AI / BACKEND ]Funcional

Audit CV

Screening de candidatos con IA: puntuación, cobertura y brechas explicadas

Problema

Revisar decenas de CVs contra una vacante a mano es lento, inconsistente entre revisores, y no deja rastro claro de por qué se descartó a alguien.

Solución

Un LLM analiza cada CV contra la descripción del puesto y devuelve una puntuación, un porcentaje de cobertura de requisitos y un desglose de habilidades cumplidas y faltantes — con reglas de consistencia forzadas por prompt para que la puntuación y las razones mostradas siempre cuenten la misma historia. Extrae también correo, teléfono y enlaces de contacto directo del PDF por expresión regular.

Arquitectura

FastAPI + LangChain orquestando DeepSeek para el análisis y la traducción, PostgreSQL para persistencia bilingüe (ES/EN generado una sola vez), y Vue 3 + Pinia en el frontend. Stack completo empaquetado en contenedores Podman con Nginx como proxy inverso.

Stack
FastAPILangChainDeepSeek APIPostgreSQLSQLAlchemyVue 3Piniavue-i18nPodmanNginx
[ AI / BACKEND ]Funcional

Helpdesk con RAG

Sistema de asistencia inteligente con recuperación aumentada

FastAPINestJSChromaDBPostgreSQLRedisDeepSeek API+1
[ AI / BACKEND ]Funcional

Helpdesk con RAG

Sistema de asistencia inteligente con recuperación aumentada

Problema

Los chatbots genéricos consumen tokens en exceso respondiendo sin contexto relevante.

Solución

Pipeline RAG con ChromaDB: solo se envía contexto relevante a la AI, reduciendo tokens. Cache Redis para queries repetidas.

Arquitectura

NestJS como capa de seguridad (auth, usuarios, validación de archivos) + FastAPI para el pipeline AI con DeepSeek.

Stack
FastAPINestJSChromaDBPostgreSQLRedisDeepSeek APIPodman
# Stack

Herramientas que manejo

Backend

Node.jsNestJSFastAPIPythonREST APIsWebSockets

Bases de datos

PostgreSQLMySQLRedisChromaDBSupabase

DevOps & Infra

DockerPodmanGitLinux
# contacto

¿Trabajamos juntos?

Recién egresado, disponible para trabajo remoto como becario o junior. Aprendo rápido y construyo en serio.

//Respondo en menos de 24 horas

LinkedInGitHub