Inspiration

Saju (사주) — Korean Four Pillars of Destiny — is a 2,000-year-old system for reading a person's fate from their birth date, but it's locked behind Classical Chinese characters and Korean-only practitioners. We wondered: what if an AI could act as a real saju counselor and make this tradition accessible to anyone, in plain English?

What it does

Fate.me takes your birthday and summons an AI saju counselor that reads your personality, career, love life, and health in natural English. You can keep chatting to go deeper on any domain, or enter a partner's birthday to get a compatibility score and analysis. Responses stream in real time — like a counselor speaking directly to you.

How we built it

Backend: FastAPI + Python. We use lunar_python for lunisolar calendar conversion and Four Pillars calculation, a YAML rule engine to deterministically fire interpretation signals, then pass structured JSON to Claude Sonnet (via clod.io) to narrate in prose. Frontend: React + TypeScript + Vite. Streaming SSE chat UI, compatibility popup modal, Zustand state management. Deploy: Render free plan, configured with a single render.yaml.

Challenges we ran into

Killing the jargon: The LLM kept slipping in terms like "Xin Mao" or "ganzhi." We solved it by banning those terms explicitly in the system prompt and pre-translating all labels before they reach the model (e.g. "day_animal": "Rabbit"). 30-second bottleneck: The initial reading took 30+ seconds. The culprit was sequential LLM calls that could be parallelized — fixing that plus SSE streaming made the experience feel instant. Conversation state: Preventing the AI from re-asking for information it already had, or re-triggering a compatibility popup for the same person twice, required careful state sync between backend and frontend.

Accomplishments that we're proud of

Fully separating the deterministic saju engine from the LLM narration layer. The same birthday always produces the same chart — the LLM only narrates what the data says, never invents saju theory on its own.

What we learned

LLMs are most powerful as translators, not creators. When you hand them a well-structured deterministic output, they turn complex classical theory into language anyone can understand.

What's next for Fate.me

Full Eight Pillars support including the hour pillar Annual and monthly fortune cycle analysis Multilingual counselors — Korean, Japanese, and beyond

Built With

Share this project:

Updates