DEV Community

Cover image for πŸͺ™ LEDGR: AI-Powered Expense Tracker | Email-to-Expense Magic with Postmark & Gemini AI
Jackson Kasi
Jackson Kasi Subscriber

Posted on

πŸͺ™ LEDGR: AI-Powered Expense Tracker | Email-to-Expense Magic with Postmark & Gemini AI

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

What I Built πŸš€

Meet LEDGR - Receipt-Wise Ledger Pro πŸ“§πŸ’° - an AI-powered expense tracking application that transforms the tedious task of manual expense entry into a magical, automated experience!

Tired of manually entering every single expense? Just forward your receipt emails to LEDGR's dedicated address, and watch as Postmark's inbound parsing + Google Gemini AI automatically extract all the details - vendor name, amount, date, and category. It's like having a personal finance assistant that never sleeps!

The best part? You get smart budget alerts sent directly to your email when you're overspending. No more surprises at the end of the month! 🎯

Demo 🎬

🌐 Live Application

Try it yourself: ledger-mu.vercel.app

Test Credentials:

Or

Signup

Feel free to explore the dashboard, check out the expense analytics, and see how the system categorizes different types of expenses! The demo data shows real examples of processed receipts. πŸ“Š

πŸ—οΈ How It Works - Architecture Flow

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Email Receipt │───▢│  Postmark        │───▢│  Server Functionβ”‚
β”‚   (Send to      β”‚    β”‚  Inbound Webhook β”‚    β”‚  (Process Email)β”‚
β”‚   app email)    β”‚    β”‚                  β”‚    β”‚                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                       β”‚                       β”‚
         β”‚                       β”‚                       β–Ό
         β”‚                       β”‚              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β”‚                       β”‚              β”‚   AI Processing  β”‚
         β”‚                       β”‚              β”‚   (Gemini AI)    β”‚
         β”‚                       β”‚              β”‚   Extract Info:  β”‚
         β”‚                       β”‚              β”‚   β€’ Amount       β”‚
         β”‚                       β”‚              β”‚   β€’ Vendor       β”‚
         β”‚                       β”‚              β”‚   β€’ Date         β”‚
         β”‚                       β”‚              β”‚   β€’ Category     β”‚
         β”‚                       β”‚              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                       β”‚                       β”‚
         β”‚                       β”‚                       β–Ό
         β”‚                       β”‚              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β”‚                       β”‚              β”‚   User-Specific  β”‚
         β”‚                       β”‚              β”‚   Database       β”‚
         β”‚                       β”‚              β”‚   Update         β”‚
         β”‚                       β”‚              β”‚   (Supabase)     β”‚
         β”‚                       β”‚              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                       β”‚                       β”‚
         β”‚                       β”‚                       β–Ό
         β”‚                       β”‚              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β”‚                       β”‚              β”‚   Dashboard      β”‚
         β”‚                       β”‚              β”‚   (View & Edit)  β”‚
         β”‚                       β”‚              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                       β”‚                       β”‚
         β”‚                       β”‚                       β–Ό
         β”‚                       β”‚              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β”‚                       └─────────────▢│   Budget Alerts  β”‚
                                                β”‚   (Email via     β”‚
                                                β”‚    Postmark)     β”‚
                                                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Enter fullscreen mode Exit fullscreen mode

Code Repository πŸ“

Receipt-Wise Ledger Pro

A smart expense tracking application that automatically processes receipt emails and manages your finances.

Repository: https://github.com/jacksonkasi1/ledger.git

What is this project?

Receipt-Wise Ledger Pro is a web application that helps you track expenses by automatically processing receipt emails sent to a dedicated email address. When you send receipt emails to the configured address, Postmark's inbound webhook captures them and forwards the data to our server function, which uses AI to extract expense information and updates only your personal expense records.

