Our Approach — A Note for the Serious Student
withAshoka is built for the English-speaking Indian diaspora — readers culturally familiar with the tradition but learning Jyotish itself. The main surfaces of the site teach as they go: every Sanskrit term gets a first-occurrence English gloss, the chart explains what it means, and the curriculum starts from "what is a Kundli?" This page is the exception. It is written for the practitioner or serious student who wants to verify that the engine beneath the teaching is real.
For Those Who Know Their Shadbala from Their Shashtiamsha
withAshoka is a Vedic companion — Jyotish is one of the traditions it draws on, alongside the Panchang, the Hindu calendar, and more. Ashoka himself is a guide and companion, not a credentialed Jyotishi, and we do not present him as one. What we do claim is that the calculations beneath him are rigorous and classically grounded — and this page is where we show our working.
If you have studied Jyotish seriously — if you have used Jagannatha Hora, read Brihat Parashara Hora Shastra, or sat with a practising Jyotishi — you will have questions about withAshoka that a casual user would not think to ask. This page is written for you.
We welcome scrutiny. The questions below are the ones a knowledgeable student or practitioner would rightly ask. We have tried to answer them honestly, including where we fall short.
On Calculation
Which ephemeris do you use?
The Swiss Ephemeris — the same engine used by Jagannatha Hora, Kala, and Parashara's Light. It is the most accurate planetary ephemeris available for astrological use, derived from NASA's DE431 dataset. We use the Python binding pyswisseph directly, not a wrapper or approximation.
Which ayanamsa?
Lahiri (Chitrapaksha), the most widely used ayanamsa in contemporary Jyotish and the official ayanamsa of the Government of India. We apply it manually after calculating tropical positions to ensure precision. We are aware that other ayanamsas (Raman, Krishnamurti, True Chitrapaksha) exist and produce different results. Lahiri is our current default. We plan to support user-selectable ayanamsa in a future version.
How is the Lagna calculated?
We use the standard GMST (Greenwich Mean Sidereal Time) formula per the IAU 1982 standard, converting to ARMC (Apparent Right Medium Coeli) and then to the Ascendant degree using the standard obliquity calculation. We do not use pyswisseph's built-in house functions for the Lagna — we documented a global sidereal state issue in certain pyswisseph versions that affected Lagna accuracy, and our custom implementation avoids this. The full technical notes are in our engineering documentation.
Which house system?
Whole Sign Houses (Sampoorna Bhava), following the Parashara tradition. The Lagna degree determines the Lagna sign; that entire sign is the first house, the next sign is the second house, and so on. We do not currently expose Placidus, Koch, or other quadrant house systems to users.
How accurate are the planetary positions?
To within arcseconds for dates between 1800 and 2400 CE, which covers all living users and several generations of ancestors. The Swiss Ephemeris accuracy for this period is better than 1 arcsecond for the inner planets and better than a few arcseconds for the outer planets. For Rahu and Ketu we use the mean node, which is standard in the Parashara tradition.
Do you calculate divisional charts?
Yes — the full set of classical divisional charts is calculated using the Parashara method as described in Brihat Parashara Hora Shastra:
| Chart | Division | Purpose |
|---|---|---|
| D9 Navamsa | 9th | Soul, marriage, dharma |
| D10 Dashamsa | 10th | Career and public life |
| D60 Shashtiamsha | 60th | Past life karma |
| D7 Saptamsha | 7th | Children and progeny |
| D12 Dwadashamsha | 12th | Parents and ancestry |
| D16 Shodashamsha | 16th | Vehicles and happiness |
| D20 Vimsamsha | 20th | Spiritual practice |
| D30 Trimshamsha | 30th | Misfortune and challenges |
For the D30 Trimshamsha we use the unequal division method from BPHS, not the simplified equal division used by some software.
Display of all divisional charts beyond D9 and D60 is being rolled out progressively — the calculations are complete, the chart views are in development.
Do you calculate Shadbala?
Yes. The full six-fold planetary strength system is calculated — all six components: Sthana Bala, Dig Bala, Kala Bala, Cheshta Bala, Naisargika Bala, and Drig Bala. Shadbala scores are available per planet and will be displayed progressively as chart depth features are rolled out.
Do you calculate Ashtakavarga?
Yes — Ashtakavarga and Sarvashtakavarga are calculated in full. We compute Bhinnashtakavarga per planet (bindus per sign) and the combined Sarvashtakavarga. The underlying Kakshya contributor table is used in the calculation; per-Kakshya output will be exposed as part of the advanced chart rollout.
Which Dasha system?
Vimshottari Dasha (120-year cycle) is our primary system, following the standard nakshatra-based calculation from BPHS. Antardasha and Pratyantardasha are both calculated. Yogini Dasha (36-year cycle) and Chara Dasha (Jaimini sign-based) are also calculated. Display of these secondary systems is being rolled out progressively.
On Interpretation
Your readings are AI-generated — how can they be accurate?
This is the right question to ask. We want to be transparent about what we are doing and what we are not doing.
What Ashoka does: Ashoka receives your complete birth chart — all nine grahas, their signs, houses, degrees, retrograde status, combust status, Shadbala scores, Yoga presence, your current Dasha lord, and your nakshatra. He generates a reading that speaks to the specific features of your chart — not a template filled with your sign.
A person with Mithuna Lagna and Ketu conjunct the Lagna in the first house gets a different reading from someone with Mithuna Lagna and no planets near the Lagna. Ashoka notices Ketu there and speaks to it. A debilitated planet whose debilitation is cancelled generates a different reading from one that simply remains debilitated.
What Ashoka does not do: Ashoka is not a practising Jyotishi with decades of experience. He does not replace a consultation with a skilled human practitioner. For important life decisions — marriage timing, career transitions, health concerns — we encourage you to seek a qualified Jyotishi. Ashoka is a starting point, not a substitute.
The honest position: We believe AI-generated readings, when grounded in accurate chart data and guided by classical principles, can be genuinely valuable for the vast majority of users who have never had a Jyotish reading and would benefit from an accessible, personalised introduction. We do not claim to replicate the depth of a skilled human practitioner.
Which tradition does Ashoka follow?
Primarily the Parashara tradition — Brihat Parashara Hora Shastra is our primary textual reference. Where BPHS is ambiguous or silent we note the variation and take a considered position. We are aware that the Jaimini tradition, the Krishnamurti Paddhati, and other systems offer different and sometimes contradictory approaches. We note these differences where they affect interpretation.
How do you handle functional benefics and malefics?
We follow the BPHS classification per lagna — implemented in full for all 12 lagnas. The Yogakaraka for each lagna is identified and its position is given special weight in readings. Functional malefics are identified and their gemstone recommendations are handled with care — we do not recommend gems for functional malefics.
Do you detect Yogas?
Yes. We detect the major classical Yogas algorithmically from the chart data — Raj Yoga, Dhana Yoga, Pancha Mahapurusha (all five), Gajakesari, Viparita Raja, Neecha Bhanga Raja Yoga, and Kemadruma. Where a significant Yoga is present, Ashoka references it in the reading. We will expand the Yoga library over time.
How do you handle Neecha Bhanga?
We implement all four classical cancellation conditions from BPHS. A debilitated planet whose debilitation is cancelled by any of the four conditions is treated as a Neecha Bhanga Yoga and interpreted accordingly — the debilitation is noted but the cancellation and its effects are given due weight.
What about Rahu and Ketu?
We use the mean node for Rahu and Ketu, which is standard in the Parashara tradition. We are aware that some practitioners prefer the true node. We plan to offer a user setting for this in future.
For functional nature, Rahu and Ketu act as agents of the planet ruling the sign they occupy and of any planet they conjoin. They do not have an independent functional benefic or malefic classification.
On the Shashtiamsha (D60)
The D60 deserves special mention because we take it seriously in a way that most apps do not.
We implement the full 60 Shashtiamsha divisions with their names and quality classifications from BPHS. We understand that the D60 is sensitive to birth time — each division spans only 0.5° of longitude, changing every 2 minutes of clock time. We communicate this clearly to users and check birth time accuracy before displaying D60 results.
We use the D60 to assess the karmic quality of each planet — not as an afterthought but as a meaningful layer of the reading for users who have accurate birth times. The Shashtiamsha name and quality of each planet is available in the chart and informs Ashoka's reading of that planet's deeper karmic nature.
On the Sky Guide
We calculate planet positions in the sky (altitude and azimuth) using
the Swiss Ephemeris swe.azalt() function from the user's current GPS
location — because the sky guide shows what is visible from where the
user stands tonight, not where they were born.
We connect tonight's sky to the user's natal chart — noting when the user's lagna lord or Dasha lord is visible, which natal houses the transiting planets are activating, which nakshatra each visible planet currently occupies, and whether any planet is at or near its highest point in the sky (culmination). We note this as especially significant, as classical texts consider a planet at its highest altitude to be particularly powerful.
This personalised sky-to-chart connection does not exist in any other consumer Jyotish application. We built it because we believe the sky above is not abstract — it is a living map of the forces acting on this specific person's chart right now.
On the Panchang
We calculate all five Panchang elements in real time from the user's
location — Tithi, Vara, Nakshatra, Yoga, Karana — and we surface a great
deal more on the dedicated Panchang page (/panchang). We do not use
pre-published almanac tables. Everything is generated from first principles
using the Swiss Ephemeris, which means our Panchang is accurate for any
location on Earth, not just for a fixed city.
The home page shows a novice-friendly summary — the five elements with
plain-English glosses, an Ashoka-voice opener, and a deterministic
"favours / avoid" guidance line. The full /panchang page (signed-in users)
adds:
- Sunrise, sunset, moonrise, moonset, and solar noon for the day
- The three traditional inauspicious time windows — Rahu Kaal, Yamaganda, Gulika — derived by dividing the daylight span into eight equal segments and selecting the weekday-indexed segment per the BPHS table
- The auspicious Abhijit Muhurta — a 24-minute window centred on solar noon
- The full Choghadiya sequence — eight day periods (sunrise → sunset) and eight night periods (sunset → next sunrise), each labelled by name, planetary lord, and quality (auspicious / neutral / inauspicious)
- Intra-day transitions of all five elements — when today's Tithi gives way to the next, when the Moon enters the next Nakshatra, and so on, computed by sidereal-longitude bisection to ~1-second precision
- Detection of named yogas active during the day: Sarvartha Siddhi and Amrita Siddhi (auspicious, by Vara × Nakshatra combinations), Vyatipata and Vaidhriti (the inauspicious Panchang yogas), Bhadra (when the karana is Vishti), Panchaka (the Moon traversing Dhanishta through Revati), and Rikta Tithi (the 4th, 9th, and 14th of either fortnight)
For a signed-in user with a birth time on file, the page opens with a short personal reading rather than the generic summary. It weighs today's sky against the user's natal Moon on two classical measures — Taarabala (Star Strength: where today's Nakshatra falls in the nine-fold cycle counted from the birth star) and Chandrabala (Moon Strength: the house the transiting Moon occupies counted from the natal Moon sign) — and renders a deterministic paragraph and chips naming both. Beneath it sits a timing bar, an honest four-band timeline across the civil day (favourable / neutral / caution / avoid). With a birth time on file the bar is weighed to your chart: the day is divided into the 24 planetary Horas (planetary hours), and each is scored under a tiered rule — the unmissable shared windows rule outright (Abhijit favourable; Rahu Kaal, Yamaganda, Gulika and Vishti/Bhadra best avoided), then Chandrabala sets the hour's underlying lean, and the hora's ruling planet (friendly or difficult for your ascendant) together with the shared Choghadiya and Taarabala nudge it up or down a band. With no birth time on file the bar falls back to the impersonal reading: the day's shared muhurtas — Choghadiya quality together with the Rahu Kaal / Yamaganda / Gulika windows, Abhijit dispelling an overlapping inauspicious window — into one band per moment, so it renders for everyone. Either way we never guess a birth Moon; the personal layer simply isn't drawn without a birth time.
Above all this, the personal block opens with a single daily verdict — one line saying how the day leans for you overall (supportive, steady, mixed, or one to tread gently), with a plain-language reason naming why: which house the Moon strengthens, the day's taara, and the hours that favour you. It is rolled up from the same timing bar shown below it — so the headline and the band can never disagree — and, like everything else here, it is composed deterministically with no AI.
A signed-in user with a birth time can also look ahead: a "Days ahead" tab weighs each of the coming days (a week at a glance, expandable to a month) against the same chart and marks each favourable, steady, mixed, or cautious — a forward outlook for choosing a good day, not only reading today. It is the same per-hour scoring rolled up to one verdict per day, computed from first principles for each day, and every day taps through to its full personal Panchang. We never pre-publish a "lucky days" table.
Festivals and vrats are not on the Panchang page — they live on a separate
Vedic calendar page (/calendar), since they are a different concern: the
Panchang names the quality of a day, the Calendar names the occasions
of a day.
Hora (the 24 planetary hours) is not surfaced as a standalone table — it remains a specialist layer most novices and even serious students don't consult hour by hour. It does, however, work quietly inside the personalised timing bar above, where each hora's ruling planet helps score the hour against your chart rather than being listed on its own.
On Today's Reading
The Today dimension of Your Chart (/your-chart/today, signed-in verified
users only) reads the present sky against the user's natal chart. We calculate
the live sidereal positions of all nine grahas using the same Lahiri ayanamsa
as the natal chart, overlay them onto the user's natal whole-sign houses, and
surface three transits we judge to be speaking loudest right now. Each day's
reading is saved, so a reader can revisit earlier days from the history drawer
or by date (/your-chart/today/<date>).
For v1 we always surface Shani, Guru, and Rahu — the three slowest movers, and therefore the three with the longest narrative arcs. We attach dignity (exalted / debilitated / own sign), retrograde state, whether the graha aspects the lagna sign, whether it has returned to the sign it occupied at birth, and — for Shani only — the Sade Sati phase (rising, peak, or setting). A more sophisticated, configurable scoring rule for "the three loudest" is planned and tracked separately; the current heuristic is intentionally opinionated rather than dynamic.
The reading itself — a personalised one-line opener for the hero, three
short Ashoka-voice insights tied to the actual transits, a Bhagavad Gita
verse selected by the natal lagna's themes blended with today's transiting
Moon (so the verse rotates daily), and an optional "Go deeper" passage on
one of six life areas — is generated by claude-sonnet-4-6. Each daily
reading is cached in Postgres keyed by (user, profile, reading_date) and
returned unchanged for the rest of the day, so the API is hit at most once
per user per day.
Panchang or Today's Reading — when versus why
Both of these pages speak to "today," and it is worth saying plainly how they differ, because they answer different questions.
The Panchang is the day's own clock. It reads the Moon and the Sun against the day — the tithi, nakshatra, yoga, karana and vara, the auspicious and inauspicious windows, the planetary hours — and, once your birth time is on file, weighs those hours against your chart. It answers when: when in the day to begin something, which hours to favour, which to let pass. It is deterministic, and it changes hour by hour.
Today's Reading is your chart's clock. It sets the slow-moving grahas — Shani, Guru, Rahu — where they sit in the sky now over the houses of your birth chart, and reads what that means for the longer arcs of your life. It answers why: why a season feels the way it does, what is being asked of you, where the weight is. It is interpretive, and it changes across weeks and months, not hours.
Put simply: the Panchang tells you when to act; Today's Reading tells you what is moving, and why. They are meant to be read together.
On the Calendar
The Vedic calendar (/calendar) is a month-by-month almanac of the days
the Hindu calendar marks as significant — the lunar fortnightly observances
(every Ekadashi, Pradosh, Purnima, Amavasya), the twelve annual sankrantis
as Surya moves between sidereal signs, and the named festivals that
recur on specific (Hindu lunar month, paksha, tithi) combinations.
Event dates are computed from first principles with pyswisseph using the
same Lahiri ayanamsa and .se1 ephemeris files as everything else on the
site. Festival rules live in a curated YAML — about a hundred and thirty
entries spanning the major all-India festivals, the twenty-four named
Ekadashis, the regional new-year cluster (Vishu, Vaisakhi, Bohag Bihu,
Pohela Boishakh, the four-day Pongal arc, the ten-day Onam arc), and the
sectarian content (Sikh Gurpurabs, the eight-day Paryushan, Buddha
Purnima, and sect-distinctive observances of Swaminarayan, Gaudiya
Vaishnava, Tamil Shaiva, and Bengali Shakta traditions).
Most festivals map a (Hindu lunar month, paksha, tithi) triple to a name —
Holi is always Phalguna Shukla Purnima, Diwali always Ashwin Krishna
Amavasya; the Gregorian dates fall out of the maths. For festivals
anchored differently the scanner has four rule shapes:
- Tithi-based (the default) — anchored to a Hindu lunar month + paksha + tithi
- Weekday-in-month — every Monday in Shravana is a Shravan Somvar Shiva vrat
- Solar-anchored — Vishu, Vaisakhi, Bohag Bihu, Pohela Boishakh and the four Pongal days fire relative to the sun's entry into a sidereal sign rather than a lunar tithi
- Nakshatra-in-solar-month — the ten Onam days name the moon's nakshatra inside the solar Malayalam month Chingam; Karthigai Deepam similarly anchors to the moon in Krittika inside solar Karthikai
The lunar month is named Amanta-style — months run Amavasya → Amavasya, with the bright fortnight (Shukla / Sud) first and the dark fortnight (Krishna / Vad) ending at Amavasya. The month is named for the sun's sidereal sign at the Purnima inside that span (sun in Karka → Shravana, sun in Simha → Bhadrapada, etc.). We also detect Adhik Maas — the intercalary lunar month that recurs every ~32 months when a lunar cycle contains no Sankranti (sun stays in one sidereal sign across the whole lunar month) — so festivals don't fire on the "extra" month and the year stays in step with reality. Adhik Maas, when present, shares its name with the following Nij (regular) month (e.g. Adhik Jyeshtha precedes Nij Jyeshtha).
Multi-day festivals. Sharad Navaratri (nine nights), Pitru Paksha (fifteen tithis), Ganesh Utsav (eleven days), Diwali Week (five days), Pongal (four days), Onam (ten days), Paryushan (eight days) and Chaitra Navaratri (nine nights) are modelled as spans — a festival-level entity rather than a flat list of disconnected days. Each span has its own AI-generated overview prose ("about the festival") that appears as a second tab in any member day's popup, alongside the day-specific content. Spans bind visually in the grid as a thin colour-coded strip along the bottom of each member cell, so a user can see at a glance which days belong together.
Tradition and region. Every event carries a tradition tag (Hindu, Sikh, Jain, Buddhist) and a region tag (all-India, Tamil, Malayalam, Punjabi, Bengali, Marathi, Gujarati, Assamese, Odia, Kannada, Telugu). A settings-page tree lets users hide categories they don't observe; a shorter set of tradition pills near the bottom of the calendar offers quick toggle. Where two traditions observe distinct festivals on the same date — Ram Navami and Swaminarayan Jayanti both on Chaitra Shukla 9, Diwali night being simultaneously Lakshmi Puja for most Hindus, Bandi Chhor Divas for Sikhs, Mahavir Nirvana for Jains, and Kali Puja for Bengalis — we emit each as its own event with its own teaching, rather than collapsing them into a single composite. The calendar grid shows a small number of days a year with three or more events on them; this is the per-tradition principle made visible.
On sects. The tradition tag is religion-level (Hindu/Sikh/Jain/ Buddhist). Within Hinduism, distinctive sect observances — Swaminarayan sampradaya, ISKCON / Gaudiya Vaishnava, Tamil Shaiva, Bengali Shakta — get their own event rows rather than a separate "sect" schema field. This is a deliberate v1 choice: it captures the user-facing experience ("my festival is on the calendar") without introducing a new filterable dimension we'd then have to maintain.
The literary content for each event — Ashoka's reflection, the story
behind the day, and the technical jyotish breakdown — is generated once
by claude-sonnet-4-6 against the deterministic facts and frozen alongside
the model name in the database.
The calendar grid and the upcoming-event banner are visible to everyone — the grid renders the month as a chess-board with a vibrant accent colour per event type (Purnima moon-blue, Pradosh mars-red, Ekadashi jupiter- green, Sankranti mercury-teal, Amavasya rahu-indigo, festivals gold). The per-day detail — Ashoka's reflection, the story, and the jyotish panel, plus the "about the festival" tab when the day belongs to a multi-day span — opens for verified members; unverified visitors see a strip above the grid pointing them to sign-in or email verification. When the verified user has a primary birth chart on file with a birth time, the detail panel adds a deterministic per-user footer — e.g. "this Purnima falls across your 5th house — children, creativity, and what you've been making" — computed from where the relevant transit graha lands in the user's whole-sign houses counted from natal Lagna. No Claude call.
A search affordance fuzzy-matches festival names, alternate names (so "Pongal" finds Makar Sankranti, "Vesak" finds Buddha Purnima, "Saraswati Puja" finds Vasant Panchami) and span names ("Navaratri" lands on the nine-night span as a single card rather than nine separate hits).
A nightly Railway cron extends the forward edge of the window by one month at a time so the calendar always sits about twelve months ahead of today.
On the Teaching Pages
Alongside the calendar we publish a set of open, evergreen teaching
pages — a festival library (/festivals) and a glossary (/learn).
Each festival page gives a festival's dates across several years, the
lunar (or solar) logic that moves them, and a plain-English account of
its meaning and observance; the glossary explains the terms a newcomer
meets — the five limbs of the Panchang, the nine grahas, and the
twenty-seven nakshatras. The festival dates are drawn from the same
calculated calendar described above.
These pages are deliberately descriptive and freely available: they teach, and gemstone or remedy material on them is presented as tradition rather than prescription. They are distinct from the personalised, chart-specific reading, which stays gated.
On Ishta Devata
We derive the Ishta Devata following the classical method — identifying the Atmakaraka (planet with the highest degree among the seven classical planets), placing it in the Navamsa (D9) to find the Karakamsha, and identifying the deity associated with the lord of the 12th house from the Karakamsha.
We follow the BPHS-aligned deity mapping for each ruling planet. Where multiple deities are associated with a single planet we note the primary deity and the variants. The Ishta Devata is not a trivial addition — it is the bridge between Jyotish and devotional practice, and we give it the reverence it deserves in Ashoka's presentation.
What We Are Not
We want to be clear about our current limitations:
-
We are not a replacement for professional Jyotish consultation. For significant life decisions, please consult a qualified practitioner.
-
We calculate Vimshottari, Yogini, and Chara Dasha. Display of Yogini and Chara Dasha is being rolled out progressively.
-
We do not support Prasna (horary). This is a distinct discipline requiring a separate approach and is not currently planned.
-
We do not support Tajika (annual chart) or other Persian-derived techniques at this time.
-
Our Yoga detection is comprehensive but not exhaustive. There are hundreds of named Yogas in classical texts — we implement the most significant and will expand over time.
-
We use Lahiri ayanamsa only at present. Other ayanamsas are planned.
-
We use the mean node for Rahu and Ketu. True node support is planned.
-
Our calendar verification against external sources is partial. Our scanner produces dates from first-principles ephemeris computation; a ~30-festival ground-truth set cross-checks against DrikPanchang for the core all-India observances. The newer sect-specific and regional additions (Onam, Pongal sub-days, Swaminarayan/ISKCON/Tamil Shaiva events) are not yet in that comparison set. A periodic auto-diff against DrikPanchang + per-event year-on-year sanity checks in the nightly cron are tracked as a hardening item.
-
Within-Hindu sect coverage is layered. The four-religion tradition tag (Hindu / Sikh / Jain / Buddhist) is the only filterable dimension; sect-distinctive observances (Swaminarayan, ISKCON, Tamil Shaiva, Bengali Shakta) emit as their own event rows but are all tagged
tradition: hindu. A sect-level filter is not currently planned — most diaspora users observe across sect lines and the region tag already captures the linguistic-community signal. Tier 2 sects (Lingayat, Sri Vaishnava, Pushtimarg, Sant traditions, Bengali Durga Puja arc) are not currently on the calendar.
Our Reference
The primary classical text guiding our implementation is Brihat Parashara Hora Shastra (BPHS). Where we deviate from BPHS we note it. Where BPHS is ambiguous we note the ambiguity rather than presenting one position as certain.
We welcome corrections, challenges, and dialogue from knowledgeable practitioners. If you find a calculation error or a significant interpretive omission, please write to us. We take this seriously.
A Final Note
Jyotish is a vast and living tradition. No software fully captures it. The greatest Jyotishis we know of use calculation tools as a starting point, not an ending point — they bring decades of study, intuition, and human sensitivity to the chart that no calculation engine can provide.
We are building withAshoka as the best possible accessible entry point into Jyotish — technically rigorous, grounded in classical sources, and honest about what it is and is not. We hope serious students will find it a worthy companion to deeper study, and that it will send many more people toward that deeper study.
— The withAshoka team
withashoka.com