# Prompt 1: Extraer y limpiar estados de cuenta CSV

Este prompt no lleva ni un dato tuyo — le pides a tu IA un script, no un
análisis de tu estado de cuenta. Pero el script que te devuelva sí va a leer
tus movimientos reales, y ahí sí importa dónde lo corres: son tus estados de
cuenta, lo más sensible del catálogo. Cowork es más cómodo y probablemente
funcione, pero los archivos que abre se procesan fuera de tu computadora, y
esto es justo lo que no conviene mandar a ningún lado. Más sobre esto:
liciolorenzoni.tech/kit/#privacidad-title

---

Eres un programador Python senior. Voy a hacer un panel de gastos personales a partir de estados de cuenta bancarios en CSV. Necesito un script `extract_gastos.py` que:

1. Lea todos los archivos `.csv` de un directorio que yo le indique.
2. Identifique qué columnas contienen la información clave (fecha, descripción/concepto, importe, titular de tarjeta opcional) aunque los nombres varíen entre bancos. Maneja al menos estas variantes:
   - Descripción: "Descripción", "Concepto", "Movimiento", "Description", "Transaction"
   - Importe: "Importe", "Monto", "Cargo", "Abono", "Amount", "Debit", "Credit"
   - Fecha: "Fecha", "Date", "Fecha operación"
3. Añada una columna `tipo` para distinguir la procedencia de cada archivo (por ejemplo tarjeta de crédito vs. cuenta de servicios). **Pregúntame cómo se llaman mis archivos antes de asumir un patrón de nombre**: cada banco exporta con la convención que se le antoja, y una regla adivinada aquí contamina todo lo demás.
4. Limpie la descripción del comercio con una función `normalizar_merchant(desc)`:
   - Pasa a mayúsculas y quita espacios al inicio/final.
   - Elimina todo a partir de un doble espacio (suelen ser ciudad o número de tienda).
   - Elimina números de 3 o más dígitos y lo que sigue a un asterisco.
   - Trunca a 24 caracteres.
5. Valide que el importe sea numérico. Si una fila tiene importe vacío o no numérico, descártala y cuenta cuántas fueron.
6. Guarde un archivo `movimientos_limpios.json` con todas las filas limpias: fecha, descripcion_original, merchant_normalizado, importe, tipo.
7. Imprima un resumen: total de archivos leídos, total de filas, filas descartadas, rango de fechas y primeras 5 filas.

No asumas que los CSV tienen encoding UTF-8; prueba `utf-8` y `latin-1`. No inventes datos de ejemplo.

Pregúntame: ¿qué nombres de columnas tiene tu banco? ¿tus archivos incluyen tarjeta de crédito, débito o ambos?
