SEO7.ES — Web, SEO, AI & Automation
Перейти к содержимому

Caso · Automatización e IA

TENDER — búsqueda de licitaciones de la ONU con IA.

TENDER — мобильная версия

Monitoreo automático de 28 fuentes internacionales; la IA coteja cada oportunidad con el CV completo del experto (69 proyectos, ~34 000 caracteres) y lo apto llega a un bot de Telegram y a un panel web de 13 páginas.

TENDER es un sistema autónomo de búsqueda de licitaciones de la ONU: cada día recorre los sitios de las agencias de la ONU, los bancos de desarrollo y los portales de la UE/OSCE, recopila miles de contrataciones, descarta la basura y lo caducado, y somete el resto a una IA ajustada al perfil del experto. Todo sobre un único backend y una base común.

TENDER — десктоп

¿Quieres un proyecto similar?

Completa un breve briefing — volvemos con plan y presupuesto.

TENDER es un sistema autónomo de búsqueda de licitaciones de la ONU: monitoreo automático de licitaciones de la ONU en 28 fuentes internacionales con selección por IA según el perfil de un experto. Cada día recorre los sitios de las agencias de la ONU, los bancos de desarrollo y los portales de la UE/OSCE, recopila miles de licitaciones, contrataciones y concursos de la ONU, descarta la basura y lo caducado, y somete el resto a una inteligencia artificial que coteja cada oferta con el currículum completo de un experto. Las adjudicaciones de la ONU aptas llegan a un bot de Telegram y a un panel de administración web. Todo sobre un único backend y una base de datos común.

Por qué necesita un sistema de búsqueda de licitaciones de la ONU

Qué son las licitaciones de la ONU. Son contrataciones y concursos competitivos que realizan las agencias de la ONU y los bancos de desarrollo: servicios de consultoría, peritaje, investigación. Los anuncios están dispersos en decenas de sitios (UNGM, UNICEF, PNUD, Banco Mundial y más), y el monitoreo manual de licitaciones de la ONU consume horas cada día.

Cómo encontrar licitaciones de la ONU. En lugar del rastreo manual, el sistema recopila las contrataciones internacionales de todas las plataformas automáticamente, las normaliza y deduplica, descarta lo irrelevante por tema, región, idioma y plazo, y deja que la IA juzgue cada vacante por la esencia del puesto. El experto ve solo las licitaciones de la ONU que valen la pena.

Participación en licitaciones de la ONU. El sistema no reemplaza el registro en licitaciones de la ONU ni la presentación de ofertas del lado del comprador, pero cierra la primera y más laboriosa etapa: la búsqueda y la selección. De cada licitación se ven los requisitos, el plazo, el país, los adjuntos (Términos de Referencia) y el enlace directo para presentar la solicitud de licitación de la ONU.

Contratar la búsqueda de licitaciones de la ONU. El sistema se ajusta a un experto o empresa concretos: su propio currículum, sus propias palabras clave, su propia lista de países. El precio de la búsqueda de licitaciones se reduce a un mantenimiento económico (unos pocos dólares al mes en IA y proxies); el coste exacto depende del número de fuentes y la frecuencia de los recorridos.

Stack tecnológico

  • Parsing: Python 3.12 + httpx + BeautifulSoup + lxml; para sitios JS (bancos asiático y africano) — Playwright a través del Scraping Browser de Bright Data (Chrome real, renderizado remoto, sin navegador local).
  • Anti-bot: Bright Data Web Unlocker (Cloudflare/JS) + Scraping Browser (renderizado JS completo).
  • IA: DeepSeek vía cliente compatible con OpenAI; prompts en ruso editables desde el panel.
  • Backend / panel: Flask 3 + gunicorn, plantillas Jinja2, CSS propio (dos temas, adaptativo, móvil).
  • Bot: aiogram 3 (long-polling, sin puertos abiertos).
  • Base de datos: SQLite (aislada, sin MySQL compartido).
  • Exportación: openpyxl (Excel), reportlab (PDF con cirílico).
  • Infraestructura: nginx (bloque propio + basic auth), systemd (4 servicios + timers), usuario aislado en el servidor, sin tocar otros proyectos.
  • Integraciones: API de saldos de DeepSeek y Bright Data, tipo de cambio del Banco Nacional de Kazajistán.

Lista completa de funciones implementadas

🤖 Parsers y recopilación

  • 28 fuentes lógicas en 17 conectores con interfaz única Connector → Vacancy: agencias de la ONU (UNICEF, ONU-Mujeres, UNFPA, OIM, UNGM, PNUD), bancos (Mundial, Asiático, Islámico, Africano, BERD, EABR, EFSD), UE/OSCE (TED, OSCE, OIT).
  • 5 tipos de protocolos bajo una misma abstracción: HTML servidor, API REST JSON, Oracle Recruiting Cloud (un motor para 3 agencias), POST + fragmento HTML, sitemap-XML.
  • Renderizado de sitios JS con navegador real (Scraping Browser) donde la lista la genera un script de cliente.
  • Controlador de recuperación por IA: si la maquetación de la fuente cambia y el parser falla, la IA reconstruye los campos de la tarjeta (con anclaje al HTML y límite anti-avalancha).
  • Resiliencia: la caída de una fuente no detiene la ejecución; anti-throttling con pausas; deduplicación de tarjetas dentro de la fuente.

