# Research: Chatbot PDF Extractor (Baseline)

**Date**: 2026-05-21  
**Status**: Brownfield snapshot

## Decision: Spec Kit + Cursor Agent

**Rationale**: GitHub Spec Kit provee flujo SDD estructurado (constitution → spec → plan → tasks → implement) con skills en `.cursor/skills/speckit-*`.

**Alternatives considered**: Solo `.cursor/specs/proyecto-base.yml` — insuficiente para features incrementales y trazabilidad.

## Decision: PDF nativo vs Imagick

**Rationale**: OpenAI Responses API (`input_file`) y Gemini (`inline_data application/pdf`) evitan Imagick/Ghostscript en servidor.

**Fallback**: `PDF_VISION_DRIVER=imagick` → `ImagickPdfVisionExtractor`.

## Decision: Dual database

**Rationale**: BD principal almacena documentos y extracciones; BD `secundaria` recibe JSON en tabla destino del cliente (`DB_SEC_JSON_COLUMN`, default `payload`).

## Decision: JWT en sessionStorage

**Rationale**: SPA Angular guarda `chatfront_access_token`; interceptor añade `Authorization: Bearer`.

**Known issue**: 401 en `/auth/me` tras login borra token inmediatamente — validar JWT_SECRET y CORS.

## Open questions (futuras features)

- Clasificación de PDF escaneado sin texto Smalot (solo visión).
- Paginación/chunking PDFs muy grandes para límites de tokens.
- Tests E2E Angular + API.
