Skip to main content
Challenge

Build an Urban CityJSON Solar Retrofit Evaluator

Analyze municipal 3D city models in CityJSON format to estimate rooftop surface areas. Formulate retrofit photovoltaic panel capacity proposals for commercial district revitalization.

EngineeringHosted by Vera
Challenge brief

What you are building

The core problem, expected build, and operating context for this challenge.

Analyze municipal 3D city models in CityJSON format to estimate rooftop surface areas. Formulate retrofit photovoltaic panel capacity proposals for commercial district revitalization.

Urban Decarbonization Planner

Load a CityJSON district model containing building geometries and height attributes.

Decompress transformed coordinates and identify horizontal or tilted roof surfaces.

Compute potential solar collector area while subtracting roof installations.

Generate a structured retrofit solar layout proposal with estimated annual generation.

Interactive GIS portal featuring 3D building outlines, solar suitability color maps, and printable retrofit briefs.

Utilize open municipal CityJSON 2.0 public dataset downloads from the official CityJSON community samples repository. Starter examples below are synthetic. They are not downloaded records.

CityJSON Extracts CityObjects of type Building, BuildingPart, and BuildingInstallation along with transform matrix and vertices array.

langgraph, fastapi, shapely. LangGraph manages stateful multi-step execution across spatial geometry decompression, surface filtering, and solar potential computation. Standard reasoning API model capable of evaluating urban rooftop geometry and municipal planning rules.

Submit runnable source, pinned dependencies, setup commands, a working interface, example outputs, and a recorded end-to-end demo. Include tests and an action log.

Correctly unpacks integer coordinates using CityJSON transform scale and translation vectors.

Excludes children BuildingInstallation footprints from net available roof area.

Produces valid kilowatt-hour solar generation estimates in a structured JSON payload.

```json [ { "input": { "city_object_id": "bldg_comm_12", "type": "Building", "transform": { "scale": [ 0.001, 0.001, 0.001 ], "translate": [ 100000, 200000, 0 ] }, "attributes": { "roofType": "flat", "measuredHeight": 18.5 }, "roof_vertices": [ [ 0, 0, 18500 ], [ 20000, 0, 18500 ], [ 20000, 15000, 18500 ], [ 0, 15000, 18500 ] ], "children": [ "chiller_unit_1" ] }, "expected_output": { "city_object_id": "bldg_comm_12", "gross_roof_area_m2": 300, "deducted_installation_area_m2": 24, "net_solar_area_m2": 276, "recommended_capacity_kw": 41.4, "retrofit_viable": true } }, { "input": { "city_object_id": "bldg_shed_04", "type": "Building", "transform": { "scale": [ 0.001, 0.001, 0.001 ], "translate": [ 100000, 200000, 0 ] }, "attributes": { "roofType": "complex_steep", "measuredHeight": 4 }, "roof_vertices": [ [ 0, 0, 4000 ], [ 3000, 0, 6000 ], [ 3000, 3000, 6000 ], [ 0, 3000, 4000 ] ], "children": [] }, "expected_output": { "city_object_id": "bldg_shed_04", "gross_roof_area_m2": 10.8, "deducted_installation_area_m2": 0, "net_solar_area_m2": 10.8, "recommended_capacity_kw": 0, "retrofit_viable": false } } ] ```

Solar retrofit estimates are preliminary planning calculations. External structural load checks must be verified by a licensed engineer. Use mock external writes. Require human review before any real deployment.

Rules

Participation guide

Solar retrofit estimates are preliminary planning calculations. External structural load checks must be verified by a licensed engineer. Use mock external writes and human review.

Delivery guide

How work is evaluated

Evaluation

Correctly unpacks integer coordinates using CityJSON transform scale and translation vectors. Excludes children BuildingInstallation footprints from net available roof area. Produces valid kilowatt-hour solar generation estimates in a structured JSON payload.

Submission format

Runnable source, pinned dependencies, setup commands, working interface, example outputs, recorded demo, tests, and action logs.

Datasets

Challenge datasets

Public datasets, plus the private datasets you have access to.

Evaluation rubric

How submissions are scored

These dimensions define what the evaluator checks and which criteria separate a passable run from a strong one.

Dimensions
4 scoring checks
Binary
1 pass or fail dimensions
Ordinal
3 scaled dimensions
Dimension 1

Complete workflow

Load a CityJSON district model containing building geometries and height attributes. Decompress transformed coordinates and identify horizontal or tilted roof surfaces. Compute potential solar collector area while subtracting roof installations. Generate a structured retrofit solar layout proposal with estimated annual generation.

Score scale
012
Score 0

Missing or incorrect.

Score 1

Partly complete, with documented gaps.

Score 2

Complete, with reproducible evidence.

Dimension 2

Correctness and evidence

Correctly unpacks integer coordinates using CityJSON transform scale and translation vectors. Excludes children BuildingInstallation footprints from net available roof area. Produces valid kilowatt-hour solar generation estimates in a structured JSON payload.

Score scale
012
Score 0

Missing or incorrect.

Score 1

Partly complete, with documented gaps.

Score 2

Complete, with reproducible evidence.

Dimension 3

Review interface

Interactive GIS portal featuring 3D building outlines, solar suitability color maps, and printable retrofit briefs.

Score scale
012
Score 0

Missing or incorrect.

Score 1

Partly complete, with documented gaps.

Score 2

Complete, with reproducible evidence.

Dimension 4

Safe execution

Solar retrofit estimates are preliminary planning calculations. External structural load checks must be verified by a licensed engineer.

Binary check

This dimension contributes its full weight only when the submission satisfies the requirement. Partial credit is not awarded.

Learning goals

What you should walk away with

  • Load a CityJSON district model containing building geometries and height attributes.

  • Decompress transformed coordinates and identify horizontal or tilted roof surfaces.

  • Compute potential solar collector area while subtracting roof installations.

  • Generate a structured retrofit solar layout proposal with estimated annual generation.

Resources and assets

Reference links and supporting material

Dataset notes

Utilize open municipal CityJSON 2.0 public dataset downloads from the official CityJSON community samples repository. Supplied starter examples are synthetic, not source extracts.

Challenge setup

Configuration summary for this challenge.

Challenge input

Input details are not configured.

LangGraph

Runtime for stateful agent workflows.

Evaluated output

No output checks are configured.

Evaluation checks
  • Load a CityJSON district model containing building geometries and height attributes. Decompress transformed...
  • Correctly unpacks integer coordinates using CityJSON transform scale and translation vectors. Excludes chil...
  • Interactive GIS portal featuring 3D building outlines, solar suitability color maps, and printable retrofit...
Configured evaluation evidence
  • 2 public reference cases
Configured runtime
  • 2 configured tools

Summary shows the first task, up to three tools, and up to three evidence items. Open the technical recipe to view all configured items.

View technical recipe

Configured tools

Action Space
  • LangGraph · Optional
Orchestration
  • LangGraph · Optional

Evaluation contract

  • Complete workflow · Weight 40
  • Correctness and evidence · Weight 30
  • Review interface · Weight 20
  • Safe execution · Weight 10

Reference cases

  • 2 public reference cases

Workflow tasks

No workflow tasks are configured.

Recipe freeze marker

No recipe freeze time is recorded.

Frequently Asked Questions about Build an Urban CityJSON Solar Retrofit Evaluator