尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Interactive AI map & digital concierge for Cabo Rojo, Puerto Rico. 162+ businesses, WhatsApp bot, offline PWA.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Un solo motor, tres propiedades. Este repo sirve tres sitios desde el mismo deployment de Vercel (detección por host): El Veci — textea al 787-417-7711 (SMS o WhatsApp) y te contesta 24/7. Guárdalo: /veci. Cada récord junta data pública verificable + data propia del substrato, y cierra con acción (no solo muestra el problema): /prediccion · /costo-de-vida · /rendimiento · /cupon · /exposicion-ai · /decidir · /trabajo · /luz · /agua · /basura · /recuperacion · /sigue-el-dinero · /registro/estado · /diabetes · /telemedicina · /esencia y más. Índice: puertoricosinfiltros.com.查看完整 README ↗
Un solo motor, tres propiedades. Este repo sirve tres sitios desde el mismo deployment de Vercel (detección por host):
| Sitio | Qué es |
|---|---|
| mapadecaborojo.com | Mapa + directorio de Cabo Rojo (1,173 negocios en CR, 35,614 fichas publicadas en PR) con El Veci detrás |
| registromedicopr.com | Registro de especialistas médicos de PR pareado contra NPPES: 30,622 fichas con NPI federal, 32 especialidades × 5 regiones × 78 pueblos, desiertos médicos, guías por situación, bilingüe ES/EN |
| puertoricosinfiltros.com | Récords cívicos con data verificable: el número, la fuente, y qué hacer con él |
El Veci — textea al 787-417-7711 (SMS o WhatsApp) y te contesta 24/7. Guárdalo: /veci.
Cada récord junta data pública verificable + data propia del substrato, y cierra con acción (no solo muestra el problema): /prediccion · /costo-de-vida · /rendimiento · /cupon · /exposicion-ai · /decidir · /trabajo · /luz · /agua · /basura · /recuperacion · /sigue-el-dinero · /registro/estado · /diabetes · /telemedicina · /esencia y más. Índice: puertoricosinfiltros.com.
"El único registro de especialistas médicos de PR verificado contra el gobierno federal (NPPES) que un humano normal puede leer." Superficies:
v_registro_muni_ratio) + página por pueblo: qué hay, qué falta y dónde queda lo más cerca, badge HPSA federal, datos citables copy-paste con fuente, y alerta "🔔 te aviso cuando llegue uno nuevo" (tabla registro_alerts, cron diario api/cron?job=alertas cierra el loop por email)?lang=en)accepted_plans)Regla de data: todo per cápita sale de las vistas canónicas (v_registro_muni_ratio / v_registro_muni_spec), nunca de places.region crudo.
"En Puerto Rico, conseguir médico no es un problema de información. Es un problema de quién contesta." Canon y roadmap:
~/Dropbox/Claude/Outbox/Estrategia/Registro-Quien-Contesta-2026-09-28.md.
La regla de producto: toda feature del Registro tiene que resolver, aprender o descubrir. Si no hace ninguna de las 3, sobra.
| Capa | Qué hay en el código | Dónde se lee |
|---|---|---|
| Resolver | Hoja "¿Cómo te fue con la llamada?" (5 resultados: cita · contesto_no_resolvio · no_contestaron · no_aceptan · otra_opcion; descartado si la cierra). Sale al volver de tocar Llamar (8 s a 2 h), 1 vez por llamada. Script del registrador en api/mapa-pages.ts (bloque isReg), handler handleRegistroLog con allowlist REGISTRO_EVENTS + CALL_OUTCOMES. | vista registro_resultados_llamada (1 fila por intento, unida por registro_events.cid, id aleatorio sin datos de la persona) |
| Aprender | Reportes de teléfono (telefono_reportado) y resultados malos por ficha. | vista registro_fallos_pendientes: cada fila es una ficha a corregir esa semana |
| Descubrir | Presión = visitas 28 días a /registro/<esp>/<pueblo> ÷ proveedores alcanzables. La etiqueta "cubierto" de desiertos cuenta proveedores, no capacidad. | vista registro_presion |
Reglas de medición (2 errores del 28 sep): visitas = ga4_humano con dim='sessionSourceMedium' (nunca sumar todas las dims) · click_to_call en GA4 incluye los botones de las listas desde el 22 sep 10:26pm (3ff08b2): no se compara con antes · resultados públicos solo con hechos observados, nunca proyecciones.
Dinero (línea roja): nadie paga para parecer que resuelve mejor de lo que los datos dicen. Nunca se cobra a una oficina por llamada o paciente enviado (Anti-Kickback). La verificación básica es gratis.
Cada noche (4:45am AT) la edge function fabrica-seo (repo Vecinoai) lee Search Console, encuentra páginas "borde de página 1" (posición 3-15, impresiones reales, CTR flojo) y escribe título/meta mejorados a places.seo_title/seo_description (máx. 3/noche). Cada cambio es un experimento en seo_experiments con baseline; a los 14 días el motor re-mide el CTR contra GSC y decide solo: se queda (kept) o revierte automáticamente (reverted). Recibo diario en nightly_receipts (routine fabrica-seo). Las páginas /negocio y /farmacia respetan los overrides; sin override usan la fórmula CTR (Nombre en Pueblo · Teléfono, Horario y Dirección) + FAQPage JSON-LD + badge "Abierto ahora" calculado en tiempo real (AST).
Demanda real medida por dos canales independientes y triangulada:
Vistas en Supabase: v_demanda_oeste (message-level, PII, acceso solo service-role), v_demanda_gsc, v_demanda_triangulada, v_demanda_vs_oferta_oeste (cruce con oferta verificada = pitch fuel). Récord público: /demanda.
ALERTA (avisos de emergencia/agua por pueblo) · CUPON (crédito por hijos sin cobrar) · COSTO (pulso del costo de vida) · MEDICO (récord de médicos + $75k federal) · MANUAL · RECALL <med> · o simplemente lo que necesites ("plomero en Combate").
Aparecer en el directorio verificado es gratis — ponte en el mapa. Destacarte tiene precio claro: La Vitrina — $799/año.
React + TypeScript + Vite (frontend del mapa) · Vercel serverless (14 fns, páginas SSR con cache CDN) · Supabase (Postgres + RLS + vistas + pg_cron) · Twilio SMS/WhatsApp (firma fail-closed) · OpenAI embeddings (768d).
Seguridad: RLS activo en tablas públicas; vistas con PII sin grants para anon/authenticated; webhook Twilio valida firma; llaves server-side sin prefijos públicos. Último lockdown: 2026-07-07.
Deploy: push a main → Vercel auto-deploy. El bot vive en el repo Vecinoai (edge functions de Supabase, 1,140 tests).
Corrido contra la base el 2026-08-27. Se re-corre, no se cita de memoria.
select count(*) filter (where visibility='published') as publicadas,
count(*) filter (where visibility='published' and npi is not null) as con_npi_federal,
count(*) filter (where visibility='published' and verification_source is not null
and verification_source !~* '(nppes|sulme|google_places|merge)') as confirmadas_por_persona
from places;
| Fichas publicadas | 35,614 |
| Municipios cubiertos | 78 |
| Pareadas al registro federal NPPES | 30,622 |
| Confirmadas por una persona | 292 (0.8%) |
| Señales de demanda humana, 90 días | 676, de 374 personas |
Importado no es verificado. Una ficha copiada de NPPES es la misma que ya tiene el plan médico: no hereda nada y no se vende como chequeo. Por eso el sello tiene 3 niveles y no 1, y por eso el nivel más alto solo lo escribe una persona. Ese 0.8% es la deuda, y es el trabajo.
Si un directorio no te enseña esta proporción, también la tiene.
Cada una costó un incidente real:
verification_source o no se hace.procedenciaSello(), api/_lib/procedencia.ts): persona, fuente corroborada, o copia de registro que no reclama nada.Nombrado a propósito, porque son las costuras:
¿Redacción, plan médico o municipio que necesita esta data con chequeo verificable? Escribe a [email protected] y dime qué estás tratando de probar.
Hecho en Cabo Rojo por Angel Anderson — una persona, con AI. Menos revolú, más sistema, mejor vida.