⚙️ Pipeline de procesamiento (5+ fases)

  • Normalización: fechas de 6 formatos incompatibles → ISO; países desde códigos NUTS, «ciudad, país» y formas oficiales → nombre + región (referencia de 249 países ISO 3166-1).
  • Determinación de país (fase 2.5): heurística estricta por texto, con respaldo de IA cuando no se reconoce.
  • Deduplicación entre fuentes: una misma licitación aparece en varios portales; el sistema fusiona duplicados conservando el registro más completo y enriqueciéndolo con el resto.
  • Prefiltro de dos niveles: palabras STOP (basura), palabras CORE (tema), filtro territorial (lista blanca de 249 países), idioma (solo EN/RU), consultor nacional, plazo. Todas las reglas se editan en el panel; el registro muestra todas las reglas activadas como etiquetas.
  • Descarte de caducados en dos puntos: en el prefiltro y de nuevo tras cargar los detalles (en los bancos el plazo aparece solo dentro).

🌍 Filtro territorial

  • Referencia de 249 países (ISO 3166-1, RU/EN/códigos + normalización).
  • Lista blanca de países editable, con búsqueda entre los 249.
  • Aplicación doble: en el prefiltro (país fuera de lista → descartado) y tras la IA (país devuelto por la IA fuera de lista → no).

🧠 Matching por IA

  • Currículum completo en el contexto: se envía a la IA todo el CV del experto (69 proyectos, publicaciones, formación, idiomas; ~34 000 caracteres), no un resumen.
  • Juicio por la esencia del rol, no por el título: un proyecto puede llamarse «Gestión de finanzas públicas», pero el puesto interno puede ser ecólogo o consultor local con idioma obligatorio. La IA lee la descripción completa y lo rechaza.
  • Veredicto estructurado: sí/no + causa corta (regla) + causa larga (descripción) + resumen RU/EN + país + indicador de presencia de los Términos de Referencia.
  • Calibración demostrada con ejemplos de referencia; registro completo del diálogo con la IA por cada oferta.
  • Prompts y perfil editables desde el panel, con protección contra rotura.

🖥 Panel de administración web (13 páginas)

  • Dashboard: salud del servidor en tiempo real (CPU/RAM/disco, estado de servicios y BD, modo automático), embudo gráfico de todas las fases, estado de cada parser.
  • Finanzas: saldos en línea (DeepSeek, Bright Data) con botones de recarga, gasto por balance y por ejecuciones, pronóstico mensual por mediana, coste por ejecución y por oferta encontrada.
  • Ofertas seleccionadas + ficha de oferta: descripción completa, adjuntos (PDF/ToR), registro de entrega; rechazo manual con motivo + palabra STOP.
  • Aceptadas, Rechazadas, Registro de todas las ofertas (feed + búsqueda + etiquetas-regla con filtro).
  • Fuentes: ficha de cada una de las 28 (qué recopila, método, anti-bot, calendario).
  • Editor STOP/SIGNAL + pestaña Territorio, Logs, Algoritmo (con los prompts reales de la IA), Editor de prompts, Destinatarios, Ajustes.
  • Override manual (rechazar/aceptar + palabra), favoritos, resaltado de palabras clave de la causa, ordenación por columnas.
  • Exportación de listas a CSV/Excel/JSON/PDF (apaisado, cirílico), respetando el filtro.
  • Gestión de usuarios del panel + acceso por enlace desde Telegram (token).
  • Dos temas (claro/oscuro), adaptativo, versión móvil con tarjetas.

🤖 Bot de Telegram

  • Menú con botones permanentes abajo: Todas las ofertas · Fuentes · Estadísticas · Ayuda.
  • Entrega automática de cada nueva oferta apta a los destinatarios activos.
  • Gestión desde el chat: botón «No apta» que rechaza la oferta directamente en Telegram (sincronizado con el panel).
  • Archivos al chat: los adjuntos (ToR/PDF) se envían como documentos.
  • Estadísticas ampliadas (embudo, base, saldos, eficiencia) y lista de fuentes con lo recopilado.
  • Acceso al panel sin contraseña por enlace personal, si el operador lo activa.

🚀 Automatización y producción

  • Pipeline diario por timer de systemd (recopilación → IA → entrega), con recuperación de ejecuciones perdidas.
  • Planificador de informes — timer horario que comprueba a quién toca: informes intermedios a la hora elegida e informe semanal los lunes, según la zona horaria de cada destinatario.
  • Ejecución manual con el botón «Ejecutar ahora».
  • 4 servicios en producción (bot, panel, pipeline, informes), aislados de otros proyectos del servidor.

💳 Contabilidad financiera

  • Dos visiones del gasto: por saldo (inicio − actual, real) y por ejecuciones (tokens de IA + tráfico de proxy/navegador).
  • Eficiencia: coste de una ejecución y de una oferta encontrada, pronóstico mensual.
  • Saldos en línea por API + botones de recarga.

¿No sabes por dónde empezar?

Analizamos tu caso en una consulta gratuita y proponemos una solución.

¿Listo para tu proyecto?

Déjanos tu solicitud — calculamos plazos y precio para tu negocio.