How We Calculate the Sky
Every horoscope on Stars & Signals is built on real planetary positions — not approximations.
The problem with most AI astrology
When you ask a general-purpose AI chatbot about your horoscope, something quietly goes wrong before the answer even begins. Language models don’t have access to astronomical data. They can’t look up where Venus actually is today. So they do what they always do when they don’t know something — they approximate, pattern-match, and occasionally invent.
The result is horoscope content that sounds plausible but is built on guesswork. Wrong rising signs. Retrograde planets that aren’t retrograde. Transits that don’t correspond to the actual sky. For a practice that depends on where the planets actually are, that’s a foundational problem.
What we do instead
Before any content is written on Stars & Signals, we query a live ephemeris — a precise astronomical calculation of where every planet sits in the sky at this moment. That data is passed directly into every horoscope and article our writers produce. Luna and Claire don’t guess at transits. They receive the actual positions.
This means that when a horoscope references Venus in a particular sign, or notes that Saturn is at a critical degree, or flags an approaching eclipse — that’s what’s actually happening in the sky. Not a plausible-sounding reconstruction. The real data.
The tool: Astronomy Engine
Our ephemeris data comes from Astronomy Engine — an open-source astronomical calculation library built by Don Cross. It calculates the positions of the Sun, Moon, and all major planets, along with moon phases, eclipses, equinoxes, solstices, planetary conjunctions, and more.
Astronomy Engine is accurate to within one arcminute of NOVAS — the Naval Observatory Vector Astrometry Software used by professional astronomers. To put that in context: one arcminute is 1/60th of a degree. At that precision, the difference between a planet being in one zodiac sign versus another is never in question.
It’s open source, actively maintained, has no external dependencies, and produces identical results across JavaScript, Python, C, and C#. We use the JavaScript implementation via a dedicated internal API route that runs on every content generation cycle.
What we calculate for each piece
Planetary positions
Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune — sign, exact degree, and retrograde status.
Moon phase
Current phase name and illumination percentage, flagged at peak intensity when relevant.
Critical degrees
0° ingresses and 29° anaretic degrees are flagged — both carry specific astrological significance.
Upcoming events
Eclipses, sign ingresses, stations, and major aspects in the days ahead — filtered for love relevance.
Why this matters for your reading
Astrology is, at its core, a system built on the geometry between planets. When a horoscope tells you that a Venus-Saturn trine is creating the conditions for serious, lasting connection — that only means something if Venus and Saturn are actually forming that angle. If they’re not, the reading is fiction dressed up as insight.
The degree a planet occupies within a sign also changes what it means. A planet freshly arrived at 0° carries initiating, unformed energy. A planet at 29° — the anaretic degree — is at a threshold, completing something. These distinctions only exist if you know the actual degree, which requires real calculation. Luna and Claire both use degree data precisely because it sharpens the reading, not just to signal that we checked the ephemeris.
Astronomy Engine is open source and publicly auditable. If you want to inspect the calculation methods, verify the accuracy claims, or just see how it works, the full source and documentation are available at github.com/cosinekitty/astronomy.
