Pivot
Pivot은 오픈 데이터 형식 기반 고성능 실시간 분석 데이터베이스입니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Shippear #3 · Desafío Ranking de Vendedores
Los reportes mensuales de 135 vendedores y 15 sucursales, convertidos en un BI visual que se juega y en agentes de IA que hacen el trabajo administrativo por el vendedor, para que el vendedor solo venda.
V052 (vendedor) y sup-pintos (gerente de equipo). PIN 1234.DECISIONS.md (V3).| Hoy | Con Liga La Virginia |
|---|---|
| Una planilla mensual con 7 KPIs que nadie mira hasta el cierre | Una carta de jugador con semáforos, que el vendedor mira en la calle todos los días |
| "Estás 82% en cobranzas" | "Cobrá a estos 3 clientes → +0,4 pts, subís al #50 y desbloqueás Oro" |
| El gerente descubre los problemas a fin de mes | Mapa de calor del equipo, rachas en riesgo y misión colectiva en vivo |
| El vendedor pierde horas mandando recordatorios y llenando encuestas | Un agente de cobranzas por WhatsApp y un agente de relevamiento que lee la foto de la góndola |
| Competencia que desmotiva a la mitad de abajo | Ligas de 10 de nivel parecido, rachas, MVP del que más mejoró y misiones colectivas |
Tres pilares:
Browser (mobile-first) ──SWR polling 2s──▶ /api/live (firma de cambios filtrada por sesión)
│ │
▼ ▼
Next.js 15 App Router ── Server Components / Server Actions / API routes ── service role ──▶ Supabase Postgres
│ │ (RLS ON, 0 políticas anon)
middleware JWT lib/scoring.ts ← única fuente de verdad del Puntaje Oficial
(cookie firmada) lib/game.ts ← Puntos de Liga, rachas, temporadas, ligas
lib/acciones.ts ← "Mejorá tu carta" (acciones = deltas sobre datos crudos)
lib/automation.ts ← agentes (cobranza, góndola, Dibu)
usuario (rol VENDEDOR o SUPERVISOR, que en pantalla se llama Gerente) con PIN hasheado con scrypt. La sesión es un JWT HS256 en una cookie httpOnly y un middleware redirige según el rol. El vendedor solo ve su carta. El gerente ve a su equipo, el detalle de sus vendedores, la Liga nacional y la Temporada.anon (probado: la API REST con la anon key devuelve []). Todas las lecturas pasan por el servidor con la service role, filtradas por la sesión./api/live cada 2 segundos. Cuando cambia la firma (ajustes, bandeja, reconocimientos), refresca los Server Components.lib/scoring.ts. Define ranking, podio y Balón de Oro.lib/game.ts. Alimentan beneficios y desempates.scripts/extract-pdf.mjs genera data/dataset.json (el dataset vino en PDF). scripts/seed.ts valida la fórmula y carga todo; scripts/seed-usuarios.ts carga los usuarios.| KPI | Real | Objetivo | Sentido | Peso |
|---|---|---|---|---|
| VTA Venta vs OV | Kilos_Vendidos / Kilos_Objetivo | 100% | ↑ | 30% |
| PRD Productividad | Pedidos / Visitas | 65% | ↑ | 10% |
| ACT No compradores | (Cartera − Compradores) / Cartera | 15% | ↓ | 15% |
| LAN Últ. lanzamientos | Con_Lanzamiento / Compradores | 40% | ↑ | 15% |
| ENT No entregados | No_Entregados / Pedidos | 3% | ↓ | 10% |
| COB Cobranzas | Cobros_en_Plazo / Cobros_Mes | 90% | ↑ | 15% |
| REL Relevamientos | Realizadas / Asignadas | 100% | ↑ | 5% |
| Agente | Qué hace | Ahorro estimado* |
|---|---|---|
| 🧤 Comodín Dibu | Redacta el WhatsApp de cobranza, lanzamiento o aviso de entrega con monto y vencimiento reales. Usa Anthropic (claude-haiku-5-5) si hay ANTHROPIC_API_KEY; si no, plantillas. Nunca inventa cifras. | ~2 min por mensaje |
| 🤖 Agente de Cobranzas Autónomo | Detecta los vencimientos de los próximos 5 días, manda el recordatorio y, cuando el cliente responde "ya pagué", marca el pago, suma el cobro al KPI y la carta sube sola. Endpoints listos para n8n + Twilio (/api/automations/cobranza/run, /api/webhooks/pago con x-webhook-secret). | 1–2 h por semana por vendedor |
| 📸 Agente de Relevamiento Visual | Desde una foto de la góndola "lee" frentes, faltantes y precios y completa hasta 5 encuestas de una vez (simulado en la demo). | ~5 min por encuesta |
* Estimaciones para el pitch, no medidas. En la demo los agentes corren en modo simulado dentro de la app.
Vendedor de demo: V052 · Mansilla Germán (Córdoba/Rio Cuarto). Tiene 90,8 pts, que lo pondrían en Oro, pero está 🔒 bloqueado en Plata por Cobranzas (82%).
V052 y PIN 1234. Se ve la carta Plata con el candado, el puesto #54 de 135, las rachas (🔥 12 meses en Venta) y Tu Liga.Para repetir: ↺ Reiniciar demo en la vista del vendedor.
npm i
npm run migrate # schema.sql + schema-v2.sql (requiere DATABASE_URL; alternativa: SQL Editor)
npm run seed # valida la fórmula, carga datos, juego y usuarios (PIN 1234)
npm run dev # http://localhost:3000 (con proxy/antivirus TLS: npm run dev:local)
npm test && npm run validate
Variables de entorno:
NEXT_PUBLIC_SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY y WEBHOOK_SECRET.AUTH_SECRET: si falta, se deriva de la service role.ANTHROPIC_API_KEY.MODO_PRESENTADOR=off: apaga el selector de roles del footer.NEXT_PUBLIC_SUPABASE_ANON_KEY ya no es necesaria: no hay lecturas anónimas.
Ver DECISIONS.md para todo lo que decidimos sin preguntar. Datos 100% ficticios.