The Week LuckyCoin Learned to Send Mail
- Projects
- 6
- Commits
- 60
- Lines
- +64k / −9k
- Files
- 613
- Claude time
- 36h
- 71h of work
- Tokens
- 24.4M
Claude time is wall-clock at the keyboard; the hours of work below it is total model effort, which runs higher when several Claude windows work in parallel.
Commits by day
Where the work went
LuckyCoin49%
Arby22%
LuckyFind19%
Lucky RNG10%
Two big projects ate the week, both inside LuckyCoin: standing up a weekly newsletter from absolutely nothing, and translating the entire web app into Spanish. One is a new outbound channel; the other is the kind of unglamorous parity work that quietly doubles your addressable audience. Around the edges, RandomBay got a new name and LuckyFind-Web got into the affiliate-guide business.
A newsletter, built end to end
LuckyCoin didn't have a newsletter on Monday. By the weekend it had a full pipeline, and the interesting part is that the whole thing is built to not trust itself. The send is approval-gated: a Cloud Function assembles a proof edition — real news pulled from web search, coin photos, a generated subject line — and nothing goes out until a human hits Approve (or Regenerate, when the AI's first draft isn't it). Send time is pinned to 10:00 ET, and the claim-to-send step is atomic with token expiry and a two-step confirm, so the same edition can't accidentally go out twice. That last sentence is doing a lot of work; it's the difference between a tool you can sleep next to and one you can't.
On top of the core send sit all the things a newsletter actually needs to be useful. Public signup runs through double opt-in, with a welcome email on confirm and per-recipient open tracking. Links are UTM-tagged so we can see what people click, and the subject line is captured per edition so the A/B subject test means something later. There's reversible list hygiene — sunsetting people who've gone cold, with a path back — plus a resend-to-non-openers pass and admin error alerts that fire when a build, send, or growth check goes sideways. The Android side carries all this logic (it's where the Cloud Functions and SES wiring live), and the web side got the front of house: an admin analytics dashboard rebuilt around KPIs, charts, a per-week scheduler, a per-link click map, growth history, subscriber management, and the A/B view. Plan-the-next-edition is a form now; subscriber sources break down by origin so we know where signups come from; and there's a send-health panel showing recent outcomes and failures at a glance. Web visitors also get the newsletter as a readable web edition with its own unsubscribe and a settings opt-out, and unsubscribes get attributed back to the edition that prompted them.
It's a lot for one feature, but a newsletter is one of those things that's either complete or broken — half a double-opt-in flow is just a bug.
LuckyCoin, now in Spanish
Running underneath all that, the LuckyCoin web app moved under a [locale]/ structure and shipped EN + ES parity. This wasn't a token translation of the homepage; it went deep. Page metadata and JSON-LD now declare their language, FAQs and the per-coin TL;DR blurbs are translated, the /learn hub and its category and tag index pages are localized, the melt calculator and leaderboard and friend-collection screens speak both languages, and even Firestore series descriptions and Numista specs prose get translated on the way out. Along the way we hardened the missing-key fallback in the stats charts and fixed an INVALID_KEY runtime error — the usual tax you pay when you thread a second language through code that assumed one. For a catalog app, Spanish parity isn't a nicety; it's a different set of collectors who can now use the thing.
RandomBay grows up, LuckyFind goes shopping
RandomBay is now My Random Products, renamed to match its own domain (myrandomproducts.com), with the UI and SEO overhauled and new category pages brought to iOS parity. The big line count there is mostly the rebrand rippling through every canonical, OG, and sitemap URL.
LuckyFind-Web picked up a commercial streak: a cluster of five affiliate gear guides, with Amazon disclosure, tooling to auto-fill affiliate links from tagged search URLs, and a sensible touch where product-image placeholders stay hidden until a real photo exists. There's also a OneLink installer for app-download links.
The small stuff: NumberGen 1.5.1 added revenue attribution to its monetization A/B test, LuckyCoin-Android fixed a logo crash and bumped to versionCode 46, and a couple of web projects now log their deploys to the studio ship log via a post-deploy hook — which is how weeks like this one stay legible after the fact.




