safeeyes
Protect your eyes from eye strain using this simple and beautiful, yet extensible break reminder
翻訳待ち
Agentes de IA que atienden el WhatsApp y el teléfono de tu clínica las 24 horas: dan turnos, confirman, reprograman, recuperan pacientes y derivan lo urgente.
翻訳待ち
健康TypeScript · PLpgSQLGitHub @axellaban接続状況の再確認が必要です所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Agentes de IA que atienden el WhatsApp (texto y audios) y el teléfono de clínicas y consultorios las 24 horas: dan turnos sobre la agenda real, confirman, cancelan, reprograman, toman datos de admisión, derivan urgencias y le escriben a los pacientes para llenar la agenda (recall, lista de espera, recordatorios, ausentes, reactivación).
Inspirado en el core de Assort Health, adaptado a Argentina: WhatsApp primero, obras sociales y prepagas, voseo.
| Producto | Qué hace | Dónde está |
|---|---|---|
| Turnia Recepción (inbound) | Turnos 24/7, confirmación de asistencia, triage, FAQ, fuera de horario, recetas y pedidos → tareas, derivación a una persona | Agente en ElevenLabs + src/app/api/agent/tools |
| Turnia Activa (outbound) | Recall, lista de espera automática al cancelar, recordatorios, ausentes, reactivación, encuesta post-consulta | src/lib/campaigns.ts, panel → Campañas, n8n/ |
| Turnia Circuitos | Admisión (DNI, cobertura, plan, afiliado, foto de credencial), órdenes médicas e indicaciones previas | herramienta registrar_paciente + prompt |
| Turnia Equipo | Bandeja de tareas con respuesta al paciente por WhatsApp, transcripciones, resúmenes, métricas, memoria del paciente | Panel /panel |
Paciente (WhatsApp / teléfono / web)
│
▼
ElevenLabs Agent ──(1) webhook de inicio──► /api/elevenlabs/initiation → memoria del paciente + catálogo
│ ──(2) herramientas───────► /api/agent/tools/* → turnos, admisión, tareas (Postgres)
│ ──(3) post-conversación──► /api/elevenlabs/post-call → transcripción, resumen, métricas
▼
Panel de la clínica (/panel) n8n ◄── eventos (turno reservado, tarea urgente…)
n8n ──► /api/automations/* (recordatorios, recall… programados)
DATABASE_URL) · ElevenLabs Agents (voz + WhatsApp) · n8n (automatizaciones).La app se conecta directo a Postgres con una sola variable, DATABASE_URL, solo desde el servidor.
Neon (la que usa este deploy, gratis desde Vercel):
DATABASE_URL en Vercel.supabase/schema.sql y tocá Run.supabase/seed.sql → Run. Crea una clínica demo con 4 profesionales, horarios y pacientes ficticios. Si la clínica demo ya existe, no la toca.Supabase (alternativa): corré los mismos dos archivos en Supabase → SQL Editor y cargá en Vercel como DATABASE_URL la cadena de Project Settings → Database → Connection string → Transaction pooler (puerto 6543).
Después de la primera vez no hace falta volver a pegarlo: cada deploy de producción en Vercel aplica
schema.sqlsolo, antes del build (scripts/migrate-db.mjs, en una transacción). Crea lo que falta y actualiza bases de versiones anteriores sin borrar datos; nunca correseed.sql. En el log del build aparece[db] Base actualizada…. Si la base no responde, el build se corta y queda publicado el deploy anterior (para publicar igual:SKIP_DB_MIGRATION=1en Vercel). Los previews no tocan la base. A mano:DATABASE_URL=… npm run db:migrate.
.env.example):| Variable | De dónde sale |
|---|---|
DATABASE_URL | La carga la integración de Neon (o la cadena del pooler de Supabase) |
ELEVENLABS_API_KEY | ElevenLabs → Developers → API Keys |
AGENT_TOOLS_SECRET | Inventalo: un texto largo y aleatorio |
PANEL_PASSWORD | La contraseña que quieras para el panel |
ELEVENLABS_WEBHOOK_SECRET | Lo obtenés en el paso 3 (podés agregarlo después) |
https://tu-app.vercel.app/panel e ingresá con PANEL_PASSWORD.https://tu-app.vercel.app/api/elevenlabs/post-call. Copiá el secreto que te muestra, cargalo en Vercel como ELEVENLABS_WEBHOOK_SECRET y hacé Redeploy.https://tu-app.vercel.app/demo (chat o voz). La demo requiere sesión del panel. Los turnos que reserves aparecen en el panel → Agenda, y la conversación en → Conversaciones.Cada vez que cambies datos de la clínica (horarios, feriados, precios, textos) no hace falta tocar nada: el agente los lee al empezar cada conversación. Solo volvé a tocar Crear / actualizar agente si cambia la URL de la app, el teléfono para pasar llamadas o actualizás el código.
Hay dos formas de conectarlo. Se elige en Panel → Configuración → Cómo se conecta WhatsApp:
This is the beginning of the README. Read the rest at the original. Read the full README ↗