Skip to content

Repository files navigation

WyA Unified Operations Platform

Dashboard AI-native para consultoras contables chilenas. Centraliza la operación de cada cliente desde plataformas externas (Clay, Softland, Talana, Chipax, Zoho) y la infraestructura tributaria chilena (SII, Previred, Tesorería vía BaseAPI), operado por un agente Claude con tools de lectura y acción.

Etapa: MVP demo. Mock data (3 tenants), sin auth real. Deployable a Vercel (ver Demo). Ver docs/MVP.md para el alcance y docs/GAPS.md para el registro de decisiones y huecos.

Demo

En vivo: https://wya-platform.vercel.app

Deploy with Vercel

Demo navegable con mock data (no requiere DB ni servicios externos). Recorrido sugerido en docs/DEMO-SCRIPT.md. El chat usa Claude real con ANTHROPIC_API_KEY; sin key, cae a un demo scripted.

Qué hay construido

Frontend — demo navegable (mock data), verificado en browser:

  • Cartera — 3 clientes con semáforo de salud y los 4 módulos de un vistazo.
  • Vista 360° por cliente — 5 tabs (Conta, RRHH, Finanzas, Comercial, Tributario), ficha del empleado, pre-cierre del período, y conciliación bancaria.
  • Chat AI-native — agente Claude con 4 tools; fallback scripted sin API key.
  • Documentos — bandeja multi-empresa, vista PDF/escaneo, OCR simulado.
  • Reportes — PDF ejecutivo + enviar por correo con preview.
  • Portal del cliente — subida de documentos con OCR (otra superficie).
  • Alertas, Calendario, Ajustes. Dark/light en todo.

Backend — Sprint 1, verificado:

  • Monorepo pnpm + Turborepo + TypeScript estricto.
  • @wya/lib (RUT chileno), @wya/data-db (Drizzle + seed + PGlite), @wya/baseapi-mcp (2 tools + entrypoint stdio para Claude Desktop).
  • Tests: 14/14 verde (Vitest contra PGlite, sin docker).

El frontend lee de apps/dashboard/lib/mock-data.ts. El data layer real (Postgres vía baseapi-mcp, ya testeado) está construido pero aún no conectado a la UI — es el siguiente paso (ver docs/GAPS.md G25).

Stack

Next 15 · React 19 · TypeScript · Tailwind · Drizzle ORM · PostgreSQL · Zod · @modelcontextprotocol/sdk · Vitest. Gestor de paquetes: pnpm.

Estructura

apps/dashboard/              Next 15 (scaffold)
packages/
  lib/                       chilean-rut, formatters
  data/db/                   Drizzle schema + seed + client (pg) + PGlite (tests)
  mcps/
    shared/                  tipos + audit
    baseapi-mcp/             2 tools + stdio entrypoint
docs/                        MVP, PRD, ARCHITECTURE, DESIGN-SYSTEM, ROADMAP, GAPS, specs
docker-compose.yml           Postgres 16 para dev

Cómo correrlo

Requisitos: Node ≥ 20, pnpm, Docker (para Postgres).

# 1. Instalar pnpm si no lo tienes
npm install -g pnpm

# 2. Dependencias
pnpm install

# 3. Levantar Postgres
docker compose up -d

# 4. Migrations + seed del Tenant A
cp .env.example .env
pnpm db:generate      # genera las migrations desde el schema
pnpm db:migrate       # las aplica a Postgres
pnpm seed             # carga el Tenant A (Restaurante Sabor SpA)

# 5. Tests
pnpm test             # o, sin pnpm: npx vitest run (usa PGlite, no necesita docker)

# 6. Dashboard
pnpm dev              # http://localhost:3000

Solo el dashboard (el demo, sin docker)

El dashboard corre con mock data — no necesita Postgres ni docker:

cd apps/dashboard && npm install && npm run dev   # http://localhost:3000

Postgres (docker) solo hace falta para el seed real y validar el MCP. Los tests tampoco necesitan docker (corren contra PGlite in-process).

Validar el MCP en Claude Desktop

Con Postgres levantado y seedeado, agrega a tu claude_desktop_config.json:

{
  "mcpServers": {
    "baseapi": {
      "command": "npx",
      "args": ["tsx", "/RUTA/ABSOLUTA/A/wya/packages/mcps/baseapi-mcp/src/index.ts"],
      "env": { "DATABASE_URL": "postgres://wya:wya@localhost:5432/wya" }
    }
  }
}

Reinicia Claude Desktop y pregunta, por ejemplo:

Consulta el contribuyente del tenant 11111111-1111-4111-8111-111111111111. Obtén el RCV de compras del periodo 2026-05 para ese tenant.

(El UUID es el del Tenant A, fijo y determinista — ver packages/data/db/src/constants.ts.)

Agente del chat (en vivo)

El chat sidebar usa un agente Claude real cuando defines ANTHROPIC_API_KEY:

  • Sin key: el chat funciona en modo demo (respuestas scripted) — nada se rompe.
  • Con key: export ANTHROPIC_API_KEY=... y pnpm dev. El agente (Vercel AI SDK + @ai-sdk/anthropic) orquesta 4 tools —consultar_contribuyente, obtener_rcv_compras, obtener_liquidaciones, consultar_previred— sobre la misma mock data que la UI. Endpoint: apps/dashboard/app/api/chat/route.ts. Modelo configurable con AGENT_MODEL (default claude-sonnet-4-6).

Conectar el agente al data layer real (baseapi-mcp → Postgres, ya testeado) en vez de al mock-data es el siguiente paso natural.

Nota de entorno

Este repo se construyó en una máquina sin docker; por eso los tests usan PGlite (Postgres in-process) y la app mantiene Postgres en Docker. Ambos usan el mismo schema Drizzle. Ver docs/GAPS.md G24.

Documentación

Necesitas Lee
Alcance del MVP docs/MVP.md
Producto completo docs/PRD.md
Arquitectura, DB, RLS docs/ARCHITECTURE.md
Design system docs/DESIGN-SYSTEM.md
Decisiones y huecos docs/GAPS.md
Diseño del Sprint 1 docs/superpowers/specs/2026-06-02-wya-sprint1-design.md

About

Plataforma de operaciones AI-native para consultoras contables chilenas (MVP demo). Next.js 15 + Vercel AI SDK, agente Claude con tools, multi-tenant, datos mock.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages