Sistema inteligente de generación de presupuestos para reformas y obras en España, desarrollado con CrewAI y Azure AI Foundry.
Esta aplicación permite generar presupuestos profesionales para reformas de viviendas, locales y oficinas. Utiliza un sistema multi-agente basado en CrewAI que:
- Valida los datos del proyecto
- Calcula precios aplicando reglas de negocio españolas
- Genera documentos PDF profesionales
- ✅ Presupuestos para viviendas, pisos, locales y oficinas
- ✅ Tres niveles de calidad: Básico, Estándar y Premium
- ✅ Paquetes predefinidos (Baño completo, Cocina completa, Reforma integral)
- ✅ Partidas individuales personalizables
- ✅ Cálculo automático de IVA (10% vivienda habitual / 21% resto)
- ✅ Markup del 15% en partidas individuales
- ✅ Redondeo al alza del 5%
- ✅ Generación de PDF profesional con disclaimers legales
- ✅ Interfaz web con Streamlit
- Python 3.10+
- CrewAI - Orquestación de agentes IA
- Azure AI Foundry - Modelos de lenguaje (GPT-4, GPT-5-mini)
- Streamlit - Interfaz de usuario web
- ReportLab - Generación de PDFs
- Pydantic - Validación de datos
- Pytest - Testing
budget_calculator/
├── src/
│ ├── application/
│ │ ├── agents/ # Agentes CrewAI
│ │ │ ├── data_collector_agent.py
│ │ │ ├── calculator_agent.py
│ │ │ └── document_agent.py
│ │ ├── crews/ # Orquestación
│ │ │ └── budget_crew.py
│ │ └── services/ # Lógica de negocio
│ │ ├── budget_service.py
│ │ └── pricing_service.py
│ ├── config/
│ │ ├── settings.py # Configuración
│ │ └── pricing_data.py # Base de datos de precios
│ ├── domain/
│ │ ├── enums/ # Enumeraciones
│ │ └── models/ # Modelos de datos
│ ├── infrastructure/
│ │ ├── llm/ # Clientes LLM
│ │ │ ├── azure_client.py
│ │ │ ├── openai_client.py
│ │ │ └── llm_factory.py
│ │ └── pdf/ # Generador de PDF
│ │ └── pdf_generator.py
│ └── presentation/
│ ├── app.py # Aplicación Streamlit
│ ├── pages/ # Páginas de la app
│ └── components/ # Componentes UI
├── tests/
│ ├── unit/ # Tests unitarios
│ └── integration/ # Tests de integración
├── .env.example # Ejemplo de configuración
├── requirements.txt # Dependencias
├── run_tests.py # Script de testing
└── README.md
git clone https://github.com/tu-usuario/budget_calculator.git
cd budget_calculatorpython -m venv venv
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activatepip install -r requirements.txtCopia el archivo de ejemplo y configura tus credenciales:
cp .env.example .envEdita .env con tus credenciales de Azure AI Foundry:
# Proveedor LLM
LLM_PROVIDER=azure
# Azure AI Foundry
AZURE_OPENAI_ENDPOINT=https://tu-recurso.cognitiveservices.azure.com/
AZURE_OPENAI_API_KEY=tu-api-key-aqui
AZURE_OPENAI_API_VERSION=2025-04-01-preview
AZURE_OPENAI_DEPLOYMENT_NAME=gpt-5-ministreamlit run src/presentation/app.pyLa aplicación estará disponible en http://localhost:8501
from src.application.crews import BudgetCrew
# Crear crew
crew = BudgetCrew()
# Datos del formulario
datos = {
"tipo_inmueble": "piso",
"metros_cuadrados": 80.0,
"calidad": "estandar",
"es_vivienda_habitual": True,
"paquetes": ["bano_completo"],
}
# Datos del cliente
cliente = {
"nombre": "Juan García",
"email": "juan@email.com",
"telefono": "666 123 456",
"direccion_obra": "Calle Mayor 1, Madrid",
}
# Procesar presupuesto
resultado = crew.procesar_presupuesto(
datos_formulario=datos,
datos_cliente=cliente,
generar_pdf=True,
)
if resultado["exito"]:
print(f"Total: {resultado['presupuesto'].total}€")
# Guardar PDF
with open("presupuesto.pdf", "wb") as f:
f.write(resultado["pdf_bytes"])python run_tests.py# Tests unitarios
pytest tests/unit/ -v
# Tests de integración
pytest tests/integration/ -v
# Con cobertura
pytest --cov=src --cov-report=html| Paquete | Descripción | Precio Base (Estándar) |
|---|---|---|
bano_completo |
Reforma integral de baño | 5.500€ + 500€/m² adicional |
cocina_completa |
Reforma integral de cocina | 10.000€ + 600€/m² adicional |
reforma_integral_vivienda |
Reforma completa vivienda | 950€/m² |
reforma_integral_local |
Reforma local/oficina | 700€/m² |
- Markup: 15% sobre partidas individuales (NO sobre paquetes)
- Redondeo al alza: 5% sobre el total
- IVA Reducido: 10% para vivienda habitual
- IVA General: 21% para resto de inmuebles
- Validez: 30 días desde emisión
| Variable | Descripción | Default |
|---|---|---|
LLM_PROVIDER |
Proveedor LLM (azure/openai) | azure |
AZURE_OPENAI_ENDPOINT |
Endpoint de Azure | - |
AZURE_OPENAI_API_KEY |
API Key de Azure | - |
AZURE_OPENAI_DEPLOYMENT_NAME |
Nombre del deployment | gpt-5-mini |
IVA_GENERAL |
IVA general (%) | 21 |
IVA_REDUCIDO |
IVA reducido (%) | 10 |
MARKUP_PARTIDAS_INDIVIDUALES |
Markup partidas (%) | 15 |
REDONDEO_ALZA |
Redondeo al alza (%) | 5 |
VALIDEZ_PRESUPUESTO_DIAS |
Días de validez | 30 |
Este proyecto es privado y confidencial. Desarrollado para Easy Obras y Servicios.
- Email: fernando.prada@proton.me
Fernando Prada - AI Engineer - Senior Consultor
Desarrollado usando CrewAI