This is a submission for the Postmark Challenge: Inbox Innovators.
What I Built
Gentle Inbox - An AI-powered platform that transforms harsh customer feedback into constructive, professional communication while preserving all important information.
Business owners often receive brutal customer feedback that, while containing valid concerns, can be emotionally devastating and demoralizing. Gentle Inbox acts as an emotional buffer, using AI to rewrite harsh criticism in a gentler, more professional tone while maintaining every factual detail and legitimate concern.
Key Features:
- Email-Based Feedback Collection: Customers send feedback to unique Postmark inbound addresses
- AI-Powered Tone Transformation: OpenAI GPT-4o-mini rewrites harsh language professionally
- Dual-View System: Business owners can toggle between original and softened versions
- Real-Time Processing: Instant transformation and dashboard updates
The Problem It Solves:
- Emotional Protection: Shields business owners from demoralizing feedback while preserving valuable insights
- Improved Response Rates: Professional tone encourages constructive dialogue
- Better Decision Making: Owners can focus on issues rather than emotional reactions
- Mental Health: Reduces stress and anxiety from harsh customer communications
Demo
🔗 Live App: gentleinbox.com](https://gentleinbox.com/)
Testing Instructions:
- Sign up for a free account at the demo link
- Create your first business.
-
Copy your unique feedback email from the dashboard (format:
feedback+[your-id]@gentleinbox.com
)
-
Send harsh feedback to test the transformation:
- Try: "Your service is absolute garbage and you people are completely incompetent!"
- Watch it transform to: "I'm quite disappointed with the service quality and have experienced some significant issues."
- View results in your dashboard with original/softened toggle
Test Credentials (if needed):
- Demo Email:
[email protected]
- Password:
PostmarkDemo2025
Code Repository
https://github.com/jburgoyn/gentle-inbox
Project Structure:
gentle-inbox/
├── frontend/ # React + Vite app
├── backend/ # Firebase Cloud Functions
├── firestore.rules # Database security rules
└── README.md # Setup and deployment guide
Key Technologies:
- Frontend: React 18, Vite, Tailwind CSS, Firebase Auth
- Backend: Firebase Cloud Functions, Firestore
- APIs: Postmark Inbound Parsing, OpenAI GPT-4o-mini
- Deployment: Firebase Hosting
How I Built It
Implementation Process
- Designed system architecture with Postmark webhook → Cloud Function → AI processing → Real-time updates
- Set up Firebase project with authentication, Firestore, and Cloud Functions
- Configured Postmark inbound server with webhook endpoint
- Built Postmark webhook handler to parse incoming emails and extract user IDs
- Integrated OpenAI API with carefully crafted prompts to maintain customer perspective while softening tone
- Created responsive React dashboard with Firebase Auth integration
- Built original/softened toggle feature for transparency
- Added sentiment analysis and basic analytics
- Implemented comprehensive error handling and fallbacks
Tech Stack Deep Dive
Postmark Integration:
export const inboundEmailWebhook = onRequest(async (request, response) => {
response.header("Content-Type", "application/json");
response.header("Access-Control-Allow-Origin", "*");
response.header("Access-Control-Allow-Headers", "Content-Type");
corsHandler(request, response, async () => {
const body = request.body;
// Extract businessId from email address (everything before @)
const publicId = body.OriginalRecipient.split('@')[0].split('+')[1];
// Use that public id to fetch the user and business.
// Call the cloud function handleInboundEmail to transform the email
const functionUrl = `https://us-central1-gentle-inbox.cloudfunctions.net/handleInboundEmail`;
const data = {
business: business,
body: body,
}
try {
axios.post(functionUrl, data, {
headers: {
'Content-Type': 'application/json',
}
});
logger.log("Successfully forwarded to handleInboundEmail");
} catch (error) {
logger.error("Error calling handleInboundEmail:", error);
}
return response.status(200).send();
});
});
AI Transformation: The most challenging aspect was crafting prompts that consistently maintain the customer's perspective while softening harsh language. After extensive testing, I developed a comprehensive prompt system that:
- Preserves all factual content and legitimate concerns
- Removes personal attacks and profanity
- Maintains appropriate urgency for serious issues
- Uses professional, constructive language
- Keeps the customer's voice and desired outcomes
Experience with Postmark
Postmark's inbound email parsing was incredibly developer-friendly. The JSON webhook format made it easy to extract all necessary information, and the documentation was clear and comprehensive. Key highlights:
- Reliable Delivery: 100% webhook delivery success during development
- Clean Data Format: Well-structured JSON with all email components
- Flexible Addressing: Easy to implement user-specific email addresses
- Great Documentation: Sample workflows made implementation straightforward
Challenges & Solutions
Challenge: Preventing AI from writing business responses instead of customer feedback transformation Solution: Extensive prompt engineering with specific examples and explicit constraints
Impact & Future Plans
Gentle Inbox addresses a real pain point for business owners, potentially improving mental health and response quality in customer service. Future enhancements could include:
- Advanced sentiment analysis and trends
- Industry-specific tone adjustments
- Integration with popular CRM systems
- Mobile app for on-the-go feedback management
- Multi-language support
This project showcases Postmark's versatility beyond traditional transactional emails, demonstrating how inbound parsing can enable innovative communication solutions that genuinely improve people's work lives.
Built with ❤️ and lots of coffee during the Postmark Challenge. Special thanks to the Postmark team for creating such developer-friendly tools!
Top comments (1)
Growth like this is always nice to see. Kinda makes me wonder if it’s the little habits that keep things moving or just not letting the stress win.