May 5, 2026 · 9 min read

Char Dham, 12 Jyotirlinga, 7 Sapta Puri: religious circuits as data.

Indian pilgrimage isn't ad-hoc. It's a small number of named circuits, each with a canonical list and (often) a canonical sequence — Char Dham (4 sites), 12 Jyotirlinga (12 Shiva sites), Sapta Puri (7 sacred cities). Generic LLMs hallucinate the lists. Treating them as data — rows, sequences, joins — fixes that.

Why this matters for an agent

A pilgrimage user is, by definition, prescriptive. They are not asking for "interesting temples" or "spiritual experiences." They have come with a fixed list — usually given to them by family, a guru, or a local trust — and they want to complete it. Recommending a different temple because it sounds similar is a product failure, not a creative liberty.

We treat these circuits as data, not doctrine. The point isn't to take a position on theology — it's to encode the lists that operators, trains, and pilgrim trusts already use, with the spelling and sequence they actually use, so the agent's output matches the customer's expectation.

Char Dham — two senses

The word means "four abodes" and is used in two distinct senses, which is itself a common LLM failure point.

Original Char Dham (Adi Shankara, all-India)

  1. Badrinath — Uttarakhand, north
  2. Dwarka — Gujarat, west
  3. Puri (Jagannath) — Odisha, east
  4. Rameswaram — Tamil Nadu, south

Chota (Himalayan) Char Dham

  1. Yamunotri
  2. Gangotri
  3. Kedarnath
  4. Badrinath

The Himalayan circuit is the one most operators sell as a single multi-week package and the one with a canonical west-to-east route sequence. The all-India version is rarely done as one trip; pilgrims typically tick it off across years. An agent that conflates the two will produce nonsense like "your 7-day Char Dham tour starts in Dwarka and ends in Yamunotri" — geographically incoherent at any sensible duration.

12 Jyotirlinga

The twelve self-manifested Shiva shrines. Spread across nine states from Kashmir to Tamil Nadu. The traditional order is the order given in the Dwadasha Jyotirlinga Stotra — recited geographically around the country. Our table stores the canonical list:

  1. Somnath — Gujarat
  2. Mallikarjuna — Andhra Pradesh (Srisailam)
  3. Mahakaleshwar — Madhya Pradesh (Ujjain)
  4. Omkareshwar — Madhya Pradesh
  5. Kedarnath — Uttarakhand
  6. Bhimashankar — Maharashtra
  7. Vishwanath — Uttar Pradesh (Varanasi)
  8. Trimbakeshwar — Maharashtra
  9. Vaidyanath — Jharkhand (Deoghar; some traditions place it elsewhere — we tag the variant)
  10. Nageshwar — Gujarat (near Dwarka; another variant in Maharashtra is tagged)
  11. Rameshwaram — Tamil Nadu
  12. Grishneshwar — Maharashtra (near Ellora)

Two of the twelve have multi-site claims (Vaidyanath, Nageshwar). LLMs frequently pick one without indicating that the other exists, or worse, average them into a single hallucinated location. We store both with a variant field so the agent can surface the disagreement honestly rather than pick a side.

Sapta Puri — seven sacred cities

The seven cities considered moksha-granting in the Garuda Purana:

  1. Ayodhya — Uttar Pradesh
  2. Mathura — Uttar Pradesh
  3. Haridwar — Uttarakhand
  4. Varanasi (Kashi) — Uttar Pradesh
  5. Kanchipuram — Tamil Nadu
  6. Ujjain (Avantika) — Madhya Pradesh
  7. Dwarka — Gujarat

Sapta Puri is the most LLM-hallucinated of the three. The list is less commercially packaged than Char Dham or the Jyotirlingas, so training data is sparser; models reliably substitute Tirupati, Rishikesh, or Pushkar for one of the seven. Treating it as a six-row pinned table with the canonical names solves that in one SQL join.

The data shape

Each circuit is a row in circuits; each member site is a row in circuit_stops joined to the city table. Per stop we store:

What an agent does with this

Three things, roughly. (1) When a user mentions "Char Dham," disambiguate which sense and offer the correct stops; never fall back to the model's averaged version. (2) When generating an itinerary, sort by sequence_no and respect the canonical order — pilgrims notice. (3) When a model wants to cite a name, pull name_canonical from the row rather than letting the model spell it; English transliterations vary and the spelling on the operator's brochure must match the spelling in the agent's reply.

None of this is doctrinal — it is the same pattern as any structured retrieval substrate. The lists are stable, the sequences are stable, the variants are documented. The model's job is to be polite and fluent. The data's job is to be right.

TravelMindsAI ships 15 named tourism circuits, including the major pilgrimage circuits, with canonical sequences and per-row metadata. Free tier 1,000 calls/month. Starter $49/mo, Growth $249/mo.

Sign up — free See India coverage →