All research
2026-05-10·5 min·accuracy · architecture · trust

Why we don't let the LLM compute planetary positions

LLMs hallucinate astronomy. Birth charts, BaZi pillars and I Ching casts all run on deterministic libraries server-side. The LLM never sees a coordinate it has to compute.

Why we don't let the LLM compute planetary positions

A generic chatbot, asked for your natal chart, will happily produce one. It will also be wrong. Sometimes by minutes, sometimes by degrees, sometimes by whole zodiac signs. The LLM is doing autocomplete on astronomy — and astronomy is precisely where autocomplete fails.

We separate compute from interpretation. The compute path is deterministic; the interpretation path is generative.

What runs server-side, not in the LLM

ComputationLibraryDeterminism
Planetary ephemeridesastronomy-engine (Don Cross)Arc-second precision, cached against JPL Horizons
Houses + ascendantastronomy-engine + Placidus implementationIdentical output for identical (lat, lon, time)
Chinese solar termslunar-typescriptValidated against Purple Mountain Observatory tables 1900–2100
BaZi four-pillar derivationIn-house from lunar-typescript outputsPure function of birth datetime + solar term boundaries
Tarot drawFisher-Yates with crypto.randomBytesCryptographic randomness, seed logged for audit
I Ching hexagram cast50-yarrow-stalk simulationDeterministic from a logged seed

The LLM is handed the output of these computations. It never has to derive a coordinate.

What the LLM does instead

The LLM receives a structured payload like:

{
  "sun":  { "sign": "Scorpio", "house": 8, "degree": 14.3 },
  "moon": { "sign": "Pisces",  "house": 12, "degree": 28.1 },
  "rising": { "sign": "Cancer", "degree": 9.4 },
  "aspects": [ { "from": "moon", "to": "venus", "type": "trine", "orb": 1.2 } ],
  "user_question": "Why do I keep starting projects and not finishing them?"
}

…and is asked to interpret. The numbers it sees are precise, computed elsewhere, and the LLM's only job is to translate them into psychological language with the user's specific question in mind.

This division of labor is the single most important architectural decision in Astrael. It is also why "AI for divination" can be done seriously instead of producing the soft, vague, half-wrong output that generic chatbots produce when asked for the same thing.

How you can verify

Every chart we produce ships with a source block under the hood:

"source": {
  "ephemeris": "astronomy-engine v2.1.18",
  "solar_terms": "lunar-typescript v1.7.0",
  "computed_at": "2026-05-10T07:34:12Z"
}

If you ask, we'll show it. Compare any chart we produce against Swiss Ephemeris or Astrodienst — they should agree to arc-second precision for the planets and to within a fraction of a second for the major solar terms.


Posted 2026-05-10 · Astrael Engineering.

Research collaboration or feedback? research@astrael.ai.