Inspiration

Have you ever taken your child to urgent care, only to face a long and uncertain wait when they needed timely care? I know what that feels like, and I wanted to make that experience less stressful for other families. When a child needs urgent care, parents may have to open multiple provider websites to learn how long they might wait and whether a clinic treats their child’s age group. Some providers publish explicit wait times, many do not, and missing information can be difficult to distinguish from current data. This search is especially challenging for families who are traveling and do not know the local healthcare system. I built CareCompass Kids to reduce that search cost. It brings provider-published wait information into one nearby comparison while clearly labeling information that is missing, stale, or temporarily unavailable.

What it does

CareCompass Kids is an Expo iOS and Android prototype for the San Francisco Bay Area. Parents can use an approximate device location or enter a ZIP code, choose a 10-, 20-, or 30-mile radius, and explore nearby care on a native map and proximity-ordered directory.

Every result leads with one of four clear states: a current provider-published wait, a stale previous wait, a temporarily unavailable source, or a prominent Wait time not available message. If Google Maps explicitly lists an urgent-care location as closed and no current provider wait exists, the same panel displays Closed and the next opening time when available. Provider update times, when published, Google-listed hours, and CareCompass check times remain separately labeled.

The experience stays centered on wait-time transparency. Provider-published wait minutes appear first; missing, stale, or unavailable values are labeled rather than estimated. Distance, reviewed pediatric age eligibility, people in line only when explicitly published, insurance, ratings, hours, and phone contact provide supporting context, while booking links remain secondary.

A source-linked Guidelines tab offers general information about when urgent care may help, when emergency care may be appropriate, and when to call 911. Emergency departments are clearly labeled and excluded from urgent-care ranking and GPT-5.6 comparisons.

How I built it

I built CareCompass Kids as a TypeScript monorepo containing an Expo SDK 54 React Native mobile app, a small Express API, and a shared package for facility types, distance calculations, ranking, emergency-language detection, and runtime validation.

Google Places discovers nearby urgent-care locations and supplies directory information such as coordinates, ratings, hours, and listed phone numbers. I deliberately separated discovery from medical eligibility: pediatric age policies and provider availability are validated against official provider sources rather than inferred from Google listings.

Provider-specific adapters retrieve only public, non-identifying information. They never submit symptom questionnaires, enter patient information, sign into portals, or automate authenticated booking systems. When a provider does not publish a current wait, CareCompass says so instead of generating an estimate.

GPT-5.6 powers the in-app CareCompass navigator through the server-side Responses API. It receives only a non-identifying question and an already-ranked snapshot of displayed urgent-care facilities. Strict structured output constrains it to supplied facts, while the prompt prohibits diagnosis, clinical triage, treatment advice, insurance guarantees, invented provider claims, and converting appointments or queue counts into inferred waits. If the model is unavailable or returns invalid output, the app falls back to deterministic results.

Codex accelerated the project from architecture through verification. It helped me scaffold and iterate on the monorepo, migrate the app from Expo SDK 52 to SDK 54, implement Google discovery and the native map, develop provider adapters and runtime contracts, investigate provider data sources, debug failures, write tests, and prepare the submission materials. ChatGPT-5.6 also helped me understand part of the Google Cloud API key and restriction setup.

Challenges I ran into

The greatest challenge was that healthcare availability data is incomplete and inconsistent. One provider may publish wait minutes, another may show appointment availability, and many publish no wait information at all. I had to resist treating these different signals as interchangeable. An appointment time, queue count, rating, or open-hours status cannot safely be converted into a wait estimate.

Validating pediatric eligibility was another major challenge. Google can discover urgent-care locations, but it cannot be treated as the authoritative source for the ages each clinic accepts. Some provider networks publish a minimum age, some have location-specific exceptions, and others state that they treat children without publishing an exact age. I created a source-review registry so that exact ages appear only when supported by an official provider source.

