Skip to main content
The product is a pipeline of Cloud Run jobs plus one HTTP API. Collectors write raw files to GCS and some hot-path tables in Postgres. Cleaning and ML workers write typed Postgres tables. The API never scrapes OMIE itself.
1

Collect

Weather, OMIE prices, and ENTSO-E fundamentals land in GCS and Postgres.
2

Clean

Eventarc starts data-cleaning-service when a source writes its manifest.
3

Forecast

After weather cleaning, one forecast job runs per OMIE product.
4

Score

After new OMIE prices, the metric worker scores unscored forecasts.
5

Serve

platform-api reads Postgres for the app, client API, and webhooks.
Jobs are idempotent. A repeated manifest or an already-stored target day exits successfully without double-writing.

Triggers

Hourly. Manifest starts weather cleaning, then forecast jobs for all four products.
Every 30 minutes per market (Europe/Madrid). The job self-skips when up to date. Manifest starts pricing cleaning for that market only.
Hourly. Manifest starts fundamentals cleaning.
After OMIE pricing manifests. Scores unscored forecasts against real prices.

Pricing weather locations

Forecast models use three fixed locations, not tenant sites.

Madrid

40.4_-3.7

Burgos

42.3_-3.7

South

38.7_-5.1

Ownership

Platform team

Collectors, orchestration, Postgres schema (Alembic in platform-api), and the HTTP API.

AI team

Cleaner and forecast/metric model implementations, plus the MLflow registry.