This is a submission for the Postmark Challenge: Inbox Innovators.
What I Built 🚀
MarketMail – a crowdsourced produce‑price exchange for Uganda & East Africa that runs entirely by e‑mail.
Farmers or enumerators send a simple price list to [email protected]
; Postmark’s inbound webhook feeds the data into a Node.js API, which:
- Parses and validates the e‑mail (body or CSV/XLSX attachment).
- Normalises units/currency and stores records in MongoDB.
- Calculates daily deltas and 7‑day averages.
- Sends the sender an automated market‑trend report.
- Publishes an open JSON API and a React dashboard so anyone can view live prices.
The flow works from any basic e‑mail client, so even users on feature phones with intermittent data can contribute and benefit.
Demo 📹
Live URL: https://marketmail.vercel.app
Test: e‑mail the sample below to [email protected]
.
Country: Uganda
Market: Nakasero
Date: 2025‑05‑28
Maize (kg): 1850
Beans (kg): 2950
Tomatoes (crate): 9800
You’ll receive a reply within ~10 s containing a cleaned table and a mini market report. The dashboard at https://marketmail.vercel.app/dashboard?market=Nakasero
will update automatically.
Code Repository 🗄️
https://github.com/Cank256/market-mail  (MIT licence)
How I Built It đź”§
- Email layer: Postmark inbound/outbound (signature verification, bounce hooks).
- Backend: Node.js 20, Express, TypeScript, Zod validation.
-
Parsing: RegEx + optional OpenAI for fuzzy headers;
papaparse
/xlsx
for attachments. -
Data: MongoDB Atlas (
MarketPrice
schema, aggregation pipelines). - Front‑end: React 18 + Vite, Recharts, Tailwind CSS + shadcn/ui.
- CI/CD: GitHub Actions → Vercel.
- Accessibility: Plain‑text fallbacks, semantic HTML, dashboard passes WCAG 2.1 AA.
-
Dev‑experience: Detailed
PROJECT.md
, Jest tests cover parser & API routes.
Team: solo submission — Caleb Nkunze @cank256.
Top comments (0)