SoiTarot
The numbers, in the open.
Straight from the live dashboards. Tap any panel to read it full-size.
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. 273+ pages from five content dimensions — 78 card meanings, 144 zodiac pairings (12 × 12), 12 daily horoscopes, 9 numerology profiles, and 30 blog posts — all generated through the same gated pipeline. 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 eighteen weeks, and I stopped working on it in mid-June. Nothing has been added since — no new pages, zero off-page work, no backlinks, no outreach, not even the entity work that would push indexing along. Pure on-page, then left alone.
It kept climbing anyway. On 30 September 2026 Search Console handed over the 1,000-click badge for the rolling 28-day window. The export behind it reads 1,013 clicks from 45,000 impressions in the 28 days to 2 October, at an average position of 7.2 and a CTR of 2.25%. The first 28 days of the same three-month export, in July: 167 clicks at position 10.5. In mid-July this page reported 90 clicks; it's now past 11× that, on a property nobody has touched.
The chart has one obvious hinge, and it's 1 September — daily clicks went from single digits to twenty-plus in a week and never came back down. The milestone log reads like a metronome after that: 300 clicks on 6 September, 400 on the 12th, 500 on the 15th, 600 on the 17th, then a hundred every three days to 1,000 on the 30th. The dashboards are at the top of this page.
The query mix is the part that surprised me. The pages I built the most of — the 144 zodiac compatibility cells — aren't what's winning. The top queries are tools: bốc bài tarot online and rút bài tarot online (draw a card online) lead on impressions, and the two pages earning the most clicks are the card draw and the tính số chủ đạo calculator — work out your life-path number — at 395 and 211 clicks over three months. The programmatic library earned the surface area; what people actually searched for was something to use. That's the interactive half of the site, the half I'd filed as the reward at the end of the funnel rather than the thing search wanted.
And they stay long enough to use it: last month, 120 new people ran the online astrology reading. A small number, but it's the first evidence that the play half works as a destination and not just as a landing page.
What the numbers don't say is the more useful half. A 2.25% CTR at average position 7 is still the bottom half of page one — 45,000 impressions a month of demand already being shown my pages, most of which never becomes a click. Closing that gap is exactly what off-page work is for, and I still haven't done any. The engine runs. The ceiling is precisely where I left it.
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.
Related writing: Combinatorial SEO — on why combinatorial demand is the niche a solo builder can actually win. · Generative engine optimization, end to end — the full GEO playbook, from llms.txt to AI-answer readiness.
Gallery


