12 years remote across marketing, content and web development. Now building AI products and documenting the journey.
I kept documenting client sites a page at a time, twice over for desktop and mobile, then renaming every file by hand. Paste a URL and SiteHaul reads a sitemap and captures the whole site in one run, named from the URLs, in a folder you can drop straight into Figma or your portfolio, with each page's text saved as Markdown if you want it. It's a native macOS app because the work has to happen on a real browser on your own machine: that keeps client sites local, and it means no server bills and no liability for rendering other people's pages.
Live · Electron · Playwright · Next.js · Vercel · Cloudflare R2 · Polar · built with Claude Code sitehaul.app →
PostDecks came out of a recurring annoyance: clients asking how a post would actually look on LinkedIn or Facebook, with emails not cutting it and scheduler logins being a hassle for them. It previews one caption and image set across X, LinkedIn, Instagram and Facebook, matching each platform's cropping and caption rules, then exports a PDF or PNGs for approval. It runs entirely client-side, so nothing a client shares ever leaves the browser.
Live · Next.js · React · Tailwind · html2canvas-pro · jsPDF · Vercel · built with Claude Code postdecks.com →
Part product, part market research, part sandbox for exploring what's possible. Most people struggle with the blank chat box: they open ChatGPT, type a vague sentence, and get a generic answer back. So I built a collection of paste-and-go tools, free prompts and guides for busy normies who'd benefit from AI but won't sit down to engineer a prompt. If you're already comfortable prompting, just use Claude directly. For me it's a fun way to discover which problems are worth going deeper on.
Live · Next.js · Supabase · Vercel · Polar · built with Claude Code notimetoprompt.com →
Built it because I'm the crypto guy in my family and my brothers wouldn't stop asking when the next bull market was coming. It started as a one-page vibe check. Now it's 15 signals scored against fixed thresholds, majority rules, with a page explaining every signal and a methodology that openly discloses the thresholds, the overlaps, and the two contextual indicators it deliberately doesn't count. No database, just live APIs and caching.
Live · Next.js · Vercel · built with Claude Code isitabullmarketyet.com →
A white-label Instagram growth service that I grew to $13k MRR, then watched go to zero. I was the supplier in a business where I should have been the retailer: music management agencies resold my service at a much higher margin. When Instagram cracked down on automation, costs spiked and results dropped, but the agencies expected the same performance at the same price. When they pivoted, they took their customers with them. The real lesson wasn't pricing, it was who owns the customer relationship. They did. I didn't.
$260K verified all-time revenue Verified on TrustMRR →A decade of SEO, content and audience building that turned a personal travel blog into a profitable publication with a real community behind it.
Peaked at 1,000 daily readers · 600K+ Instagram posts tagged #thattravelblog thattravelblog.com →A give-back cycle built into the travel blog: 100% of e-guide sales were recycled into micro-loans for entrepreneurs in underserved communities, then re-lent as they were repaid.
£10,000+ in loans circulated See the team on Lendwithcare →A decade of travel photography given away free on Unsplash, now among the top 10% of contributors by reach.
35M+ views · 250K+ downloads unsplash.com/@thattravelblog →
















