SoiTarot
A tarot site was a 3am idea: a bet that I could win a competitive Vietnamese niche with programmatic SEO, built almost entirely by AI, in about a week. SoiTarot is that bet, left running in public so I can watch what actually happens.
The bet
I wanted to know two things, and I was tired of arguing about both in the abstract.
First: how far can AI-driven programmatic SEO actually go in a competitive niche? Not a toy site with twelve pages — a real content property in Vietnamese spirituality, a space crowded with old fortune-telling sites and tabloid horoscopes, where the incumbents have years of domain age on me. Second: could I wire every tool I own — design, image generation, content, agents — into one machine that builds and ships a property end to end, with me as the director rather than the labourer?
So I gave myself a constraint a 3am idea deserves: roughly a week from blank repo to a live, indexable site. Then I'd stop, and let it tell me the truth.
What it is
SoiTarot is a self-discovery library for Gen Z Vietnam — tarot, numerology, and Western astrology, in clean Vietnamese, free. The whole positioning hinges on one word the brand refuses to use. In Vietnamese, bói means having your fortune told; soi means looking into yourself. Everything points away from prediction and toward reflection: you draw a card, and it hands you a better question, not an answer.
Under that idea sits a lot of surface area: the full 78-card Rider-Waite deck, each card written up with real depth; the twelve zodiac signs; the nine numerology master numbers with a calculator; spread guides; beginner how-tos; and a thirty-piece blog. On top of the library are tools — an interactive draw with on-demand AI interpretation, a viral "which tarot card are you" quiz, and a small personal area with a journal, streaks, and a card collection.

How it was built
This is the part I actually care about. SoiTarot isn't a site I made; it's a site a system made, and the system is the real deliverable.
The design came out of Claude Design as a full handoff — logo directions, a colour system, a motion spec, a UI kit — which I implemented rather than redrew. The content was written by Claude (Haiku for volume, Sonnet where quality mattered), but the important move was refusing to let it run unsupervised: every page passes automated gates in CI before it can merge — banned fortune-telling words, a strict Vietnamese-only rule, and an SEO structure check (word count, FAQs, internal links, meta length). Imagery is all Higgsfield, locked to a single house style. And the whole thing was run by a small team of agents inside Claude Code — strategy, content, design, engineering — coordinating through a shared memory folder and a handoff protocol, so four roles could work without stepping on each other.
The stack underneath is deliberately boring: Next.js, Tailwind, Sanity, Vercel. The interesting engineering is the assembly line, not the framework.
The shape of that chart is the point. The site was substantially live within the first week; the long quiet tail on the right is not me running out of steam — it's the experiment, untouched on purpose.
The design system, in the open
I didn't want this to look like AI sludge, so the brand got treated as seriously as the SEO. The identity is The Crescent Eye — a gold crescent cradling a lavender pupil that reads four ways at once: an eye, a moon phase, an opening door, and the curved edge of a card mid-flip. Soi mình — look into yourself — through a cycle, through a door, through a card turning over.
The art direction is a single locked style I called Engraved Celestial Etching: deep navy, antique gold linework, lavender and ivory, the texture of an old astronomical plate. Every one of the 78 cards, twelve signs, and nine numbers was generated to that spec, so a thousand AI images still feel like one hand made them.


I published the whole system as a Claude Design project so it's inspectable, not just the finished pixels — logo directions, the full colour system, motion, the UI kit.
Open the SoiTarot design system →
Programmatic, at scale
The reason a niche like this is winnable by one person is that a lot of the demand is combinatorial, and combinations are exactly what a system is good at. Zodiac compatibility alone is twelve signs against twelve — 144 pages, each with genuinely different content, generated and gated automatically. Daily horoscopes are twelve more, refreshed. The deck is 78. The numerology, the spreads, the guides stack on top.
To get that volume taken seriously by search and by AI answer engines, the technical SEO had to be unusually thorough for a side project: JSON-LD on every page (Article, FAQ, HowTo, Breadcrumb), an llms.txt, IndexNow firing automatically on every deploy, dynamic per-page OG images, GA4 and Search Console wired in. I even gave the site a credible bylined author and brand story — a small editorial persona — because E-E-A-T rewards a face and a point of view, and an anonymous content farm gets treated like one.

What's happened so far
Honest status, because the honest version is the interesting one: the site has been live about two weeks. The traffic curve is still climbing, steeply, and I haven't touched the site in a week. There has been zero off-page work — no backlinks, no outreach — and I haven't even done the entity work to push indexing along. Pure on-page.
Google is indexing it steadily anyway. Not fast — but consistent, and consistent is the signal I was actually looking for. A property that grows while its maker ignores it is a property with a working engine underneath, and that's the thing I set out to prove.
What I learned
The cliché is that AI removes the bottleneck on production. That's true and it's also the boring half. The real lesson is that once production is free, the bottleneck moves entirely to judgment — taste, positioning, and the quality gates you're willing to enforce on yourself. The hard part of SoiTarot wasn't generating ten thousand words a day; it was the banned-word list, the Vietnamese-only rule, the refusal to say bói. The constraints are the craft now.
The other lesson is patience, which I'm still in the middle of. Off-page and entity-building are the real test ahead, and I've done none of it on purpose — I wanted a clean reading of what on-page alone, built this way, can do. So far the answer is "more than it has any right to," and the chart is still going up. I'll let it keep telling me.
Gallery


