Inspiration
Drug interactions are one of healthcare's most preventable dangers — and one of the hardest to catch. With the rise of urgent cares, telehealth visits, and specialists who don't share the same EHR, a patient's health information is increasingly decentralized. Your psychiatrist prescribes an SSRI, an urgent care adds an NSAID for back pain, and nobody catches the bleeding risk because they're not looking at the same chart. We wanted to build something that makes this problem visible and actionable — a platform that surfaces risk proactively instead of waiting for an adverse event.
What it does
Rx Check cross-references every active prescription across 60,000 patients against 1,079 known drug interaction pairs and flags dangerous combinations by severity (CRITICAL, HIGH, MODERATE, LOW). Providers get a personalized dashboard showing which of their patients are at risk, with clinical details and suggested alternatives. Patients get their own portal — fully translated into their preferred language — that explains what their drug interactions mean in plain terms. An AI chat lets anyone ask natural-language questions grounded in the drug interaction knowledge base, and an interaction checker lets providers look up a new drug before prescribing to see if it conflicts with anything the patient is already taking. Providers can sign up for email alerts, and a scheduled task automatically drafts professional alert emails for critical interactions.
How we built it
Everything runs on Snowflake. We used Cortex CoCo as our primary development tool — it picked up from an initial Snowsight session where first drafts were written and carried the project from "nothing runs" to deployed. CoCo wrote and executed all the SQL, generated the drug interaction data via AI_COMPLETE (claude-sonnet-4-6) for 1,000+ drug pairs, built 3 semantic views and 2 Cortex Search services, created Restricted Caller's Rights procedures with proper caller grants, and iterated on the Streamlit app through multiple rounds of deploy-test-fix against the SiS runtime. The Streamlit app is a single-page design with role-based sidebar navigation — providers, patients, and admins each see only their pages. AI_TRANSLATE powers full-page translation across 9 languages, and Cortex Search (via SEARCH_PREVIEW) grounds the chat in real interaction data instead of hallucinating.
Challenges we ran into
The biggest challenge was the Cortex Agent's DATA_AGENT_RUN function refusing to resolve a warehouse for analyst tools — it returns "missing execution environment" regardless of how the warehouse is specified (in the spec, at runtime, via different roles). We tried every combination of role, spec format, and API path. The agent object is correctly configured and the semantic views work with Cortex Analyst directly, but the SQL function doesn't wire them together. We solved it by having the chat call Cortex Search + AI_COMPLETE directly as a grounded fallback, which actually works well.
The SiS Streamlit runtime was also older than expected — no st.rerun(), no st.chat_input, no hide_index on dataframes, and no st.navigation for controlling which pages appear in the sidebar. Each of these surfaced as a runtime error after deployment. We solved the navigation problem by removing the pages/ directory entirely and routing everything through app.py with a sidebar radio that only shows role-appropriate views.
Accomplishments that we're proud of
The interaction checker is genuinely useful — pick a patient, pick a drug, and instantly see every conflict with what they're already taking. It's the feature we'd actually want if we were prescribing. Full-page translation works. Not just some text — every title, label, alert summary, management recommendation, and disclaimer translates when the patient switches their language. The security model is real. Restricted Caller's Rights with proper GRANT CALLER / GRANT INHERITED CALLER — end users can call the procedures but have zero direct table access. This isn't demo theater; it's how you'd actually deploy it. CoCo built 90%+ of this project. The conversation was continuous: write, deploy, test in Snowsight, report the error, fix, redeploy. The halfbaked.md file was kept honest throughout — every shortcut is documented.
What we learned
Snowflake's AI functions (AI_COMPLETE, AI_TRANSLATE, Cortex Search) are production-ready and work well together. The RAG pattern of Search + AI_COMPLETE for grounded chat answers is simple and effective. Semantic views with proper TABLES/RELATIONSHIPS/DIMENSIONS/METRICS DDL are straightforward to create and Cortex Analyst queries against them correctly. The SiS runtime lags behind open-source Streamlit significantly. Building for it means testing every API call — what works locally may not deploy. CoCo is remarkably effective as a pair programmer for Snowflake-native development. Having it write SQL, check docs, run queries, debug errors, and manage deployments in a single conversation made this project feasible in a hackathon timeframe.
What's next for Rx Check
DrugBank Marketplace integration — Replace AI-generated interaction data with clinically validated data from DrugBank Biomedical Knowledge, giving the platform real clinical authority Side-effect overlap detection — When suggesting an alternative drug, check that it doesn't share side effects with the patient's other medications Live email delivery — Wire SYSTEM$SEND_EMAIL with verified provider emails from the self-service sign-up table Real authentication — SSO or Snowflake-native auth, replacing the session-state demo login FDA FAERS integration — Cross-reference interactions against real-world adverse event reports to surface population-level risk data alongside the clinical pharmacology
NOTE - Can only attach one file, check out the Halfbaked file in the github for what's actually working and what is faked out, all the details are there. It's say it's a 17 out of 20, it's most of the way there. Some of the language filter stuff isn't perfect and the drug database is partial by design.
Built With
- coco
- snowflake
- vscode
Log in or sign up for Devpost to join the conversation.