Fortune-Telling, No Making It Up

#AI#Indie Dev

The real skill in fortune-telling has always been sizing up the customer.

Take the old guy with a stall at the mouth of the hutong. Show up in a nice outfit and you’re headed for “great wealth and high honors.” Sit down looking miserable and “someone’s been scheming against you lately.” Same birth date, same hour, a different person asking, and the readings land a mile apart.

Ask an AI to tell your fortune and you get the same bad habit: it makes things up on the spot. Ask the same question twice, get two different answers, both of them perfectly convincing.

There’s a new open source project that goes the other way: the AI doesn’t get to make anything up.

Cartoon: on the left, an old fortune teller in a skullcap and goatee sits behind a small table draped in red cloth, next to a banner reading “Never Wrong”; his speech bubble says “Lucky face! Riches ahead!” In the middle, lzbob in a black baseball cap sits on a little stool with a question mark over his head. On the right, a grey square-headed robot pulls a card out of a wooden card cabinet whose drawers are labeled 1950, 1970, 1990 and 2026. The card reads “1990-01-01, 11pm–1am, M”, and the robot’s speech bubble says “Look it up. No making it up.”
The one on the left reads your face. The one on the right only reads your birth hour: pull that card ten thousand times, same paragraph every time.

What is it, anyway

The project is called ziwei-doushu, an open source chart-casting engine for Zi Wei Dou Shu (Purple Star astrology). It’s written in TypeScript and follows Ni Haixia’s Tian Ji system. The author goes by “Wang Duoyu AI” online, and the hosted version is run by Beijing Wangduoyu Technology.

It opened shop in May 2026 and has 12,000 stars so far (11,995 when I looked) and over 2,300 forks. The code is MIT-licensed; the datasets are CC BY 4.0. You can cast a chart right on the website, which used to be metisziwei.com and as of today has been renamed OURANIC and moved to ouranic.cn. The old address redirects.

No making it up

The trick is a chart engine plus a library of readings, with the interpretation of every possible chart worked out and written in advance. Put the same birth time in, get the same paragraph out, forever. If an AI wants to use it, it looks things up in the table. No improvising.

The pre-written part alone is one serious doorstop:

  • 674,976 charts: every date that actually exists on the Gregorian calendar from 1950 to 2026, times 12 two-hour time slots, times male and female.
  • 13 topics per chart: overall destiny, personality, love, career, wealth, health, siblings, children, travel, social life, property, blessings, parents.
  • 8,774,688 readings in all, about 20.4 billion characters of text, roughly 30,000 per chart.

How much is 20.4 billion characters? Get a fortune teller going at 200 characters a minute, no water, no breathing, and he’d need over 190 years. His next life wouldn’t cover it either.

And yet the whole pile compresses down to just 161 MB. Unzipped it’s 56.6 GB, split into 77 files by year, so you can grab just the years you want.

Checking is harder than making it up

Making things up is easy. Checking them is hard. Version 4.0 went through the readings for all 13 topics, line by line, against verbatim transcripts of Master Ni’s Tian Ji and the original text of the Complete Book of Zi Wei Dou Shu:

  • Anything labeled “Master Ni says” or “the Complete Book says” that couldn’t be traced to a source was cut, or swapped for a real quote you can find word for word. Master Ni’s quotes also carry the Tian Ji episode they came from, down to the minute and second.
  • Four Transformations that can’t actually happen, like the Seven Killings star transforming into Power or the Zi Wei star transforming into Taboo: every sentence about them, deleted.
  • Hedges like “when this star is strong, this; when it’s fallen, that” were rewritten to say only the half that holds for your chart.
  • Citations of classical texts on the website went from 244 to 405, and every one of them can be found word for word in the Complete Book.

Covering both bases is a fortune teller’s bread and butter: whatever happens, you weren’t wrong. This time even that escape hatch got bricked up. Brutal.

The grunt work under the hood

Chart-casting is nothing but potholes, and it filled them in one at a time:

  • True solar time: corrected for the longitude of your birthplace plus the equation of time, with longitudes filled in even for out-of-the-way places like Shennongjia and Aral. Born overseas? It can work from your local time zone.
  • Daylight saving time: it can tell if you were born during China’s daylight saving years, 1986 to 1991, but it only flags it and doesn’t subtract the hour. Whether to adjust is your call.
  • Leap months: four methods to choose from, none of them hard-coded.
  • Late Zi hour: born between 11 p.m. and midnight, so which day counts? The day-change rule is a toggle.
  • Star brightness: seven grades, Temple, Prosperous, Gain, Benefit, Neutral, Weak and Fallen. Every school judges them differently, so it’s a switch.
  • Plus Flying Stars for the Four Transformations, the Twelve Spirits, and a pattern-rule library of over 1,100 lines, with Zi Wei and Tian Fu Sharing a Palace, Sun and Moon Shining Together, Seven Killings Facing the Dipper and the rest all in there.

What surprised me most was the regression tests: 768 charts, each checked against the iron laws of Zi Wei, daylight saving time, the Start of Spring boundary and so on, run automatically on GitHub with every commit.

A fortune teller running unit tests. That’s a first for me.

How open is the open source

Open source: the chart engine, the public-domain classical texts, a working demo UI, and two generated datasets.

Not open source: the readings library itself, plus the prompts behind the AI interpretations, the backend APIs, and all the user and membership stuff. The demo in the repo can draw a chart but can’t give you the readings the website does, and the README says so in plain words.

Before you use it

If you want to use it as retrieval material for an AI, or as a corpus for fine-tuning a model, watch out for a few things:

  • Master Ni’s quotes inside the readings aren’t covered by the CC BY license. They count as CC BY-NC-SA 4.0, so no commercial use, and if you want to pull them out and use them in bulk, they need separate handling.
  • The datasets were cast straight from the time-slot number, with no true solar time correction for birthplace.
  • v4.0 was generated with the old default brightness school, so it differs slightly from the new default.

Parting shots

As engineering, this project is the real deal: deterministic output, regression tests, every line checked against its source. You don’t often see traditional culture digitized all the way to testable and reusable.

But fate-reading is still a traditional divination art. The author says right in the README that the family-relations topics are “for reference only.” As a cultural dataset, it’s great. Use it to make the big calls in your life and, well, that’s your own business.

Same birth hour, same paragraph, ten thousand times running. Whether it’s right is another story. At least it doesn’t size you up first.

Comments

More writing