Ship Sage Daily — a tarot + astrology agent with its own engine
Sage Daily is a reading agent. A tarot card each morning, a weekly transit read against a birth chart, and a cycle a reader opens with an intention and closes by hand. The interesting part sits underneath the copy: the card and the words aren't templated, and the astrology is computed in-house rather than lifted from a horoscope feed.
How a reading gets made
Three pieces do the work, and each is a discrete build.
Pick the card, draft the reading.
Two DSPy modules carry the language work — one selects the day's card, one drafts the reading. Structured signatures with typed inputs (card, chart, cycle in; a reading in a steady voice out), not one hand-tuned prompt string.
Transits, computed in-house.
An in-house engine computes current transits against a stored natal chart, Vedic and Western. The sky-weather in a reading is calculated for that specific chart, not pulled from a generic daily horoscope.
Readings that track the reader.
A reader rates what resonates. Those ratings are the signal reading quality tunes against, so the language moves closer to the individual chart and cycle over time.
The cycle
The product loop isn't a feed of daily cards — it's a cycle a reader opens, sits inside for a while, and closes. The card picker and reading drafter run against the open cycle, so a reading has a thread to hold, not just a card of the day.
Speak the shape.
A three-turn dialogue sharpens a fuzzy wish into one sentence the cycle keeps returning to.
One card, one morning.
Each day a card lands, drafted in the voice of the chart and the open cycle. A rating on what resonates feeds the loop above.
A chapter, signed.
At the end of a cycle a three-card spread — past, present, future — produces a recap the reader keeps.
Mystics — other people's readings, decoded
The surface added since launch is the one that changes what the product is for. Sage tracks what other readers publish — astrologers, tarot readers, channelers, dreamers — and lets a reader open any of it and decode it through their own chart: what lands, what is noise, and what is worth carrying.
Three problems had to be solved before that was any use. A video has to be about something specific — an aspect between two bodies, a movement into a sign, a forecast — because a topic that merely gets mentioned in passing surfaces nothing worth reading. Recurring shows are their own kind of thing, so a daily card reading, a weekly update and a monthly one are recognised as cadences rather than filed under whichever transit they happened to name. And a long round-up that walks all twelve signs has to be broken by sign, anchored to the timestamp where the reader actually opens each one.
Readers also disagree, and the disagreements are mostly not errors. Two astrologers placing a planet in different signs are usually working in different zodiacs, so the tradition gets named and both are shown where they differ, rather than one being quietly picked as correct.
What the reading is grounded on
The DSPy modules draft against four lineages, held in one voice.
- TAROTThe seventy-eight cards of the Rider-Waite-Smith deck (Pamela Colman Smith, 1909) — the canonical iconography from which every modern dialect descends.
- ASTROLOGYVedic and Western, held together — the transit read the engine computes against the natal chart.
- REGISTERThe Neville Goddard lineage — as a register, not a religion. "Assume the feeling of the wish fulfilled."
- VOICEThe voice of morning practice — plain, specific, kind. Never advice. Always reflection.
The card and the words are generated per reading; the astrology is computed per chart. Neither is a template pulled off a shelf.
Where it runs
The web surface serves at sagedaily.io. A separate API backend at api.sagedaily.io carries the reading and astrology work, with Postgres for persistence. On X, @sagedaily22 draws a card daily in public; inside the app the reading is computed for the individual — chart, cycle, own words.
Open a cycle. Pull today's card.
