I originally built and launched this as a SaaS, but even with code and policies in place that kept users' photos private, I figured everyone would feel more comfortable with a desktop app.
So, I threw out the server architecture and completely rewrote it as a 100% local desktop app for Mac and Windows.
How it works now: The app connects directly to Google's server from your computer, processes everything entirely on your system, and saves photos straight to your hard drive.
You can download your 50 oldest photos for free (no credit card required) just to see what's in there. If you want to download all the pictures in your account, it's a one-time payment of $29. No subscriptions.
If you have an old, pre-2010 Gmail account, definitely give it a spin. You'll be surprised at what you find deep in your archive.
I'd love to hear your feedback on the layout, scanning performance, or anything else.
TL;DR: I turned my SaaS into a local desktop app (Mac/Windows) that recovers decades of forgotten photos from your Gmail. 100% local, no cloud, no subscriptions, no AI.

Discussion (27 Comments)Read Original on HackerNews
Deselect everything, select "Mail", create export, wait until it's done, and then download the zip.
When you export Mail with Takeout, Google dumps your entire history into a huge .mbox file. If you have a 20-year-old account, you're downloading tens of gigabytes of raw text data, headers, and metadata just to get to the images. Once you have that huge file, you still have to figure out a way to extract and decode the image attachments from the raw email text.
Mail Memories just gives you what you want: the photos.
That said, if no AI is really important, I guess it's worth $29, though I can't tell if you used AI to build it or not from here.
Like, I just one-shot a script that does the same with Claude, after it listed 5 free projects that do the same, including one GUI. The whole thing took less time than writing this comment.
Now, if it were $2.99, I probably would have just paid you.
The OP had posted a detailed reply here as well, that they since deleted - I think because they didn't want to deal with all the pushback here.
I intentionally chose a local IMAP pipeline over the official Gmail API because of platform gatekeeping. To use the API for this, Google forces independent developers into a "Restricted Scope" tier, which requires an annual $15,000+ third-party security assessment.
Going the local IMAP route lets me bypass that completely while keeping user data 100% local and secure.
I'm assuming the author put in the effort to validate their program handles all kinds of pictures. With that assumption:
- how did *you* validate the one-shot script that Claude handed you works correctly?
- after all said and done, and getting it to work correctly, did you end up spending atleast $30 in time, effort and money?
I am curious how coding agents would affect the future of "micro apps" - apps/scripts that do one thing and just one thing very well.
For example I'm always 1-2 GB away from my Google account being full. I've pruned Google Drive to the absolute bare minimum.
I've had my Google account for a really long time. There's tens of thousands of emails since day 1. However, there's many emails that have attachments.
For example my friends or someone might have sent me a bunch of images and there's a very long email thread going on with them. I want to delete the 300 MB of photos without deleting the email thread. I don't think Google has a way to do this. I'd easily be able to free up multiple gigs of space if this were possible.
I've already bit the bullet and deleted the biggest offenders but I have a ton of emails with 1-2 attachments (pdfs, zip files, some images, etc.) that might "only" be 15 MB but I definitely don't want to delete the email since it has a record of something. Not just the attachment but the corresponding email chain.
Also is it not doable with Google takeout ( with Gmail )?
> For $30 you should sign your binary so you don't have a UAC popup.
How much does it cost to be able to sign a binary so you can deploy it on Windows without a UAC popup? How arduous is it?
> Also is it not doable with Google takeout ( with Gmail )?
It sure is. You do a takeout and iterate over the compressed mbox looking for media attachments. Then you write them out. The edge cases, and the actual value is ensuring you properly grab all the media dispositions.
I also have emails from people who like to zip up a bunch of pictures and then email them to me - my own script takes care of this detail but I wonder if most other tools, including this one does.
You can get a cert for $130-300/yr, and then you can use signtool to sign it.
Be honest, is "Emily D" a real person you got organic feedback from? Small thing that makes the vibed site off-putting.
It says "Storage: 1.3 GB saved", but then says it is Read-only.
The world needs more of this
I rebuilt the app because I was feeling that same fatigue. It felt like every cool new tool I looked at wanted to upload personal data to a remote server, hook it up to a third-party AI API, or charge a recurring fee.
The original version of the app actually was a cloud-based SaaS. But I figured people would feel significantly more comfortable having a sensitive tool like this run entirely on their own hardware instead of in the cloud like everything else. Making it local-first also makes it easier for people to download and try it out.
Yes, use Google Takeout if you want a full account archive. It's a pain if you just want to get your photos, though.
You have to deal with huge .mbox files, download gigabytes of unnecessary text, and sometimes you have to wait days for the export.
The short version is that Mail Memories lets you get the images you want instead of an all-or-nothing data dump.
Totally fair, though. In my defense, 98% of my time went into wrestling with IMAP parsing architectures, optimizing memory, and code-signing certificates instead of designing custom CSS layouts from scratch. I'll finesse the design in the future.
You're just using imapflow and their Gmail search method. Why are you making things up? https://imapflow.com/docs/guides/fetching-messages#gmail-spe...
You call that function with this query over and over again:
filename:(jpg OR jpeg OR png OR gif OR webp OR heic OR tif) after:${year}/01/01 before:${year + 1}/01/01
And then you call their download method: https://imapflow.com/docs/guides/fetching-messages#downloadi...
All you did was throw together a frontend, package it into Electron, paywall it, and try to obfuscate the code.
What part of that is "wrestling IMAP parsing architectures"?