CategoryAI / Stripe experiment
StackNext.js 14 on Vercel
GenerationOpenAI image API
PaymentsStripe one-time, $2.99
Build timeweekend experiment
MonetizationCSS watermark overlay that lifts on paid unlock
the story
RushmoreMe is the smallest, silliest project on this list, and on purpose. Upload a photo of a face. Get a Mount Rushmore image with that face carved into the mountain. Pay $2.99 to lift the watermark. That is the whole product.
The point of building it was not the novelty — it was proving a reusable pattern: a one-shot AI generation product with a one-shot payment, deployed in a weekend, with a monetization mechanic simple enough to explain in one sentence. The CSS watermark overlay is key to the pattern. Instead of a full gate, the user sees the image immediately, the watermark is obvious, and paying lifts it. Low friction, high intent.
It was built in collaboration with Claude — scoped, planned, implemented, and iterated as a prompt-engineered fast-ship exercise. The result is currently live at rushmoreme.com, running on Next.js 14 on Vercel, using the OpenAI image API for the generation and Stripe for the unlock. Small polish is deferred in favor of keeping the live version stable, which is the correct call for a product of this shape.
Apr 2026 · Preview pipeline
Shipped a watermarked low-res preview path that markets itself
The first-pass image now ships as a shareable low-res preview with a built-in watermark, and the watermark scales to match each generator's aspect ratio. So the thing people post while deciding whether to buy also advertises the product for free. That is the correct kind of vanity.
Apr 2026 · Delivery model
Switched to generate once, then unlock the exact same HD image
The original high-res file now gets stashed in Vercel Blob and unlocked after verified Stripe payment. That means buyers always receive the exact image they previewed instead of paying for the privilege of rolling the dice on a second generation.
Apr 2026 · Session recovery
Users can now pick up where they left off
localStorage persistence plus a “Pick up where you left off” card means back button chaos, refreshes, and tab closes no longer kill the result. Only a brand-new generation clears the old one, which is how this should have worked from the start.
Apr 2026 · Joke density
Built real generator variety instead of one joke wearing six hats
RushmoreMe now has per-generator aspect ratios and 32 hand-written variants across six styles like Vogue, GQ, Tabloid, Old West, and 80s VHS. The goal was simple: actually use the joke space instead of pretending one generic prompt equals a product line.
Apr 2026 · Vision preflight
Bad uploads get rejected before they burn a real image call
A lightweight vision preflight now classifies the uploaded photo, blocks obvious bad inputs, suggests the best variant, and surfaces friendly framing/orientation warnings. Better UX and cheaper ops in one move, which is my favorite kind.
Apr 2026 · Offer ladder
Added a multi-variant pass, speed pass, and day pass
The monetization path is no longer just “buy one image or leave.” There is now a $0.99 three-option pass, a $1.99 speed pass to skip the throttle, and a day pass — all gated and consumed cleanly per purchase instead of feeling stapled on.
Apr 2026 · Free-to-paid
The free cap now behaves like a product, not a tantrum
RushmoreMe now enforces a hard three-per-24h free cap using both cookies and localStorage, with an invisible counter, a friendlier wall, and a discounted returning-buyer day-pass upsell. It still limits abuse, but it does it without acting weird about it.
Apr 2026 · Error UX
Replaced “Something went wrong” with honest moderation explanations
The app now uses preflight context to explain false-positive moderation failures like a human instead of hiding behind a generic shrug. It is still the same rejection under the hood, but the product now takes responsibility for making it understandable.
Apr 2026 · Root-cause fix
Fixed the real upload bug instead of adding more superstition
The actual issue turned out to be JPEG bytes getting sent with a PNG MIME type. Server-side Sharp normalization now auto-rotates, resizes, and re-encodes everything as a real PNG before it hits OpenAI, which is much better than praying at the prompt layer.
Apr 2026 · Model quality
Closed the “why doesn’t this look like ChatGPT?” gap
Adding input_fidelity: "high" plus a much tighter preserve/change/constraints prompt closed a surprising amount of the quality gap while keeping face fidelity intact. The nice part is the economics still work: medium-quality generations are landing in the rough 7–10¢ range instead of becoming a toy that melts margins on contact.
Biggest highlights:
- face fidelity got materially better without turning the output into a generic filter
- prompting became much more explicit about what must stay vs what can change
- per-generation cost stayed low enough to support a real consumer offer ladder
Mar 2026 · Shipped
RushmoreMe is live at rushmoreme.com
Upload a face, get Mount Rushmore, pay $2.99 to lift the watermark. A weekend build that also happens to prove a reusable one-shot-AI + one-shot-payment pattern. Next.js 14, OpenAI image API, Stripe, CSS watermark overlay as the monetization mechanic.