Deterministic Horoscope Engine vs LLM: Why We Built Our Own
Why RoxyAPI writes horoscopes with a deterministic engine, not an LLM: the same date returns the same text, and every date is checkable in events[].
TL;DR
- A deterministic horoscope engine returns the same text for the same sign, date and clock on every call, while large language models vary between runs even at settings meant to be deterministic, with accuracy swings of up to 15 percent measured across ten runs (Atil et al., arXiv 2408.04667).
- Every planet, sign, house, aspect, station and date the RoxyAPI horoscope prints is also returned as data in
events[]andpositions[], so a reader can check each claim against the same response. - Planetary positions come from the NASA JPL DE440 ephemeris, verified against NASA JPL Horizons at a median deviation of 0.05 arcseconds (0.00001 degrees).
- Cost was not the reason: writing a year of English horoscopes for twelve signs with an LLM costs well under a few hundred dollars. Reproducibility and checkable facts were.
Ask a chatbot for the Leo horoscope of the day twice and you get two different readings. Ask it which day Mercury turns direct and it may give you a confident, wrong date. For a hobby app that is a curiosity. For a publisher sending a daily horoscope to hundreds of thousands of readers, it is a liability: an editor cannot approve text that changes on reload, and a fact checker cannot verify a date the system made up.
That is why the RoxyAPI horoscope API is written by a deterministic engine rather than a language model. The astrology is computed, the prose is composed from text written and audited in advance, and every fact the column prints ships beside it as data. This post explains what that means in practice, what it costs, and where an LLM is still the better tool.
Why not generate horoscopes with an LLM?
An LLM is the wrong engine for a published horoscope because it cannot promise the same text twice and cannot prove its facts. Vendors say so in their own documentation: reproducible output with a fixed seed is best effort, and "determinism is not guaranteed" (OpenAI, Microsoft Azure).
0 of 4,380 daily horoscopes changed between a cold read, a read in date order and a shuffled read of the same year (twelve signs, 365 days, measured on the RoxyAPI engine).
The second problem is facts. A model writing "Venus enters your career zone on Tuesday" has no obligation to be right about Tuesday. Researchers measured accuracy variations of up to 15 percent across ten runs of five models set to be deterministic (Atil et al.). A horoscope that names a wrong date is worse than one that names none, because the reader can check it on any ephemeris site.
Cost is not the argument. By our own estimate, an LLM writing every English daily, weekly, monthly and yearly horoscope for twelve signs, about 5,160 pieces a year, costs roughly $30 to $220 a year at current list prices. The engine exists because reproducibility and verifiable facts are worth more than that saving.
Ready to build this? The Astrology API gives you daily, weekly and monthly horoscopes with the evidence attached, part of 18+ insight domains on one key. See pricing.
How does a deterministic horoscope engine work?
A deterministic horoscope engine turns the dated sky of a period into a column through fixed rules, so the same input always takes the same path. The RoxyAPI engine runs five steps for every sign and period, and none of them involves a random draw or a model call:
- Compute the sky. Exact aspects, sign changes, retrograde and direct stations, lunations and eclipses are found to the second from the NASA JPL DE440 ephemeris.
- Read it into the sign. Each event is placed in the whole-sign house it falls in for the reader, and named by life area ("your house of partnership") rather than by number.
- Rank what matters. Exact aspects to the sign ruler, new and full moons in the reader own sign or partnership house, and slow-planet stations outrank minor contacts, so a column leads with the event a professional columnist would lead with.
- Compose from audited text. Sentences come from writing prepared and reviewed in advance, assembled by rules that keep one theme, frame each aspect the way columnists do (a square as productive friction, a trine as ease) and close on one takeaway.
- Return the evidence. The events the column names and the standing position of every planet come back in the same response.
No language model runs at request time: every reading is composed deterministically from text written and audited in advance, so a sign and date always return the same column.
How can you verify a horoscope against its own data?
You verify a RoxyAPI horoscope by matching each claim in the prose to a row in the same response. The column for Libra on October 2, 2026, read on New York time, contains this sentence:
As Mars in your house of friendship flows with Neptune in an easy trine this evening, dividing up tasks lets you relish the build-up.
The response carries the row that backs it:
{
"type": "aspect",
"at": "2026-10-02T22:17:44Z",
"bodies": ["Mars", "Neptune"],
"aspect": "trine",
"house": 11,
"through": "2026-10-16T11:23:35Z"
}
| Claim in the prose | Field that backs it |
|---|---|
| Mars and Neptune | bodies |
| An easy trine | aspect: "trine" |
| Your house of friendship | house: 11 (the eleventh house is friendship and community) |
| This evening | at: 22:17 UTC is 6:17 PM in New York |
| Standing placements and dignities | positions[]: sign, house, isRetrograde, dignity, enteredAt, leavesAt, turnsDirectAt |
The instants themselves can be checked against NASA JPL Horizons. The methodology page explains the verification, and the open benchmark reproduces the 0.05 arcsecond median on any machine.
How does the engine avoid repetition without randomness?
The engine avoids repetition with windows rather than randomness: it remembers what each sign printed and steps past any sentence that sign saw recently, in a fixed order, so variety is deterministic too. Measured over a full year of readings (UTC, 2026):
| Piece | Length band | Pieces repeating a sentence the same sign saw in the prior 90 days |
|---|---|---|
| Weekly column | 120 to 160 words | 1.1 percent |
| Monthly column | 180 to 250 words | 0.0 percent |
| Monthly love | 175 to 230 words | 0.7 percent |
| Daily column | 80 to 120 words | no sentence shared between two signs on the same day |
Two more rules keep a reader of the daily from feeling the machinery. A circumstance of the reader life (children, pets, shift work, caregiving) is never named two days running where another line fits, which brings consecutive-day repeats in the topic fields to 0.11 percent of sign-days. And a role many readers lack, a partner or a child, is offered as a possibility ("if you share a home"), never presumed.
A seed-locked LLM reproduces text only while the vendor keeps the same backend. A model update silently changes every archived horoscope, so a column scheduled months ahead is not guaranteed to be the column that runs.
Who uses a deterministic horoscope API?
RoxyAPI horoscopes are built for anyone who publishes horoscopes on a schedule and needs them editorial grade: magazine and media sites running a daily horoscope column, astrology and wellness apps sending morning push notifications, newsletters, and no-code teams wiring a feed into a workflow. Each gets a finished column in the voice of a professional columnist, not raw data to write up.
| Who | What they publish | How they wire it |
|---|---|---|
| Magazines and editorial sites | Daily, weekly and monthly horoscope columns, monthly love | API call per sign, scheduled ahead, events[] for the fact checker |
| Astrology and wellness apps | Morning horoscope cards and push notifications | overview or one topic field per notification |
| Newsletters and content teams | A weekly horoscope roundup | n8n, Make or Zapier on a schedule |
| AI companions | Grounded answers about the sky today | Remote MCP or function calling |
The license lets you edit, shorten and publish the text under your own brand. Every subscriber asking for the same sign and date receives the same column, so the edit is what makes it yours.
When is an LLM the better choice?
An LLM is the better choice when the reader asks an open question, wants a conversation, or needs an answer no fixed text anticipated. A companion app that discusses a natal chart, answers "why do I keep clashing with my sister", or remembers last week belongs on a language model.
The right architecture then keeps the model and grounds it. The model reads computed facts through Remote MCP or function calls, so the conversation is fluent while the dates, signs and aspects come from the same engine the horoscope uses. We wrote up why we do not bundle a chat endpoint in our bring your own LLM post.
| Need | Deterministic engine | LLM grounded on the API |
|---|---|---|
| Daily, weekly, monthly columns at scale | Best fit | Text varies on reload |
| Facts a fact checker can verify | Built in | Only if every fact comes from tool calls |
| Open conversation and memory | Not designed for it | Best fit |
| A column scheduled months ahead | Same text guaranteed | Not guaranteed across model updates |
How to fetch a verifiable horoscope
A verifiable horoscope is one request. Pass the sign, an optional date, and the reader time zone so an event late in the evening is never called tomorrow:
curl "https://roxyapi.com/api/v2/astrology/horoscope/libra/daily?date=2026-10-02&timezone=America/New_York" \
-H "X-API-Key: YOUR_API_KEY"
The response returns column (the full piece, 80 to 120 words), the six topic fields (overview, love, career, health, finance, advice), events[] and positions[]. Weekly and monthly work the same way at /weekly and /monthly, and the monthly adds keyDates and weekByWeek for calendar pages. Try it live in the browser, no signup or key required, in the API reference.
FAQ
Can ChatGPT write accurate horoscopes?
A language model can write fluent horoscope prose, but it does not compute planetary positions, so dates and aspects it names may be wrong, and the same prompt returns different text on each run. RoxyAPI computes the sky from the NASA JPL DE440 ephemeris and composes the text deterministically, returning every event it names in events[] for checking.
Are AI generated horoscopes the same every day? No. Model output varies between runs even at settings meant to be deterministic, and vendors document that determinism is not guaranteed. A RoxyAPI horoscope returns the same text for the same sign, date and time zone on every call, so a publisher can schedule columns in advance.
How do I check if a horoscope is astrologically correct?
Match each planet, aspect, house and date in the text to a dated event and verify the instant against NASA JPL Horizons. RoxyAPI makes this direct: every daily, weekly and monthly response includes events[] with exact UTC instants and positions[] with each planet sign, house and dignity.
Does RoxyAPI use AI to write horoscopes? No language model runs at request time. Every reading is composed deterministically from text written and audited in advance, which is why the same request always returns the same column and why every fact in it appears in the response data.
Who is the RoxyAPI horoscope API built for? Publishers that need editorial grade horoscope columns on a schedule: magazines and media sites, astrology and wellness apps, newsletters, and teams automating a horoscope feed in n8n, Make or Zapier. Every daily, weekly and monthly column arrives finished, in a columnist voice, with the dated events behind it for fact checking.
Can I use RoxyAPI horoscopes inside an AI chatbot? Yes. Serve the column directly for daily content, or let your own model read RoxyAPI through Remote MCP or function calling so its answers stay grounded in computed dates and positions. Your model, your prompt and your user memory stay in your stack.
Conclusion
A published horoscope has to read the same tomorrow as today and survive a fact check, and a language model guarantees neither. RoxyAPI computes the sky, composes the column from audited text and returns the evidence beside it, so every horoscope can be scheduled, verified and trusted. Explore the Astrology API or compare plans.