Portafolio · Desarrollo a medida

Herramientas que automatizan
trabajo real

Proyectos que construí para ahorrar tiempo, ordenar documentos y mover datos entre sistemas, con la misma mirada de seguridad que aplico cuando reviso el código de otros.

↳ Ver los proyectos Hablemos ↓
Python Escritorio
y datos
Laravel & Vue.js Aplicaciones
web
Seguridad Pensada desde
el diseño
01
Escritorio · Python

Renombrador automático de PDF

El problema

Renombrar a mano cientos de PDF toma horas y es fácil equivocarse, sobre todo cuando cada archivo debe llevar el nombre de la persona a la que corresponde.

Qué hace

Una aplicación de escritorio que lee cada documento, detecta el nombre que aparece en él y renombra el archivo sola. Si el PDF es una imagen sin texto, aplica reconocimiento óptico de caracteres (OCR) y descarta las palabras que no son nombres.

Interfaz gráfica sencilla: eliges la carpeta y la herramienta hace el resto
Lee el texto del PDF y, cuando hace falta, recurre al OCR
Filtra términos que no corresponden a nombres
Se entrega como ejecutable, sin instalar Python
PythonTkinterTesseract OCRPyInstaller
02
Aplicación web · Laravel y Vue.js

Noctua: composición e impresión de documentos

El problema

Preparar un libro cosido a mano exige reordenar páginas e imprimirlas por pliegos en un orden específico, un trabajo lento y propenso a errores.

Qué hace

Una aplicación web que recibe un PDF ya maquetado, permite editarlo, hace editable su texto y lo imprime con las páginas ordenadas, dos por cara, en hojas carta listas para doblar y coser.

Subida y edición del PDF desde el navegador
Texto editable con detección de fuentes mediante Ghostscript
Ordenamiento de páginas para impresión con Typst y FPDI
Comandos de consola y pruebas automatizadas (Pest, PHPStan y Pint)
Laravel 10Vue.jsTypstGhostscriptFPDIPest
03
Datos · Python

Validador de plantillas de migración

El problema

Cuando se migran datos de clientes entre sistemas, los errores de la plantilla de Excel solo aparecen al cargarla, y corregirlos después cuesta tiempo.

Qué hace

Una aplicación que revisa la plantilla antes de cargarla, contra las reglas del sistema de destino, señala cada error y genera el SQL de la migración. También puede reconciliar el resultado contra un entorno que ya tiene datos.

Validación fila por fila con mensajes claros
Generación automática del SQL de migración
Reconciliación opcional contra datos existentes
Interfaz web sencilla para quien no programa
PythonStreamlitExcelSQL
04
Datos · Python

Recolección automática de datos web

El problema

Reunir información de muchas páginas a mano es lento y difícil de repetir.

Qué hace

Un proyecto que recorre listas de direcciones web, extrae la información y la procesa en lote. Está organizado por capas (dominio, persistencia, scraping, servicios e interfaz), lo que facilita mantenerlo y ampliarlo.

Procesamiento por lotes de muchas direcciones
Arquitectura por capas, fácil de extender
Capa de persistencia separada para guardar los resultados
PythonSeleniumArquitectura por capas
05
Integración · API

Bot de Telegram con panel de monitoreo

El problema

La información que llega en mensajes sueltos de Telegram se pierde o hay que copiarla a mano.

Qué hace

Un bot que escucha los mensajes de un chat, los registra automáticamente y los muestra en un panel de monitoreo en el navegador. Recibe los eventos a través de la API de Telegram.

Integración con la API de Telegram
Registro automático de lo que llega al chat
Panel web para ver la actividad
Telegram Bot APIHTMLJavaScript
Utilidad · JavaScript

Cifrado de texto en el navegador

Cifra y descifra texto con una clave, todo dentro del navegador: nada se envía a un servidor.

JavaScriptCryptoJSSin servidor
Confidencialidad primero

Las capturas usan datos de ejemplo y los proyectos se describen sin información de clientes. Así trabajo también con tu código y tus datos: con NDA firmado antes de cualquier acceso.

Hablemos

¿Necesitas una herramienta
a medida?

Cuéntame qué tarea te quita más tiempo y vemos si se puede automatizar, con la seguridad cuidada desde el primer día.

¿Hablamos?