Designer LLM prompt templates
Five ready-to-use prompts. Paste one into ChatGPT, Claude, or Gemini, attach a .ulc.json file, and you get back a clean spec sheet, an apples-to-apples comparison, a schedule-ready table, a VE sanity check, or a trace of where every value came from. Need a file to try them on? Grab a sample below.
Prompt 1
Render a .ulc file as a spec sheet
Read the attached `.ulc.json` file. Render it as a clean spec sheet with sections for product identity, electrical, optical / photometric, physical, and accessories. Call out any fields that are missing or flagged as unknown. If a SHA-256 source-file hash is present, note which source file each measured attribute traces back to.
Prompt 2
Compare two .ulc files
Read the two attached `.ulc.json` files. Compare them on CRI, CCT range, wattage, optical accessory options, mounting kit, IP rating, and dim-to-warm behavior. Flag any field where the products diverge materially or where one declares the field and the other does not. End with a one-paragraph recommendation framed around which product fits a [project type] application.
Prompt 3
Extract attributes for a luminaire-schedule line
Read the attached `.ulc.json` files. For each file, extract [CRI, CCT options, optical accessories, mounting kit, IP rating]. Return the result as a luminaire-schedule-ready table with one row per product and one column per attribute. Note any product missing any of the requested attributes.
Prompt 4
Sanity-check a VE package
Read the two attached `.ulc.json` files: the original specified product and the VE-proposed alternative. Compare them on CRI, CCT, wattage, optical distribution, mounting type, dimming method, and any field flagged as missing or unknown. Explicitly state whether the VE alternative matches the original design intent on each compared field. End with a flag list of fields where the VE alternative deviates materially.
Prompt 5
Pull the source-file provenance for an attribute
Read the attached `.ulc.json` file. For each measured attribute (CRI, CCT, wattage, photometric distribution, IP rating, optical accessories), identify which source file (PDF, IES, or LDT) the value traces back to via the per-field provenance + SHA-256 hash. Return the answer as a list mapping attribute to source file.
Canonical example records
Four reference records, one per manufacturer authoring pattern, built from real manufacturer spec sheets. These are the files you drop into the prompts above.
Each record's conformance level (core, standard, or full) is computed by the validator from the data the record carries, not self-declared.
-
ERCO Quintessence · recessed downlight
Single-SKU cutsheet model.
Downloaderco-quintessence-30416-023.ulc→ -
Selux Aya · exterior pole
Configurator with applicability blocks; 54,000 SKUs compressed into 21 records.
Downloadselux-aya-pole-sr-ho-3000k.ulc→ -
Lumenpulse Lumenfacade · RGB façade
Per-IES model with provenance classes for measured, simulated, and extended-photometry records.
Downloadlumenpulse-lumenfacade-loi-12-rgb-30x60-ts0.ulc→ -
Vode Nexa · suspended linear pendant
Per-foot linear-scaling model.
Downloadvode-nexa-suspended-807-so-3500k-90cri-hl-black-48in.ulc→
JSON Schema
The ULC schema, written to JSON Schema Draft 2020-12, served at /schema/ulc.json with the application/schema+json content type.
Point any Draft 2020-12 library at this file to validate records, no extra configuration needed. Conformant records declare ulc_version 0.6.0, the current schema level.
ulc.json
ulc.json →
Go reference validator
The canonical reference implementation: ulc, a single-file Go binary that validates records against the schema, verifies source-file hashes, regenerates the index block, and converts a manufacturer workbook into validated records with ulc from-sheet. Released via GitHub Releases on the spec repository.
Pick the binary for your platform. Each download is accompanied by the full SHA-256 checksum for integrity verification.
-
macOS · Apple Silicon (arm64)
ulc_0.6.1_darwin_arm64.tar.gz1.5 MiB
Download →SHA-256: b66576e6ac1c7b452150952aebea505241ac4020045cf300dcefc7ff274eda1b
-
macOS · Intel (amd64)
ulc_0.6.1_darwin_amd64.tar.gz1.6 MiB
Download →SHA-256: 7ae923b281fc9d075b09885d4b83b5ba60662a9d6cdc400b5bde88e85de5a1e7
-
Linux · arm64
ulc_0.6.1_linux_arm64.tar.gz1.4 MiB
Download →SHA-256: 55ef1c39f4725fe2fa6cdb315f373419e87a75900dc1804fefaeb32ab2ef8d0d
-
Linux · amd64
ulc_0.6.1_linux_amd64.tar.gz1.6 MiB
Download →SHA-256: dc197c52238357dca216deb89a62f59ff15ec28e28bd545266fb9d022fb4e61b
-
Windows · arm64
ulc_0.6.1_windows_arm64.zip1.5 MiB
Download →SHA-256: 941643bd963462f12ea758020ad823cca079bb278883b0a1dc4f4b78b943d46d
-
Windows · amd64
ulc_0.6.1_windows_amd64.zip1.6 MiB
Download →SHA-256: c558a25349b9535ac2a54e281f2a3b515dbfda4a29e1c06f115281528c143795
Install instructions
macOS / Linux: Mark the downloaded file executable: chmod +x ulc-<platform>-<arch>. Move it onto your PATH, for example /usr/local/bin/ulc. Run ulc --version to confirm.
Windows: Download the .exe. Add the containing directory to your PATH environment variable. Open a new terminal and run ulc --version to confirm.
Previous releases
The five most-recent stable releases are listed below with version, release date, and a link to the release notes on GitHub. For the full release history, see the Releases page on the spec repository.