I also encountered several technical challenges:

  • The original app used Expo SDK 52, while the current Expo Go app on my iPhone required SDK 54.
  • A WebView-based Google map did not render reliably, so I replaced it with a native react-native-maps implementation.
  • Google Cloud billing, API enablement, and key restrictions required careful configuration.
  • Some provider wait information is loaded dynamically rather than appearing directly in the webpage HTML.
  • An older API process returned a retired data structure and caused a mobile rendering crash. I added schema versioning and runtime validation so an incompatible response now falls back safely instead of crashing the app.
  • Healthcare safety required clear boundaries between static educational guidance, deterministic emergency detection, and the GPT-5.6 comparison feature.

These challenges changed the product for the better. CareCompass became less about appearing to have complete data and more about making the limits and provenance of each fact clear.

Accomplishments that I'm proud of

I am proud that CareCompass does not hide missing information. A prominent Wait time not available message is more honest and useful than an invented estimate.

I am also proud that the app brings several decision factors into one understandable experience without losing its wait-time focus. Families can compare distance, reviewed pediatric age eligibility, hours, insurance information, ratings, phone contact, and provider sources while still seeing wait status first.

Other accomplishments include:

  • A working native map with location, ZIP entry, radius controls, and proximity-ordered results
  • Official-source validation for pediatric eligibility and age ranges
  • Provider-published wait retrieval with source and freshness labels
  • Clear distinctions between current, stale, temporarily unavailable, and unpublished wait information
  • Closed-hours presentation that remains separate from provider wait data
  • Deterministic emergency-language detection before any model request
  • A structured GPT-5.6 navigator with a reliable non-AI fallback
  • A reviewed Bay Area fallback directory that keeps the app testable when an external service fails
  • 52 passing unit tests, successful TypeScript validation, all 18 Expo Doctor checks passing, and a successful iOS bundle export

This was my first hackathon using Codex. Completing a working mobile app, API, safety architecture, testing suite, documentation, and public repository was an important personal accomplishment.

What I learned

I learned that transparency can be more valuable than artificial completeness. Missing data should remain missing rather than being interpreted as zero wait or replaced with an estimate.

I also learned how important it is to separate facts by source. Google is useful for discovering facilities and providing directory information, but official providers are the appropriate source for pediatric policies and wait claims. Even then, provider update time and CareCompass retrieval time must remain separately labeled.

The project taught me the value of defensive runtime validation. A mobile client and API may temporarily run different versions, but malformed or outdated data should never be able to crash the user experience.

I also learned that generative AI is most dependable when it has a narrow, clearly defined role. GPT-5.6 explains facts that have already been collected and ranked. Deterministic code remains responsible for emergency detection, distance calculations, ranking, validation, and fallback behavior.

Finally, I learned how much care healthcare software requires. Clear sources, privacy boundaries, cautious language, and professional clinical review are not optional details—they are fundamental parts of building responsibly.

What's next for CareCompass Kids

The priority before a public healthcare release is licensed pediatric clinician review of the Guidelines content. I would also add production rate limiting, source monitoring, automated alerts for provider-page changes, and fully restricted production API and map keys.

Future versions could:

  • Validate more urgent-care networks and individual locations
  • Add additional official provider-published wait sources
  • Expand beyond the San Francisco Bay Area
  • Support larger search areas for families who are traveling
  • Improve accessibility and multilingual support
  • Add a privacy-preserving way to report outdated facility information
  • Improve insurance-plan validation without making coverage guarantees
  • Study whether centralized information reduces parental search time or changes facility choice

I would also like to investigate the original research observation that only a subset of children’s hospitals publish wait information, but I would verify and cite the underlying study before presenting a percentage as a product claim.

The long-term goal is not to become another booking marketplace. It is to make CareCompass Kids a trustworthy, source-transparent way for families to understand nearby pediatric care choices and the wait information providers actually publish.

Built With

Share this project:

Updates