How it works

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Email Receipt │───▢│  Postmark        │───▢│  Server Functionβ”‚
β”‚   (Send to      β”‚    β”‚  Inbound Webhook β”‚    β”‚  (Process Email)β”‚
β”‚   app email)    β”‚    β”‚                  β”‚    β”‚                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                       β”‚                       β”‚
         β”‚                       β”‚                       β–Ό
         β”‚                       β”‚              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β”‚                       β”‚              β”‚   AI Processing  β”‚
         β”‚                       β”‚              β”‚   (Gemini AI)    β”‚
         β”‚                       β”‚              β”‚   Extract Info:  β”‚
         β”‚                       β”‚              β”‚   β€’
…

How I Built It πŸ› οΈ

My Journey with Postmark πŸ’Œ

Building LEDGR was an incredible journey that really opened my eyes to the power of email-driven applications! When I first discovered Postmark's inbound email parsing, I knew I had found something special.

The "Aha!" Moment: Most expense trackers require manual entry, but we all get receipt emails anyway. Why not just forward them and let AI do the heavy lifting? That's where Postmark's inbound webhooks became the perfect bridge between email and intelligent processing.

Tech Stack 🧰

  • Frontend: React + TypeScript + Vite βš›οΈ
  • UI/UX: Tailwind CSS + Radix UI for that clean, modern look 🎨
  • Backend: Supabase (Database + Auth + Edge Functions) πŸš€
  • AI Processing: Google Gemini AI (the real MVP for data extraction!) πŸ€–
  • Email Magic: Postmark Inbound + Outbound (the star of the show!) ⭐
  • Deployment: Vercel for seamless hosting 🌐

Implementation Deep Dive πŸ”

1. Postmark Inbound Setup πŸ“¨
Setting up Postmark's inbound processing was surprisingly smooth! I configured a dedicated email address that triggers a webhook to my Supabase Edge Function whenever someone forwards a receipt.

2. AI-Powered Data Extraction 🧠
Here's where the magic happens - when Postmark captures an email, I send the content to Google Gemini AI with a carefully crafted prompt that extracts:

  • Vendor/merchant name
  • Purchase amount
  • Transaction date
  • Expense category
  • Individual items (when available)

3. User-Specific Security πŸ”’
One crucial aspect was ensuring data privacy. The system only processes emails from authenticated users and maps them to their specific accounts. Your expenses stay yours!

4. Smart Budget Alerts 🚨
Using Postmark's outbound API, LEDGR sends personalized budget alert emails when spending exceeds set limits. It's like having a financial guardian angel!

Challenges & Lessons Learned πŸ“š

The Plot Twist: Right before submission, my Postmark account got temporarily restricted! πŸ˜… But this actually became a blessing in disguise - it forced me to build robust logging and manual features that made the app more comprehensive.

Key Learnings:

  • Postmark's reliability is incredible - even during my account hiccup, I could see all the successful processing in the activity logs
  • Email-driven applications open up so many creative possibilities
  • The combination of email parsing + AI creates truly magical user experiences
  • Always build fallback features (the manual expense entry saved my demo!)

What Makes LEDGR Special ✨

πŸ”„ Automatic Processing: Forward email β†’ AI extracts data β†’ Expense logged. That's it!

πŸ“± Progressive Web App: Works seamlessly on desktop and mobile with Dark & Light mood support πŸŒ’

πŸ“Š Smart Analytics: Beautiful charts and insights to understand spending patterns

⚑ Real-time Updates: Thanks to Supabase's real-time features, everything syncs instantly

🎯 Budget Intelligence: Proactive alerts prevent overspending

Future Possibilities πŸš€

The foundation is solid, and I'm excited about what's next:

  • PDF Receipt OCR: Process receipt attachments, not just email text
  • Multi-currency Support: For the global travelers out there
  • Banking API Integration: Automatic transaction imports
  • Team Expense Management: Share receipts and budgets with family/colleagues
  • Tax Preparation Tools: Smart categorization for tax season

Why Email-First Finance? πŸ’‘

Email remains the most universal communication tool - everyone has it, everyone uses it. By leveraging Postmark's robust infrastructure, LEDGR transforms existing email workflows into intelligent financial management. No new habits to learn, no additional apps to remember - just forward and forget!

A Big Thank You πŸ™

