Skip to main content
Challenge

Build a CityJSON Metadata Extent Coordinate Validator

Parse CityJSON 2.0 metadata objects to verify geographical extent bounding coordinates. Calculate actual dataset bounds from decompressed vertices and flag metadata discrepancies.

EngineeringHosted by Vera
Challenge brief

What you are building

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

Parse CityJSON 2.0 metadata objects to verify geographical extent bounding coordinates. Calculate actual dataset bounds from decompressed vertices and flag metadata discrepancies.

Municipal Tax Assessor

Ingest CityJSON 2.0 models and extract the root metadata geographicalExtent array.

Decompress integer coordinates from the vertices array using the transform object.

Calculate the true min/max spatial bounding box enclosing all decompressed vertices.

Generate a metadata discrepancy report comparing declared extents versus calculated bounding boxes.

Browser validation portal showing calculated vs declared extents and bounding box error warnings.

Author synthetic CityJSON 2.0 documents with '+' prefix extension object types and custom attributes. Starter examples below are synthetic. They are not downloaded records.

CityJSON Applies CityJSON Section 5 Metadata object specifications to validate geographicalExtent arrays.

mastra-ai, typescript, zod. Mastra AI orchestrates schema loading, regex pattern verification, and diagnostic error explanation. Instruction-tuned LLM capable of schema parsing and concise error reporting via API.

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.

Calculates true bounds accurately from integer decompressed vertices.

Identifies files where metadata extent deviates from actual geometry.

Validation report returns status and calculated geographical boundary mismatch distances.

```json [ { "input": { "type": "CityJSON", "metadata": { "geographicalExtent": [ 0, 0, 0, 100, 100, 50 ] }, "calculated_bounds": [ 0, 0, 0, 100, 100, 50 ] }, "expected_output": { "extent_declared": true, "mismatch": false, "max_deviation": 0, "mapping_valid": true } }, { "input": { "type": "CityJSON", "metadata": { "geographicalExtent": [ 0, 0, 0, 50, 50, 20 ] }, "calculated_bounds": [ 0, 0, 0, 100, 100, 50 ] }, "expected_output": { "extent_declared": true, "mismatch": true, "max_deviation": 50, "mapping_valid": false } } ] ```

Validator checks syntax and schema metadata only; it does not alter statutory property tax records. Use mock external writes. Require human review before any real deployment.

Rules

Participation guide

Validator checks syntax and schema metadata only; it does not alter statutory property tax records. Use mock external writes and human review.

Delivery guide

How work is evaluated

Evaluation

Calculates true bounds accurately from integer decompressed vertices. Identifies files where metadata extent deviates from actual geometry. Validation report returns status and calculated geographical boundary mismatch distances.

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

Ingest CityJSON 2.0 models and extract the root metadata geographicalExtent array. Decompress integer coordinates from the vertices array using the transform object. Calculate the true min/max spatial bounding box enclosing all decompressed vertices. Generate a metadata discrepancy report comparing declared extents versus calculated bounding boxes.

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

Calculates true bounds accurately from integer decompressed vertices. Identifies files where metadata extent deviates from actual geometry. Validation report returns status and calculated geographical boundary mismatch distances.

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

Browser validation portal showing calculated vs declared extents and bounding box error warnings.

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

Validator checks syntax and schema metadata only; it does not alter statutory property tax records.

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

  • Ingest CityJSON 2.0 models and extract the root metadata geographicalExtent array.

  • Decompress integer coordinates from the vertices array using the transform object.

  • Calculate the true min/max spatial bounding box enclosing all decompressed vertices.

  • Generate a metadata discrepancy report comparing declared extents versus calculated bounding boxes.

Resources and assets

Reference links and supporting material

Dataset notes

Author synthetic CityJSON 2.0 documents with '+' prefix extension object types and custom attributes. Supplied starter examples are synthetic, not source extracts.

Challenge setup

Configuration summary for this challenge.

Challenge input

Input details are not configured.

Mastra AI

TypeScript agent framework.

Evaluated output

No output checks are configured.

Evaluation checks
  • Ingest CityJSON 2.0 models and extract the root metadata geographicalExtent array. Decompress integer coord...
  • Calculates true bounds accurately from integer decompressed vertices. Identifies files where metadata exten...
  • Browser validation portal showing calculated vs declared extents and bounding box error warnings.
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
  • Mastra AI · Optional
Orchestration
  • Mastra AI · 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 a CityJSON Metadata Extent Coordinate Validator