openplantif
v1.0.0
Published
Open standard for renewable energy plant data exchange — JSON Schema + SDK + CLI
Downloads
80
Maintainers
Readme
Zelo Platform — AI Agent for Renewable Energy Projects
v1.0.0 · Spain · Node.js · React · Supabase · Claude API
End-to-end platform for site analysis, permitting, engineering design, and financial modelling of utility-scale solar PV, wind, and BESS projects in Spain.
Overview
Zelo is a multi-agent platform that automates the full development pipeline for renewable energy projects — from raw land identification to bankable financial models. It runs on a Node.js / Express API backend, a React frontend (CDN, no build step), and a Supabase PostgreSQL database with pgvector.
Land → Environmental → Permit → Design → Finance → Export
↑ |
└──────────── Dashboard (13 modules unified) ─────────┘Modules — v1.0.0
| # | Module | Description | Tests |
|---|--------|-------------|-------|
| 1 | Land Agent | Catastro INSPIRE + scoring engine + GIS restrictions (22 layers) | — |
| 2 | Permit Agent | Rules engine, timeline calculator, Gantt critical path | — |
| 3 | Finance Agent | DCF model, DSCR, IRR, NPV, LCOE (25-year) | — |
| 4 | RAG Ambiental | pgvector embeddings, EIA corpus, Claude citations | — |
| 5 | OpenPlantIF v1.0 | Open JSON standard for plant data exchange + CLI + SDK | — |
| 6 | Parametric Design | Solar layout, strings, BoQ, CAPEX, production (6-stage cache) | 34/34 |
| 7 | IFC4 BIM Export | LOD100/200/300 IFC4 geometry, IfcMappedItem instancing | 25/25 |
| 8 | EPC Export Package | ZIP with IFC4 + BoQ Excel + OpenPlantIF JSON + DOCX summary | 25/25 |
| 9 | Dashboard EPC Tab | Export tab integrated in Project Dashboard | 25/25 |
| 10 | PVGIS Benchmark | v2 calibrated model vs PVGIS v5.2 SARAH-3, ±1.3% RMSE | 25/25 |
| 11 | MultiTech Engine | BESS (LFP), Wind (Weibull + power curve), Hybrid (Solar+BESS) | 25/25 |
| 12 | MultiTech UI | React UI for BESS/Wind/Hybrid at /multitech | 25/25 |
| 13 | Dashboard v2 | Tab "Tecnología" with BESS/Wind/Hybrid embedded in dashboard | 25/25 |
Total validated tests: 209/209
Quick Start
# Prerequisites: Node.js 18+, npm, Supabase project
git clone https://github.com/noticiasparajaime-dev/AI-Agent
cd AI-Agent/zelo-platform
# Install dependencies
npm install
# Configure environment
cp .env.example .env
# Set: SUPABASE_URL, SUPABASE_SERVICE_KEY, ANTHROPIC_API_KEY
# Start API server
cd packages/api
node src/app.js
# Open interfaces
# http://localhost:3000/dashboard → Project Dashboard
# http://localhost:3000/parametric → Solar Parametric Engine
# http://localhost:3000/multitech → BESS / Wind / Hybrid EngineArchitecture
zelo-platform/
├── packages/
│ ├── api/
│ │ └── src/
│ │ ├── app.js # Express entry point
│ │ ├── routes/
│ │ │ ├── dashboard.js # Project Dashboard
│ │ │ ├── parametric-ui.js # Solar parametric UI
│ │ │ ├── multitech.js # MultiTech API (compute/sensitivity/optimize)
│ │ │ └── multitech-ui.js # MultiTech static UI
│ │ └── services/
│ │ ├── multitech/
│ │ │ └── MultiTechDesign.js
│ │ ├── land/ # Land Agent
│ │ ├── permit/ # Permit Agent
│ │ ├── finance/ # Finance Agent
│ │ └── environmental/ # RAG + OGC connectors
│ └── frontend/
│ ├── project-dashboard.html/.jsx # Main dashboard (13 tabs)
│ ├── parametric-design.html/.jsx # Solar engine UI
│ └── multitech-design.html/.jsx # MultiTech engine UI
└── sql/
├── 003_pgvector.sql # Vector embeddings schema
├── 005_alerts.sql # Deadline alerts
├── 006_documents.sql # Document management
└── 007_notifications.sql # Notification engineAPI Reference
Solar Parametric Engine
POST /api/v1/parametric/compute
POST /api/v1/parametric/sensitivity
POST /api/v1/parametric/optimize
POST /api/v1/parametric/tornadoMultiTech Engine (BESS · Wind · Hybrid)
GET /api/v1/multitech/technologies
GET /api/v1/multitech/defaults/:tech # tech: bess | wind | hybrid
POST /api/v1/multitech/compute
POST /api/v1/multitech/sensitivity
POST /api/v1/multitech/tornado
POST /api/v1/multitech/optimizeExample — BESS compute:
curl -X POST http://localhost:3000/api/v1/multitech/compute \
-H 'Content-Type: application/json' \
-d '{
"technology": "bess",
"params": {
"bess_power_mw": 20,
"bess_duration_h": 4,
"bess_cycles_per_day": 1.5
}
}'Example — Wind sensitivity:
curl -X POST http://localhost:3000/api/v1/multitech/sensitivity \
-H 'Content-Type: application/json' \
-d '{
"technology": "wind",
"param_name": "wind_v_mean_ms",
"range_min": 5,
"range_max": 12,
"range_steps": 8
}'Land Agent
POST /api/v1/land/analyze # Full land analysis (score + restrictions + catastro)
POST /api/v1/land/score # Viability score only
GET /api/v1/land/restrictions/:lat/:lngPermit Agent
POST /api/v1/permit/timeline # Gantt + critical path
POST /api/v1/permit/rules # Applicable permit rules by CCAA
POST /api/v1/permit/rag # RAG query on permit corpusKey Technical Decisions
PVGIS Calibration (Module 10)
The parametric solar engine uses an OLS-calibrated GHI formula validated against PVGIS v5.2 SARAH-3 for 5 Spanish reference plants:
GHI = 3809 - 51.7 × lat + 4.68 × lng [kWh/m²/year]- Valid domain: lat 36–43°N, lng −9 to +4°E
- RMSE: 1.33% (vs 6.25% pre-calibration)
- All 5 reference plants within ±3% tolerance
Wind Production Model (Module 11)
Weibull distribution with numerical integration over cubic power curve:
c = v_mean / Γ(1 + 1/k) # scale parameter
P(v) = P_rated × ((v-v_ci)/(v_r-v_ci))³ # for v_ci ≤ v ≤ v_r
AEP = ∫₀³⁰ P(v) × f_weibull(v) × 8760 dvBESS Revenue Model (Module 11)
Three revenue streams with degradation-adjusted DCF:
Revenue = arbitrage + capacity_market + ancillary_services
LCOS = PV(costs) / Σ energy_out(t) × (1-deg)^tIFC4 Export LOD Matrix (Module 7)
| LOD | Elements | File size | Use case | |-----|----------|-----------|----------| | LOD100 | Site boundary + plant footprint | ~8 KB | GIS, Land Agent | | LOD200 | Tracker rows + equipment boxes | ~2 MB | Navisworks, clash detection | | LOD300 | Panel-level (IfcMappedItem) | ~1.5 MB | Digital twin, BIM |
Dashboard Navigation
http://localhost:3000/dashboard
Tabs: Overview · Terreno · Solar · Diseño · Permisos · Finanzas · Tecnología · Exportar
↑
BESS / Eólica / Híbrido
(links to /multitech for full engine)Reference Plants — Validation
| Plant | Location | Capacity | GHI (PVGIS) | Yield (PVGIS) | Model error | |-------|----------|----------|-------------|---------------|-------------| | Carmona | Sevilla, 37.47°N | 50 MW | 1820 kWh/m² | 1880 kWh/kWp | +0.4% ✅ | | Mérida | Badajoz, 38.92°N | 50 MW | 1785 kWh/m² | 1840 kWh/kWp | −1.7% ✅ | | Lleida | 41.62°N | 50 MW | 1648 kWh/m² | 1720 kWh/kWp | −1.2% ✅ | | Murcia | 37.98°N | 50 MW | 1862 kWh/m² | 1920 kWh/kWp | −1.9% ✅ | | Almería | 36.84°N | 50 MW | 1884 kWh/m² | 1950 kWh/kWp | −0.7% ✅ |
All within ±3% bankable tolerance.
OpenPlantIF v1.0
Open JSON standard for plant data exchange across tools (SCADA, EPC, GIS, BIM).
# CLI usage
node cli.js validate plant.json # validate against JSON Schema
node cli.js build --tech solar_pv # scaffold new plant file
node cli.js export --format ifc4 # export to IFC4Schema: openplantif-v1_0.json
Environment Variables
# Required
SUPABASE_URL=https://xxxx.supabase.co
SUPABASE_SERVICE_KEY=eyJhbGc...
ANTHROPIC_API_KEY=sk-ant-...
# Optional
PORT=3000
NODE_ENV=production
PVGIS_API_URL=https://re.jrc.ec.europa.eu/api/v5_2Test Coverage
# Run all test suites
node src/tests/validate-parametric.js # 34 tests — Solar engine
node src/tests/validate-ifc4.js # 25 tests — IFC4 BIM
node src/tests/validate-multitech.js # 25 tests — BESS/Wind/Hybrid
node src/tests/validate-multitech-ui.js # 25 tests — MultiTech UI
node src/tests/benchmark/validate-benchmark.js # 25 tests — PVGIS accuracy
node src/tests/validate-dashboard-v2.js # 25 tests — Dashboard v2
# ... + 50 additional tests across Land, Permit, Finance, EPC modulesRoadmap — v1.1
- [ ] Shading Engine — inter-row shading with real backtracking (dynamic PR vs GCR curve)
- [ ] FLORIS Wake Model — Python microservice for bankable wind wake loss
- [ ] Real-time prices — OMIE day-ahead market prices via API
- [ ] Multi-CCAA permit expansion — all 17 autonomous communities
- [ ] PDF Validation Report — automated due diligence report
License
MIT — see LICENSE
Repository
GitHub: https://github.com/noticiasparajaime-dev/AI-Agent
Last commit: 0f259d6