Huge shoutout to the Postmark team for creating such developer-friendly tools and hosting this amazing challenge! Building email-driven applications with Postmark was genuinely enjoyable - the documentation is top-notch, and the API is a dream to work with.

This project has convinced me that email-first applications are the future. When you combine Postmark's reliability with modern AI capabilities, you can create truly transformative user experiences! 🌟


Ready to try receipt-free expense tracking? Visit ledger and see the future of personal finance management! πŸ’«

Top comments (12)

Collapse
 
nevodavid profile image
Nevo David

pretty cool tbh - i always end up with a pile of receipts in my inbox, so just forwarding them sounds way less stressful. you think this kind of setup actually changes how people budget or just makes it easier to ignore stuff?

Collapse
 
jacksonkasi profile image
Jackson Kasi

Thanks for your question! 😊 Some apps do auto-capture card transactions, so email forwarding might not be needed for everyone. But setting up auto-forwarding is super helpful when card data isn’t picked up or for receipts from different places.

This method is actually really useful in business too. For example, one of the project, we use a similar approach for our fleet management system. Since Touch 'n Go (Malaysia’s payment system) doesn’t offer APIs, we just parse their expense emails to track driver expenses automaticallyβ€”it works great! 🚚

So, while it might not change habits for everyone, email parsing is a simple and reliable way to capture expenses, especially when other options aren’t available

Collapse
 
meenakshi052003 profile image
Meenakshi Agarwal

This is a smart idea! Using email to track expenses means people don’t need to change habitsβ€”they just forward what they already get. I really like how it combines real tools like Postmark and Gemini AI to make things easier. The budget alerts and clean design make it even more helpful.

Collapse
 
jacksonkasi profile image
Jackson Kasi • Edited

Thank you so much! πŸ˜ƒ I really appreciate your thoughtful feedback. My goal was to make expense tracking as easy and natural as possible, so it means a lot to hear that you found the email approach and budget alerts helpful. I’m glad you liked the design too! If you have any more ideas or suggestions, I’d love to hear them. Thanks again for your support! πŸš€

Collapse
 
meenakshi052003 profile image
Meenakshi Agarwal

Sure, I'm also now deeply getting into Agentic AI and related stuff, will reach out if something useful I could identify. Thanks and keep this good work up!

Thread Thread
 
jacksonkasi profile image
Jackson Kasi

Thanks! Wishing you the best as you dive into Agentic AI β€” really appreciate your kind words and support!

Collapse
 
dotallio profile image
Dotallio

I love how you used the email inbox as the entry point - makes it feel frictionless. Have you thought about adding banking API integration next?

Collapse
 
jacksonkasi profile image
Jackson Kasi • Edited

Thanks! πŸ™Œ Banking API integration is just an idea - honestly, the feasibility is pretty low with all the approval processes and restrictions.

But the email approach actually works great! We use something similar at one of our project for fleet management system. Touch 'n Go (Malaysia's payment system) doesn't have public APIs, but they send expense emails. So we parse those emails to automatically track driver expenses - works perfectly! 🚚

Sometimes email parsing is more reliable than waiting for APIs that may never come. Almost every service sends transactional emails anyway! πŸ“§

Have you worked with banking APIs before? Curious about your experience! πŸ€”

Collapse
 
ayesha_imr profile image
Ayesha Imran

Um, this is exactly like the app I made and posted a day ago, and even the name is same wtf????

Collapse
 
jacksonkasi profile image
Jackson Kasi

Hey, I understand your concern, but I can assure you that the idea and name for my app were developed independently.

"LEDGR" is a pretty common word used in the fintech and crypto space, so it’s not something exclusive or unique to either of us. I actually wasn’t aware of your post or your project until now β€” just saw your profile for the first time, so I had no way of knowing.

It’s totally possible we both landed on the same name or idea around the same time β€” this kind of thing happens often in tech. That said, I’m happy to chat more if you’re open to it. No bad intentions here, just building something I’m genuinely passionate about.

Some comments may only be visible to logged-in visitors. Sign in to view all comments. Some comments have been hidden by the post's author - find out more