DEV Community

Dishebh Bhayana
Dishebh Bhayana

Posted on

Email-First Medical Reporting for Rural Communities

This is a submission for the Postmark Challenge: Inbox Innovators.

What I Built

I built a Rural Health Triage & Monitoring Dashboard that turns simple email messages into structured, actionable medical records — all powered by Postmark's inbound email stream.

The core idea was to create a lightweight and accessible health reporting system for people in rural or underserved areas, where smartphone apps or internet connectivity may be limited — but basic email access still exists.

Here’s how it works:

  1. Health workers or individuals send an email describing their symptoms and location to a designated email address.
  2. That email is captured via Postmark’s inbound webhooks, and a Node.js backend parses the request.
  3. The system analyzes the body of the email to extract symptom keywords and location data.
  4. An automated follow-up email is sent using Postmark’s transactional stream, providing:

    • A list of possible symptoms (based on keyword matching)
    • First-aid guidance and health tips
    • A list of nearby medical facilities (if any are found via OpenStreetMap)
    • Important disclaimers to encourage professional consultation
  5. The email is also stored in the system and displayed on a React-based dashboard that health administrators can access.

On the dashboard:

  1. Every medical email is logged as a clickable row in a records table.
  2. Clicking a record reveals full details: patient name (parsed from the email, if available), contact, symptoms, timestamp, reported location, and interaction history.
  3. Admins can assign cases to available healthcare workers using a dropdown menu.
  4. There’s also a secondary table that shows responders — people who have been assigned to past or current cases.
  5. The entire system is built with simplicity and usability in mind. No logins for reporters, no apps to install — just send an email, and the backend + Postmark handles the rest.

This project aims to bridge a real-world gap — using something as basic as email to connect patients and caregivers in low-connectivity regions.

Demo

Video Link:

UI Dashboard link: https://postmark-rural-health-frontend.vercel.app/

🧪 How to Test:
Please use dummy name, disposable email, and dummy email address to test, since the information will be visible on the UI. Emails will still be masked (see the screenshots below for reference)

Send an email to: 694a9f34c5ea169b9bd9c053d783abc0@inbound.postmarkapp.com

Example email format:

Subject: Urgent help needed!
Body:
Feeling nausea from morning, having stomach ache, and pain in muscles. Please help. I live at 121 Worcester Road Framingham MA 01701.
Enter fullscreen mode Exit fullscreen mode

While typing out the address, please try to avoid comma, as openstreet map sometimes doesn't parse the address correctly.

You'll receive an automated response with symptom-specific health tips.

The request will appear in the dashboard for medical volunteers to triage and track.

Code Repository

The project is open-source and available on GitHub:
🔗 https://github.com/Dishebh/postmark-rural-health

How I Built It

The system is built around three core components:

  • Email ingestion backend
  • Automated response system
  • Triage dashboard UI all stitched together with Supabase as the central data hub.

🧰 Tech Stack

  • ⚙️ Backend: Node.js + Express
  • 📬 Email Inbound/Outbound: Postmark (Inbound Webhooks + Transactional Stream)
  • 🗄️ Database: Supabase (PostgreSQL with Auth + RLS)
  • 💻 Frontend: React
  • 🗺️ Geolocation: OpenStreetMap + Haversine Formula

📩 Email Intake & Parsing

  • Users (typically field workers or patients) send an email to a Postmark inbound address.
  • The Node.js backend parses:
    • 📌 Symptoms using keyword extraction from the body.
    • 📍 Location using pattern recognition from free-form address text.
  • Parsed data is inserted into the medical_reports Supabase table for tracking.

Patient sending email:
Patient sending email

Patient received auto-generated email:
Patient received auto-generated email:

🧭 Location Processing & Facility Detection

📬 Auto-Reply System

  • Once the report is processed, the user gets a personalized health advisory via Postmark’s transactional stream.
  • Email includes:
    • ✅ Detected symptoms
    • 🩺 Immediate care tips
    • 🏥 Nearest medical facilities
    • ⚠️ Disclaimers about seeking urgent care if needed
  • All outbound emails are logged in an auto_reply_emails table for reference.

Patient received auto-generated email:
Patient received auto-generated email:

🧑‍⚕️ Triage Dashboard UI

  • Frontend is built in React with a clean, table-driven interface.
  • Displays all reports with sortable and clickable rows.
  • On click, a side-drawer shows:
    • 👤 Name
    • 📧 Email
    • 📝 Symptoms
    • 📍 Location
    • 🕒 Timestamp
    • 📚 Interaction timeline
  • A dropdown lets admins assign a responder (stored in the responders table) to each report.

Table to show patient details received via their email:
Table to show patient details received via their email

Please note that in above table, we also show an exclamation icon corresponding to patients that might require urgent help

Clicking on the patient opens up the details drawer:
Clicking on the patient opens up the details drawer

We can see the auto-generated email for the patient in the UI:
auto-generated email for the patient in the UI

Responders table to create/manage a responder:
Responders table to create/manage a responder

🗃️ Supabase Schema

  • medical_reports – Stores incoming parsed email data
  • responders – Contains healthcare volunteers/admin users
  • auto_reply_emails – Tracks the response messages sent out

Supabase tables

🐞 Challenges Faced

  • 🚫 Basic INSERT/UPDATE calls were silently failing — no server-side errors.
  • 💡 After hours of debugging, it turned out that Row-Level Security (RLS) was the culprit.
  • 🛡️ Fixed it by creating explicit policies for insert/update/delete tied to my service role — and then it all clicked.

Top comments (4)

Collapse
 
axrisi profile image
Nikoloz Turazashvili (@axrisi)

hey! this can be really cool if you add some kind of real advice generation, right now it seems to be just using some predefined symptoms/tips data. little dangerous to leave it like that :)

In health industry it's important to be careful when giving advice. Even LLMs are not the best option, but potentially some kind of RAG with lots of medical data connected to LLM, and roughly 10 Disclaimers that this was generated with AI and be careful should do the job :)

Keep up! Good luck!

Collapse
 
dishebh profile image
Dishebh Bhayana

Yes, thanks for the feedback! Planning to integrate LLM to it for some better results!

Collapse
 
dotallio profile image
Dotallio

Love how you made basic email the backbone for real-world medical help - so accessible. Do you see this working over SMS in the future for places with almost no internet?

Collapse
 
dishebh profile image
Dishebh Bhayana

Yes definitely a better idea! can maybe support email and sms, both.

Some comments may only be visible to logged-in visitors. Sign in to view all comments.