Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
"El perro que encuentra las perras." Web app + bot de Telegram que rastrea subvenciones, ayudas y convocatorias (BDNS, fondos UE, premios privados) y las cruza con el perfil de cada empresa/autónomo. Multi-perfil por usuario, memoria/resumen generados con IA, leads a gestorías, y un panel de coste real de la API de Claude. 1. Supabase (base de datos) 1. https://supabase.cREADME 전문 보기 ↗
"El perro que encuentra las perras." Web app + bot de Telegram que rastrea subvenciones, ayudas y convocatorias (BDNS, fondos UE, premios privados) y las cruza con el perfil de cada empresa/autónomo. Multi-perfil por usuario, memoria/resumen generados con IA, leads a gestorías, y un panel de coste real de la API de Claude.
📖 CONTEXTO.md — contexto completo para retomar el proyecto: estado real con cifras, por qué está construido así, el motor de matching explicado, las trampas ya pisadas y qué sigue. Léelo antes de tocar matching, ingesta o costes.
convocatorias/
├── app/
│ ├── auth/ ← Login / registro (Supabase auth)
│ ├── dashboard/ ← Panel principal (convocatorias, sugerencias, memoria/resumen IA)
│ ├── organizations/ ← Gestión de perfiles de empresa (CNAE/IAE/CCAA/provincia)
│ ├── admin/costs/ ← Panel de coste real de la API de Claude
│ ├── admin/leads/ ← Panel de leads → gestorías
│ ├── api/ ← Endpoints API (ver más abajo)
│ ├── layout.tsx, Landing.tsx ← Layout raíz + landing pública
│ ├── robots.ts, sitemap.ts ← SEO (convenciones de metadata de Next.js)
│ └── opengraph-image.tsx, twitter-image.tsx ← Imagen social generada dinámicamente
├── lib/
│ ├── supabase.ts / supabase-server.ts ← Clientes Supabase (browser / servidor+admin)
│ ├── ai.ts ← Llamadas a Claude (analyze, memoria, resumen, radar…)
│ ├── admin.ts ← Emails con acceso admin (ADMIN_EMAILS)
│ ├── costs.ts ← Coste real por llamada a Claude → api_usage_log
│ ├── bdns.ts / bdns-sync.ts ← Cliente BDNS + sync incremental al catálogo
│ ├── eu-funding.ts / radar-data.ts / radar-sync.ts / descubrir.ts ← Radar de fondos UE y privados
│ ├── matching.ts / geo.ts ← Motor de matching perfil↔convocatoria
│ ├── theme.ts / types.ts ← Tokens de marca ("Rastro") + tipos TS
│ └── og-image.tsx ← Generador de la imagen OG/Twitter
├── bot/ ← Bot de Telegram (deploy en Railway, `npm start`)
├── supabase/migrations/ ← 001 → 013, ver abajo
├── public/data/ ← Catálogos oficiales INE (CNAE, IAE, provincias, municipios)
├── diseno-referencia.jsx ← Prototipo visual histórico (ya no representa el UI actual)
├── .env.local.example
└── README.md
supabase/migrations/001_schema.sql → 013_resumen_ia.sql, en orden/newbot → guardar el token y el usernamebotnpm start# Web (Vercel) — imprescindibles
NEXT_PUBLIC_SUPABASE_URL
NEXT_PUBLIC_SUPABASE_ANON_KEY
SUPABASE_SERVICE_ROLE_KEY # server-only, salta RLS — NUNCA en el navegador
ANTHROPIC_API_KEY # /api/grants/analyze, /api/search, memoria, resumen, radar
NEXT_PUBLIC_APP_URL # p.ej. https://www.dameperrasperro.es
# Admin
ADMIN_EMAILS # emails con acceso a /admin/leads y /admin/costs (coma-separados)
# Digest semanal + leads (opcionales, sin ellos el digest solo va por Telegram)
TELEGRAM_BOT_TOKEN
TELEGRAM_BOT_USERNAME
RESEND_API_KEY
DIGEST_FROM # remitente, p.ej. "DamePerrasPerro <[email protected]>"
LEADS_NOTIFY_EMAIL # a quién avisar de leads nuevos (si no, usa el primero de ADMIN_EMAILS)
# Crons manuales (opcional)
CRON_SECRET # protege /api/cron/* si se llaman a mano fuera de Vercel Cron
ADMIN_EMAILS solo llega a server components/API routes — el check de admin en el
dashboard (cliente) usa el fallback hardcodeado en lib/admin.ts, no esta variable.
/app, /lib) → Vercel. Raíz del repo = raíz de la app Next.js./bot) → Railway · Root bot · npm start. Vinculación de cuenta, comandos, "pégame un link", alertas de plazo (cron diario propio).001_schema.sql — esquema base (usuarios, perfiles, convocatorias, historial, RLS).002_bdns_catalogo.sql — catálogo público BDNS + estado de sync incremental.003_digest.sql — control de envíos del digest semanal.004_memoria.sql — columna memoria (borrador de solicitud con IA) en grants.005_telegram_link.sql — vinculación segura de Telegram (token de un solo uso).006_catalogos.sql — CNAE múltiple + provincia en perfiles.007_radar.sql — columna fuente (bdns / privada / europea) en el catálogo.008_fix_convpub_rls.sql — arregla la política de lectura pública del catálogo.009_iae_multiple.sql — IAE múltiple en perfiles.010_leads.sql — tabla leads (monetización vía gestorías).011_provincia_catalogo.sql — provincia derivada para convocatorias de ámbito local.012_costes.sql — api_usage_log (coste real por llamada a Claude) + fixed_costs.013_resumen_ia.sql — columna resumen_ia (resumen de las bases de la convocatoria) en grants.Definidos en vercel.json. Necesitan SUPABASE_SERVICE_ROLE_KEY en Vercel.
/api/cron/ingest (diario 06:00): ingesta BDNS al catálogo + refresco del radar (privadas + europeas), y los lunes además dispara el descubrimiento IA de nuevos privados./api/cron/digest (lunes 07:00): digest semanal por usuario (Telegram + email Resend)./api/cron/radar y /api/cron/descubrir: existen como rutas pero no están en vercel.json — solo se disparan a mano (?key=CRON_SECRET) o como efecto del cron de ingest de los lunes.ingest en vez de tener su propio horario. Para separarlo hace falta Vercel Pro.app/robots.ts / app/sitemap.ts: indexa la landing, bloquea /dashboard, /organizations, /admin, /api.app/opengraph-image.tsx / twitter-image.tsx: tarjeta social generada en el momento (sin depender de un asset de diseño).@vercel/analytics: montado en layout.tsx. Requiere activar "Web Analytics" una vez en el dashboard de Vercel (gratis en Hobby)./api/cron/ingest?key=... → el catálogo se llena y "Sugeridas" muestra BDNS + privadas + europeas.bot, npm start.@vercel/analytics empiece a registrar tráfico./admin/costs