Plataforma de análisis de licitaciones públicas para detección inteligente de oportunidades de negocio
OpportunityHunter es una plataforma avanzada que analiza procesos de contratación pública de múltiples países (Colombia, Chile, México) para generar alertas automáticas de oportunidades, detectar anomalías en precios y identificar patrones de colusión.
Nota: PR de validación de reglas de protección de rama.
- Detección de Oportunidades: Alertas automáticas basadas en palabras clave, montos y criterios personalizables
- Análisis de Tendencias: Seguimiento de precios por categoría y país
- Detección de Anomalías: Identificación de licitaciones con precios sospechosos
- Análisis de Colusión: Detección de posibles carteles en procesos de licitación
- Oportunidades Activas: Filtra automáticamente licitaciones cuyo deadline no ha vencido
- Filtros Temporales: Análisis por rangos de fechas personalizables
- Filtros Geográficos: Selección por países específicos
- Filtros de Valor: Rangos de montos configurables
- Reportes Detallados en JSON: Información completa de cada oportunidad encontrada
- Historial de Ejecuciones: Seguimiento temporal de todas las búsquedas
- Estadísticas Agregadas: Métricas por país, fuente, rangos de valor
- Gestión de Archivos: Limpieza automática de archivos antiguos
- SECOP II (Colombia): Sistema Electrónico de Contratación Pública
- ChileCompra (Chile): Plataforma de compras públicas de Chile
- CompraNet (México): Sistema de compras gubernamentales de México
- Python 3.12+
- pip
git clone <repository-url>
cd opportunity-hunter
pip install -r requirements.txt# Crear configuración personalizada
python tools/config_manager.py create-config --output config/config.local.json
# Verificar configuración
python tools/config_manager.py validate --config config/config.json# Análisis completo con persistencia
python main.py --config config/config.json --enable-persistence
# Análisis con filtros temporales
python main.py --config config/config.json --days-back 60 --enable-persistence
# Solo oportunidades activas (deadline no vencido)
python main.py --config config/config.json --enable-persistence
# Los reportes activos se generan automáticamente en active_opportunities/# Todas las opciones disponibles
python main.py --help
# Ejemplos de uso
python main.py --config config/config.json \
--enable-persistence \
--days-back 90 \
--temporal-analysis \
--temporal-interval monthly \
--verbose
# Ver historial de ejecuciones
python main.py --config config/config.json --show-history
# Limpiar archivos antiguos (más de 30 días)
python main.py --config config/config.json --cleanup-old 30# Ver historial completo
python tools/persistence_manager.py history
# Ver estadísticas
python tools/persistence_manager.py stats
# Ver contenido específico
python tools/persistence_manager.py show <archivo.json>
# Limpiar archivos antiguos
python tools/persistence_manager.py cleanup --days 30# Visualizar reportes de forma interactiva
python tools/report_viewer.py
# Ver reporte específico
python tools/report_viewer.py --file data/executions/opportunities_report/<archivo.json>Incluye todas las oportunidades encontradas con información detallada:
- Datos completos de la licitación
- Información de oferentes
- Análisis de palabras clave coincidentes
- Scoring de oportunidades
- Estadísticas agregadas
Filtra solo oportunidades cuyo deadline no ha vencido:
- Solo licitaciones participables
- Comparación activas vs. total
- Estadísticas específicas para oportunidades vigentes
- Alertas (
alerts): Notificaciones de oportunidades - Tendencias (
trends): Análisis de precios por categoría - Anomalías (
anomalies): Detección de precios sospechosos - Colusión (
collusion): Identificación de posibles carteles
{
"sources": {
"secop2": {
"enabled": true,
"mode": "online", // o "offline"
"endpoint": "https://www.datos.gov.co/resource/p6dx-8zbt.json",
"sample_file": "data/samples/secop2_sample.jsonl"
}
},
"filters": {
"keywords": ["software", "consultoría", "servicios"],
"countries": ["CO", "CL", "MX"],
"min_amount": 0,
"max_amount": 1000000000,
"days_back": 120
},
"persistence": {
"enabled": true,
"directory": "data/executions",
"cleanup_days": 30
}
}- Modo Online: Conexión directa a APIs gubernamentales
- Modo Offline: Usa archivos de muestra para desarrollo/testing
src/licitaciones/
├── domain/ # Modelos y lógica de negocio
├── app/ # Casos de uso y orquestación
└── infrastructure/ # Adaptadores externos (APIs, DB, archivos)
- Use Cases: Lógica de negocio encapsulada
- Ports: Interfaces para inversión de dependencias
- Adapters: Implementaciones concretas (APIs, persistencia)
- Services: Servicios de dominio especializados
pytest tests/ -vopportunity-hunter/
├── src/licitaciones/ # Código fuente principal
├── tools/ # Herramientas auxiliares
├── config/ # Archivos de configuración
├── data/ # Datos y reportes (ignorado en git)
├── tests/ # Tests unitarios
└── requirements.txt # Dependencias
- Implementar adapter en
infrastructure/sources.py - Registrar en configuración
- Agregar tests correspondientes
- Detección automática de licitaciones relevantes
- Análisis de competencia y precios de mercado
- Identificación de oportunidades por región
- Detección de anomalías en procesos de contratación
- Análisis de tendencias temporales
- Identificación de posibles irregularidades
- Análisis de transparencia en contratación pública
- Estudios de mercado gubernamental
- Detección de patrones de colusión
- Fork del proyecto
- Crear rama para feature (
git checkout -b feature/nueva-funcionalidad) - Commit de cambios (
git commit -am 'Agregar nueva funcionalidad') - Push a la rama (
git push origin feature/nueva-funcionalidad) - Crear Pull Request
Este proyecto está bajo la Licencia MIT. Ver LICENSE para más detalles.
- APIs públicas de SECOP II, ChileCompra y CompraNet
- Comunidad de Python y bibliotecas utilizadas
- Contribuidores y testers del proyecto
OpportunityHunter - Transformando datos públicos en oportunidades de negocio 🎯