Inspiration

Heat warnings usually tell people that it is hot, but they do not always answer the immediate question: what should I do next?

I kept thinking about people who may be alone, have limited mobility, do not speak the local language, or simply feel overwhelmed by too much information. My first versions of HeatRelay also had too much text, especially on a phone. That led to a simple product rule: show one clear next action first, and keep the supporting details available without turning the screen into a wall of text.

That idea became HeatRelay: a Barcelona pilot that turns a short description of a heat situation into a practical, bounded next step.

What it does

HeatRelay offers three working scenarios:

  • Create a personal heat-action plan.
  • Create a plan for someone you care about.
  • Search separately for factual information about nearby cool places in the Barcelona demo area.

For a normal situation, HeatRelay can combine the person’s stated needs with current Open-Meteo context and verified Barcelona place data. It produces phased actions, useful items, explanations, and, when appropriate, a backend-verified place and a practical local phrase.

If a supported urgent warning symptom is explicitly reported, HeatRelay does not generate an ordinary plan. It switches to a fixed 112 emergency branch and bypasses weather, place selection, and model-generated planning.

The interface and action-plan output support 25 languages, including Arabic, Persian, Hebrew, and Urdu right-to-left layouts. Users can also choose Standard, Enhanced Visibility, or High Contrast.

HeatRelay is an informational pilot. It is not a diagnosis, medical advice, or a replacement for emergency services.

How I built it

I built the frontend with React, TypeScript, and Vite, and the backend with FastAPI and Pydantic. The production application is packaged with Docker and deployed as a single Fly.io Machine.

GPT-5.6 has two narrow jobs in the normal-plan workflow. First, it extracts only the facts stated in the submitted description into a closed schema. Second, it selects from backend-approved action, reason, item, phrase, and candidate-ID codes.

The model does not invent weather, phone numbers, addresses, opening hours, coordinates, official links, or place facts. Server code owns those facts, validates the model output, applies the urgent rules, and converts approved codes into the final localized response.

Weather context comes from Open-Meteo. Place information comes from a reviewed snapshot of Barcelona climate-shelter data. The standalone place search remains separate from the personal plan and uses a fixed Barcelona demo point rather than browser geolocation.

I used Codex as my main implementation environment across eight milestones. It helped me inspect and change the codebase, reproduce failures, write adversarial tests, build the multilingual and RTL architecture, harden the production boundary, and document the verification evidence. I made the product, safety, publication, and deployment decisions and reviewed the resulting behavior throughout the build.

Challenges I ran into

The hardest part was deciding what the AI should not be allowed to do.

HeatRelay deals with safety-sensitive information, so a fluent answer is not enough. I needed strict schemas, closed output codes, deterministic urgency rules, validated weather, approved place IDs, sanitized errors, and a fixed 112 path that cannot be weakened by generated prose.

Localization was another major challenge. Interface language, detected input language, requested output language, and text direction had to remain separate. The final implementation uses bundled catalogs rather than runtime machine translation.

The UI also changed substantially after real mobile checks. Some early screens contained too much explanatory text, the weather summary could overlap, and scenario cards looked interactive without doing anything. I simplified the content, made all three scenarios functional, added a standalone place search, unified the language controls, and repeatedly tested narrow screens and RTL layouts.

Accomplishments that I am proud of

  • A deployed end-to-end application using GPT-5.6 Structured Outputs.
  • One unified interface supporting 25 input and output languages.
  • Four right-to-left interface layouts.
  • A fixed urgent 112 branch that bypasses normal planning.
  • A separate factual Barcelona cool-place search.
  • Standard, Enhanced Visibility, and High Contrast modes.
  • More than 4,000 automated backend and frontend tests.
  • Verified mobile reflow, 200% Chrome zoom, reduced motion, keyboard focus, and one author-confirmed VoiceOver session.
  • Production HTTPS, readiness checks, security headers, request limits, rate limiting, and provider-budget controls.

I am especially proud that the product became simpler as the implementation became more rigorous.

What I learned

I learned that constraining an AI system can make it more useful, not less useful. GPT-5.6 handles the parts that benefit from language understanding, while deterministic code keeps control of safety decisions and public facts.

I also learned that accessibility and localization cannot be added at the end. They affect component structure, storage, focus behavior, validation, testing, and even how much information should be visible at once.

Most importantly, I learned to test the uncomfortable paths: malformed responses, contradictory facts, urgent symptoms, narrow screens, RTL text, provider timeouts, cleanup failures, and cost limits. Those tests changed the product for the better.

What's next for HeatRelay

The next step is independent native-speaker and safety review of the non-English catalogs. I would also like to add additional cities using reviewed local datasets rather than treating the Barcelona snapshot as universally applicable.

Future work could include carefully designed geolocation and routing, broader browser and assistive-technology testing, stronger multi-instance infrastructure, and continued usability testing with people who are especially vulnerable to heat.

For now, HeatRelay remains deliberately bounded: a working Barcelona pilot that tries to turn a stressful heat warning into one clear next step.

Built With

Share this project:

Updates