This is a submission for the Postmark Challenge: Inbox Innovators.
What I Built
InboxOps is a powerful AI-augmented operations platform that transforms inbound emails into real-time dashboards — using Postmark's inbound email parsing as its foundation.
- A customer emailed [email protected]: "My card was charged twice."
- An employee sent to [email protected]: "I need leave from June 15."
- A vendor mailed [email protected]: "Attached is this month’s invoice."
- A manager forwarded to [email protected]: "Approve $3,000 budget?"
And all those inboxes are
- Fragmented
- Human-dependent
People were copy-pasting from Emails into Tickets. Approvals were lost in threads. Support issues were never tagged. There was no single dashboard to see anything.
Inboxops automate workflows from:
- 📦 Customer Orders
- ✅ Approval Requests
- 🛠️ Support Tickets
- 🧑💼 HR / Leave Requests
- 🙋 Customer Enquiries
InboxOps turns every structured or unstructured email into actionable items using Postmark + LLMs, and visualizes them in a modern, modular dashboard, and helps create APIs to use in Internal Dashboards.
Single inbox automatically:
- Understand the intent (order, complaint, HR, etc.)
- Summarize the message using AI
- Assign tags and priority levels
- Route to the right internal dashboard
- Trigger concerned workflows
Demo
Code Repository
https://github.com/DYNAMICMORTAL/inboxops
DYNAMICMORTAL
/
inboxops
InboxOps – Automate operations directly from your inbox using Postmark + AI. Real-time email parsing, classification, dashboards, and replies. Built for the Postmark Challenge: Inbox Innovators 2025.
📬 InboxOps
🚀 AI-powered workflow automation platform that converts inbound emails into live, actionable dashboards — built with Postmark and LLMs.
✨ Highlights
- 📥 Postmark Inbound Email Parsing → clean JSON
- 🧠 LLM-powered Summarization, Classification, Tags, Priority
- 🗂️ Route to: Orders, Approvals, Support, HR, Enquiries
- 🖥️ Clean modular dashboard UI with filters, pills, modals
- 💬 Built-in Enterprise AI Chatbot for querying
🖼️ Screenshots
🛠️ Tech Stack
- FastAPI — Backend & APIs
- Postmark — Inbound Email Parsing
- Gemini Flash (LLM) — Summary, tags, criticality
- SQLite + SQLAlchemy — DB & ORM
- Jinja2 + Tailwind CSS — UI templates
- Render.com — Hosting (Demo)
🧠 AI Chat Demo
InboxOps includes a native AI chat modal that uses parsed email context to answer questions like:
- “Show recent approvals.”
- “Track order ODR-20240603...”
- “What is the trend in leave requests?”
🔗 Live Demo
Screenshots
Order information, items, quantity, price extracted from Email Content
Customer enquiries, support, issues, requests, tickets are assigned Ticket ID concerned
Customer support tickets management
How I Built It
- 🟧 FastAPI (Python) — REST APIs and webhook handling
- 📬 Postmark — Inbound webhook parsing + email confirmation sending
- 🧠 Gemini 2.0 Flash — Summary, classification, tag + urgency prediction
- 🎨 Jinja2 + TailwindCSS - UI components, dashboards, modals
- 💾 SQLite + SQLAlchemy - Fast storage and search for parsed emails
- Email - Postmark Inbound Webhooks for real-time email ingestion
- 🧩 Modules:
-
Orders
: Parse and confirm orders -
Approvals
: HR and budget workflows -
Support
: AI-tagged issues with urgency -
HR Requests
: Leave and policy handling -
Enquiries
: Customer request viewer -
AI Chat Assistant
: Modal chatbot for agents
-
- Features : Custom parsers for orders, approvals, and support tickets AI-powered accurate summary of Mail content and tag extraction Dynamic dashboards and modals Enterprise AI chat with recommended prompts
1️⃣ Inbound Email Parsing via Postmark
When a mail is sent to the Postmark Inbound Email Stream, the Postmark parses the message and sends a full JSON payload.
{
"From": "[email protected]",
"Subject": "Leave Request: July 2-5",
"TextBody": "Hi, I’d like to apply for leave from July 2 to 5 for personal reasons.",
"Attachments": [],
"Headers": [...],
...
}
It also shows if the Email follows the DKIM Signature and SPF Policy for making Email secure. I made this JSON data to be received by /inbound-email
and inserted into the emails table with all metadata and raw content stored.
I wanted to distinguish Email types because of my system design. I wrote a basic logic of Keys for Order Emails ODR, HR Workflows, and Approval Emails APL, Customer Enquiries as SUP with including YYYYMMDD00serialNumber.
2️⃣ Intelligent Email Understanding with Gemini
The Email type is to be identified. I thought of using RegEx, a dictionary of known type of words and phrases. To improve the accuracy of classification, alongside parsing the JSON to use the Google Gemini LLM Model, the inbound email is parsed by a prompt chain to extract:
Type: ORDER, SUPPORT, APPROVAL, HR, ENQUIRY
Summary: A 1–2 line abstract
Tags: e.g. ["leave", "login issue"]
Criticality: Low, Medium, High, Urgent
These fields are stored alongside the email and used to guide logic and UI rendering.
3️⃣ Backend Logic & Storage (FastAPI + SQLAlchemy)
The backend routing of each email to trigger Workflows is important. The Dashboard is dynamic for real-time Email communications in an Enterprise. For Inboxops to serve scalability, FastAPI is the best choice.
The routings are as follows:
/u - The Inboxops Inbox
/dashboard or /u?page=dashboard - Support, Issues, Ticket, success rate, Dashboard Panel
/new - Customer Support Tickets Chat for the concerned team to have an in-depth chat
/support-customer - Tickets Management (Email to Ticket).
/ai-chat - Popup Enterprise AI LLM Chat that uses JSON context, summary, and tags to serve every query in detail. (Present at Header)
Enterprise Inboxops AI LLM Chat:
Example Queries
What is the latest Approval Mail about?
What do the emails discuss in the quarter 2025 - 2026?
What is the time when Employees take the most leave, and how does it affect the Customer Enquiries Supports Tickets?
Track me order ODR-202606030002
The last thing in development is continuous development, improvement.
From the moment an email lands, it’s transformed into a clean JSON payload with headers, bodies, metadata, and attachments — ready to power whatever comes next.
That kind of reliability made it easy to focus on the product, not the plumbing.
I built Inboxops on this foundation.
Here are the next features on the roadmap:
Add Slack/MS Teams integration Inbound Email to Slack MS Teams and Slack MS Teams to Outbound Email using Postmark.
Sentiment analysis for customer complaints.
CRM Integration for Internal Team Dashboards
Well, if you made it this far in the post, here is a thank you 💛 to you 😁✨
Top comments (13)
FYI the link to demo is not working: inboxops.render.com
The link had a silly typo i didn't knew it was .onrender.com.
The Submission is updated with Link!
good :) now I can access it. Any way I can test it? maybe sending email with some fake employer request?
Yes, the Email address is:
The schema to send an Employee or HR Leave application is suggested:
Subject: xyzabc
Body: Start Date, End Date
The body can contain anything!
thanks! jsut sent email and saw it in inbox, but not in other parts of dashboard, should I make some action to trigger it go through the flow?
Yes, the Ticket was not getting created, the whole workflow was at a standstill due to Postmark not recognizing the email address.
I made some changes in the backend routing code, it should work just fine now!
now i see it in other tabs, but it is not supposed to send me any resolution of issue right? at this stage i guess it is not implemented yet? potentially if certain flows are set up it will be able to resolve certain use cases?
You're absolutely right! At this stage, InboxOps focuses on intelligently parsing, classifying, summarizing, and dashboarding inbound emails using Postmark + LLMs.
While it doesn't send automatic resolutions yet, it's architected to make that possible. The foundation is in place:
The next step (on roadmap) is to help create APIs for the Internal team systems that can directly attach replies to which response by email automation using Postmark Outbound Email Stream is to be done.
I think to make this submission stronger, you can make simple emulation of response. Like on receive of webhook to process as you already do + simulation of real work done:
Also ALERT 🔴🔴🔴 you might want to check your repo for leaked gemini and postmark tokens.
Thanks a lot for the guidance, I will work on this to update Inboxops!
Super impressive how you’ve combined Postmark parsing with LLMs to automate and unify so many workflows. Curious, how did you approach prompt chaining for reliable intent and summary extraction across really different email types?
Yes when it came to extracting intent, summary, tags, and criticality from different email types Orders, HR, Customer Enquiries support, Approvals I used structured prompt chaining.
The Postmark Inbound Email JSON is passed to LLM to return in a structured JSON format:
{
"intent": "support",
"summary": "Customer reports duplicate charge and requests refund.",
"criticality": "high",
"tags": ["refund", "billing", "duplicate"]
}
This solved me the consistent storage of data. Entirely the workflows cannot just rely on LLM. To improve reliability across types: Order Emails, Approvals, HR, Customer Enquiries Support Requests Issues Tickets, I did:
been cool seeing steady progress - it adds up. you think the roadmap or just showing up every day keeps stuff moving the most?
Some comments may only be visible to logged-in visitors. Sign in to view all comments.