I post on X. Not professionally, but a lot — usually about markets, sometimes about whatever I'm building. Like everyone else, I had a Downloads folder full of charts, headshots, screenshots, and memes I'd reuse weekly. And like everyone else, I lost 20-30 seconds every time finding the right one. This post is about how a recurring 30-second annoyance turned into Contspot.
The trigger moment
One morning $TSLA gapped up 8% pre-market. I had a chart screenshot from a week earlier showing the run-up. I wanted to post it within 60 seconds — that's when the market was most interested. I spent 90 seconds finding the file.
By the time I posted, the timeline had moved on. The image was right there, in my Downloads, under Screenshot 2026-03-08 at 09.41.13.png. I had no way to find it that didn't involve scrolling.
What I tried before building anything
For a few weeks I tried fixing this without writing code:
- Rigorous naming. Every screenshot got renamed within 30 seconds of capture. Worked for about a week. Discipline collapsed during the next news cycle.
- A dedicated Drive folder with tags. Better than Downloads but I still tab-switched, searched, downloaded, then dragged. The friction was lower but not gone.
- A Notion database with image previews. Powerful but slow — loading 80 images took 4-6 seconds and the thumbnails were too small for fast visual scan.
None of these worked because they all required leaving the X composer. The compose tab was the only place I cared about. Every other surface was friction.
The realization
The fix had to live inside the X composer. That meant a Chrome extension, not a web app. The extension would inject a button into the toolbar, open a popup with my library, and let me attach with one tap. The web app would exist only for upload + organization — never for day-to-day consumption.
That mental model is what Contspot still is today: a private graphics library where curation happens in the browser and consumption happens inside the X composer. Two surfaces, one workflow.
What I learned shipping it
A few things that surprised me:
- The Chrome extension was the hardest part. X's DOM changes constantly. We use three fallback strategies to find the toolbar and three more to attach the image. Most of the code is robustness to a UI we don't control.
- Most users don't want team features. When I asked beta users, "would shared libraries help?", the answer was almost universally no. The problem people wanted solved was personal: their own reuse of their own images. Team plans went on the back burner.
- Free is the real product. 100 graphics covers about 80% of the people who try Contspot. Pro exists for the heavy users — but the free plan has to be great, because that's where the workflow gets proven.
What's next
The honest version of what's on the roadmap:
- Chrome Web Store listing (currently load-unpacked)
- Stripe live billing fully turned on
- Welcome / quota / receipt emails via Resend
- Team plans, eventually — once enough people ask
- Other platforms (LinkedIn, Bluesky, Threads) — last
If any of this sounds useful, try the free plan and tell me what's broken.