The problem
Outdoor crews make safety decisions in changing conditions: UV can rise, cloud cover can shift, reflective concrete, glass, steel, or water can increase exposure, and each worker has different protection and risk context. Most teams manage this with static forecasts, informal reminders, and spreadsheets.
Umbra turns that evidence into a clear operational decision: who should leave direct sun first, when, and why?
What Umbra does
Umbra is a B2B UV-safety planning agent for outdoor crews in construction, agriculture, delivery, and similar field operations.
A foreman moves through a guided workflow:
- Creates a local foreman and company workspace.
- Adds crew members with self-reported age, sensitivity, Fitzpatrick skin type, optional occupational-health markers, and acknowledgement.
- Uploads two site photos with an object name and location. Umbra combines current UV, temperature, cloud cover, time of day, visible surface context, shade observations, and albedo.
- Records each worker’s PPE/UPF, SPF level, time since sunscreen application, shade access, and placement on the worksite image.
- Opens a Morning Brief that identifies the highest-priority worker, proposes a protected 20-minute relief rotation, visualizes the route to shade, shows the operational trade-off, and requires supervisor approval.
The deterministic exposure engine calculates:
UV Index × sun/time factor × cloud factor × albedo factor
It applies the strongest sun-time factor from 11:00–16:00 and accounts for reflective materials such as glass, exposed concrete, steel, sand, and water. Worker risk also reflects heat, protection, sunscreen freshness, shade, self-reported risk context, and crew availability.
Why it matters
Sun safety is both an operational and compliance problem. Outdoor employers already need to document safety practices, communicate breaks and SPF reminders, and demonstrate that hazards were considered.
Umbra turns this into an explainable workflow rather than a static dashboard. The supervisor sees the evidence, the reasoning, the trade-off, and the next approved action. The goal is safer scheduling without losing sight of crew coverage and daily work progress.
Explainable decisions, not black-box advice
Every recommendation exposes:
- conditions: UV, weather, time, materials, and albedo;
- worker risk: current PPE, SPF, shade, and placement;
- trade-off: why this rotation preserves remaining crew availability;
- decision: who moves to shaded relief, when, and for how long.
Supervisor approval records the proposed break. It does not silently change a worker’s current site position.
Built with Codex and GPT-5.6
Umbra was created end to end with Codex and GPT-5.6 during OpenAI Build Week: product concept, architecture, React interface, Node.js API, deterministic safety engine, image-assessment demo, debugging, and documentation.
I used the Codex desktop app on Windows 11 for the initial build, then the Codex – OpenAI’s coding agent extension in Visual Studio Code. GPT-5.6 Terra was my primary development model; GPT-5.6 Luna was used when Terra was unavailable. As the workflow and system became more complex, I increased reasoning effort from Light to High and then Ultra.
All available hackathon Codex credits were used to build and refine Umbra.
The project also includes an optional server-side OpenAI Responses API architecture for structured evidence and vision assessments. The submitted demo remains runnable without paid API credentials: it uses a deterministic, clearly bounded fallback while keeping the exposure and scheduling engine authoritative.
Responsible scope
Umbra is operational decision support, not a medical diagnosis or legal guarantee. Medical markers are self-reported occupational-health context, and the app does not infer physiological traits from photos.
Built With
- codex
- css
- gpt-5.6-luna
- gpt-5.6-terra
- javascript
- node.js
- open-meteo
- openai-responses-api
- react
- react-router
- vite
- vs-code
- zustand

Log in or sign up for Devpost to join the conversation.