This is a submission for the Postmark Challenge: Inbox Innovators.
Quick Video Demo
What I Built
Postr is a powerful messaging / content creation app built around the idea of email-first interaction, powered by Postmark's very own inbound email parsing feature. Instead of building a third party app where users have to sign up, learn a new UI, and understand an app -- Postr provides an alternative: most of your time using it will be done through email, the most universally understood content/messaging medium on the web.
Users can initiate threads, gather responses, and finally generate beautifully themed AI-powered email responses — all without needing other participants to ever visit the app itself.
This core idea will be useful if you need to collaborate with other people who are not as tech savvy as you or even people who aren't very easy to convince to take their time to learn a new app.
Things Postr Can Create
Postcards are the center of Postr, and a postcard is some form of content generated by a collection of responses by participants who will not be using your app at all. A specific scenario will be explained later to further explain.
Here are the three main forms of content each postcard can take:
Polls/Survey/Group Decision
Prompt participants to decide something as a group. Collect and summarize the responses to arrive at a shared outcome. Great for group planning (e.g., choosing a restaurant, date, or gift).
Tributes/Sentiments
A collaborative tribute where each participant contributes a heartfelt message. Ideal for birthdays, weddings, farewells, or celebrating someone's achievement.
Recap/Memories
Summarizes what everyone shared in response to a prompt — like reflections after a group trip, a retrospective, or how people felt about a recent event or experience.
Demo
Try out the app yourself: https://postmark-postr.vercel.app/
Here's a general workflow of how you would use this app. A more specific/realistic scenario will be mentioned at the end to help you picture it more clearly:
Login/Register
Create Postcard
Start by creating a Postcard entry in Postr. You know your way around new apps, so your group is relying on you to spearhead this.
Fill all the necessary fields such as mood, theme colors, etc. This will affect the final result of the content.
You can also add notes to influence the end result.
Postcard: Waiting for Initial Email
If you click on your postcard on the left, you can view it in detail on the right.
Right now it's in its starting state, waiting for that initial email-- that email where you prompt your participants.
Send Initial Email
You can compose the email manually, just make sure you start your subject with [postcard id]
followed by your actual subject and add at least 2 CCs.
But a more convenient way is to just click the "Compose in Gmail" button, which will lead to Gmail's compose view with some prefilled attributes for your convenience.
This is Gmail's compose view. You can take advantage of its features like recipient autocomplete/suggestion.
Postcard: Waiting for Replies
Once you've sent the initial email, your postcard will enter the next stage: waiting for replies.
As you can see, it lists all the CCs that need to reply for you to send the final content email.
Now you just have to wait for your participants to respond.
IMPORTANT: Make sure to let your participants know to "Reply All" to make sure the response gets recorded
Click Send Email Button
Once all participants (CCs) have answered, a button appears. Click the "Send Postcard Email" button. This will take quite a bit, as this is the part where content will be generated.
Postcard: Content Email Generated
Once the email has been generated, you can view it directly in your postcard. But more importantly...
Final Email Sent as Part of the Original Thread
As you can see, the final generated postcard content email has been sent to you and all the participants.
Even better, it has been sent as part of the original thread. So all history of your conversation can be seen in one place.
Code Repository
How I Built It
Postr was built in Next.js with Tailwind CSS, TypeScript, Appwrite, AI email generation, and of course Postmark. But the core magic lies in how I integrated Postmark’s inbound email parsing to make email not just a feature, but the central interface.
✨ Inbound Email Parsing as the Core
Postmark allows you to set up an inbound email address (like anything@inbound.postr.app). Any email sent to that address gets parsed into a clean JSON payload that includes:
- Sender, recipient, subject
- Cleaned HTML and plaintext body
- Attachments
- Headers (e.g. In-Reply-To, References, Message-ID)
This lets Postr:
-Create new postcards based on the first inbound email
-Track threads and replies by matching headers
-Update the postcard in real-time based on replies
-Generate a final AI-crafted email that is sent to all participants
📨 Sending Final Content Email Postcard with Postmark's API
Of course, I needed to send the final generated content postcard to all the users. Postmark makes this easy with the /email
endpoint. You can learn more about it here.
I want to keep everything centralized and connected. All the replies will already be threaded automatically, but I needed to make sure that the final email also gets sent as part of the original thread.
For replies, users just need to click “Reply All” in their email client, it will handle the rest. This means only one participant ever needs to open Postr to contribute.
ButI still need to think about the final email and how to connect it to the original thread. Here's how I did it:
🧵 Threading with Email Headers
One of the biggest features I leaned on is threading. Postmark gives you access to the Message-ID
of parsed emails, and from there I use the In-Reply-To
and References
headers when sending the final reply.
But that's not everything you need for including an email in a thread. You also need to set the subject in this format Re: <original subject
. Luckily Postmark's inbound parsing also includes the subject (obviously).
So what you send to Postmark's outbound API should look like this:
curl --location 'https://api.postmarkapp.com/email' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-Postmark-Server-Token: <YOUR_SERVER_TOKEN>' \
--data-raw '{
"From": "your@email.com",
"To": "receiver@email.com",
"Subject": "Re: <ORIGINAL_SUBJECT>,
"TextBody": "Text body content",
"HtmlBody": "<html><body><strong>HTML BODY</strong>.</body></html>",
"MessageStream": "outbound",
"Headers": [
{
"Name": "In-Reply-To",
"Value": "<ORIGINAL_EMAIL_MESSAGE_ID>"
},
{
"Name": "References",
"Value": "<ORIGINAL_EMAIL_MESSAGE_ID>"
}
]
}'
IMPORTANT:
<ORIGINAL_EMAIL_MESSAGE_ID>
should come from the original email'sHeaders
property (Message-ID
), notMessageID
in the root level. You can get this when parsing the original email
For more info on how to thread with Postmark, here's a blog by Postmark. This is what I used and it was very useful in understanding threading.
🏖️ EXAMPLE: The Family Trip Scenario
Let’s say you want to plan a family trip. You use Postr to create a new postcard of type "Group Decision," and add a note to theme the postcard around "Love". Once created, Postr generates an initial email draft you can send via Gmail to your family, with two or more CCs.
The family members receive that email in their regular inboxes and simply reply with their preferences.
One cousin says: "Let’s go to Disneyland!"
Another replies: "SeaWorld could work, but honestly, Disneyland sounds fun."
As soon as all CCs reply, Postr updates the postcard and enables you to trigger the final postcard creation — a beautiful, expressive, HTML-formatted email generated by AI based on the group’s responses.
It gets sent back to all participants in the same thread, thanks to the headers and threading. From start to finish, the entire flow happened over email — no app downloads, no learning curve.
Here's the generated content:
Conclusion
Postr was built to demonstrate how inbound email can be a first-class user interface. Postmark made that not just possible but joyful to work with. It's fast, reliable, and delightfully simple to use. I can't wait to keep building with it.
Top comments (2)
Pretty cool, I’ve always wanted less logins and less learning curves for stuff like this
Building email-first apps with tools like Postmark’s inbound parsing is a game-changer for modern business workflows. Just as efficient email handling boosts productivity, we believe a smooth customer experience is key in retail as well. At our menswear shop in Raipur at nextlevelryp.com we’re exploring smart email integrations for order tracking and styling tips — because tech and fashion can go hand in hand!