SaaS en español para que asesorías/consultoras (multi-cliente, white-label) y pymes que usan IA armen y mantengan su expediente de cumplimiento del Reglamento europeo de IA: checker de aplicabilidad, inventario de sistemas con clasificación de riesgo, registro de formación (Art. 4), documentación generada con IA y expediente exportable — todo fechado.
Posicionamiento: no se vende pánico por el deadline del 2/8/2026. Se vende "armá el expediente antes de que llegue la ley española (enforcement real ~2027)".
- Next.js 16 (App Router) + TypeScript + Tailwind v4
- Neon (Postgres serverless) —
@neondatabase/serverless - Better Auth — identidad + organizaciones (multi-tenant)
- Anthropic SDK — generación documental (
claude-opus-4-8) - Vercel Blob — evidencias de formación + logo white-label
- Stripe — suscripciones
- @react-pdf/renderer + jszip + docx — export del expediente
Arquitectura: un solo repo. Núcleo compartido en src/lib/core/ (agnóstico de
producto); específico del AI Act en src/lib/ai-act/. El 2º producto (escáner
EAA) entrará como rutas /eaa/* + tablas propias + un valor en la dimensión
product de entitlements.
npm installCreá un proyecto en neon.tech y poné la connection string
(pooled, con ?sslmode=require) en DATABASE_URL.
Primero las tablas de auth, después las de la app:
npx @better-auth/cli@latest migrate # crea user/session/organization/...
npm run migrate # corre migrations/*.sql en ordencp .env.local.example .env.localCompletá: DATABASE_URL, BETTER_AUTH_SECRET (openssl rand -base64 32),
BETTER_AUTH_URL, ANTHROPIC_API_KEY, BLOB_READ_WRITE_TOKEN (Vercel → Storage
→ Blob), y las claves de Stripe (test) cuando llegues a facturación.
npm run dev- En dashboard.stripe.com (modo test), creá 2
productos con precios recurrentes mensuales:
- Cumplai — Empresa: 3 precios (29€ / 49€ / 79€).
- Cumplai — Asesoría: 2 precios (99€ / 199€).
- Copiá los 5
price_...a las variablesNEXT_PUBLIC_STRIPE_PRICE_*de.env.local. - Webhook local:
stripe listen --forward-to localhost:3000/api/stripe/webhooky pegá elwhsec_...enSTRIPE_WEBHOOK_SECRET. - Probar: comprar con tarjeta
4242 4242 4242 4242; el webhook activa el entitlement. Reenviá un evento desde el panel de Stripe para verificar idempotencia (no debe duplicar).
npm run dev/build/startnpm run typecheck—tsc --noEmitnpm run migrate— aplica las migraciones SQL de la app (idempotente, con registro enschema_migrations)npm run seed:demo— siembra 3 clientes demo (verde/ámbar/rojo) en la última organización creada (para QA y demos de venta)npm run test:rules— tests del motor de clasificación
Todo el código de las 5 semanas del plan está escrito, tipa (tsc) y compila
(next build); los tests del motor de reglas pasan (14/14). Falta la
verificación en vivo (smoke-test E2E), que requiere una DATABASE_URL de Neon
real y —para facturación— las claves de Stripe/Anthropic/Blob.
- Semana 1 — Fundaciones ✅ auth + organizaciones, onboarding empresa/asesoría (trial 14 días sin tarjeta), CRUD de clientes con cuota, cartera con semáforos, equipo, ajustes (marca + logo), storage (Vercel Blob).
- Semana 2 — Reglas + checker + inventario ✅ motor de clasificación puro y
versionado (ruleset v1 en
src/lib/ai-act/seed-v1.ts, tests enruleset.test.ts), checker público (lead magnet con consentimiento RGPD), inventario de sistemas con clasificación e historial inmutable. - Semana 3 — Formación + documentos ✅ registro Art. 4 con asistentes, evidencias (Blob) y certificado PDF; generación documental con Anthropic (política de uso, avisos de transparencia, cláusulas de proveedor), versionada.
- Semana 4 — Export + Stripe ✅ export del expediente en ZIP (PDF con white-label + CSV de actividad + documentos + evidencias); Stripe checkout + portal + webhook idempotente + gating por entitlement.
- Semana 5 — Pulido + deploy 🔜 seed demo listo; pendiente smoke-test E2E contra Neon y deploy en Vercel.
⚠️ El ruleset v1 (src/lib/ai-act/seed-v1.ts) es un borrador jurídico a validar antes de publicar el checker. No constituye asesoramiento legal.
Plan completo: ~/.claude/plans/busca-que-herramienta-legal-lexical-bumblebee.md.