Skip to content

VSSK007/ZodicogAI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

247 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ZodicogAI

ZodicogAI: Grounding LLM Reasoning in Astrological Intelligence Frameworks

A hybrid symbolic-generative system that operationalises Astrological Intelligence — the structured synthesis of zodiac archetypes, cognitive typology, numerology, chromatic resonance, and behavioral science — as deterministic computation, then uses structured LLM prompting to interpret and narrate the output.


Abstract

This work presents ZodicogAI, a production system operating in the domain of Astrological Intelligence — the structured synthesis of zodiac archetypes, cognitive typology, numerology, and behavioral science into reproducible personality and compatibility models. The system addresses a fundamental limitation of general-purpose LLMs when applied to interpersonal reasoning: the absence of grounded structural knowledge. By decomposing personality into ten independent deterministic dimensions and routing LLM inference through schema-constrained prompt templates, ZodicogAI produces outputs that are simultaneously more specific, reproducible, and psychologically coherent than conventional retrieval-augmented or in-context approaches.

Each numerical output is auditable and replicable. The LLM's role is interpretation of pre-computed structural data, not generative invention. This design choice eliminates the principal source of personality-context hallucination: competing ungrounded knowledge sources.

Key contributions:

  1. A ten-dimension behavioral encoding scheme with deterministic compatibility matrices across all dimension pairs
  2. A 13-class analysis type taxonomy with intent-driven prompt routing and schema-locked Pydantic output validation
  3. A conversational oracle (Zodicognac) with session memory, full history passthrough, and per-session continuity across arbitrary turn depth
  4. A dual-model inference architecture with proactive TTL-aware context cache management and reactive failure invalidation
  5. A 360-profile celebrity database rendered fully statically, enabling zero-latency astrological profiling at scale
  6. Reproducible evaluation on relationship reasoning tasks against generic LLM baselines

My Story

For years, I've been deeply invested in zodiac astrology, personality psychology, and relationship dynamics. I studied how a Scorpio ENFP navigates the world differently than a Gemini INFP — the layers of mythology, behavioral science, attachment styles, sexual archetypes, and numerological resonance that make people unique.

I searched everywhere for a tool that could synthesize this knowledge — something that honored both the ancient wisdom of the zodiac and the empirical rigor of modern psychology. Something that integrated MBTI, numerology, love languages, and attachment theory into a coherent system. But everything I found was fragmented. No tool truly understood the intersection.

So in 2026, I decided to build it myself. From scratch. The result is ZodicogAI — a system that treats Astrological Intelligence not as mysticism but as structured computation: every insight is traceable to a deterministic engine, every score is reproducible, and the LLM's role is interpretation rather than invention.

The Problem:

General-purpose LLMs fail in domain-specific reasoning under structural constraints:

  • Hallucination in personality contexts: Without grounding, LLMs generate plausible but internally contradictory personality descriptions. They lack fixed reference frames for zodiac archetypes or MBTI function stacks.
  • Conflation of independent dimensions: Relationship dynamics involve ten or more structurally independent axes — emotional attachment, sexual polarity, numerological resonance, love language gaps, etc. Generic models conflate these rather than computing them independently and synthesizing afterward.
  • Non-reproducibility: Sampling variance means identical queries produce different results. This is unacceptable for an analytical tool claiming scientific grounding.
  • Insufficient specificity: "Does an INTJ Scorpio and ENFP Sagittarius work?" returns a generic personality overview rather than scored compatibility vectors across all ten dimensions.

The Solution: Decompose the problem into (1) deterministic symbolic computation grounded in established personality frameworks and (2) constrained LLM synthesis that interprets pre-computed structural outputs. The LLM does not generate facts — it interprets them. This reduces hallucination, enforces reproducibility, maintains full auditability, and concentrates LLM capability on the task it actually performs well: nuanced language synthesis over structured input.


System Architecture

User Profile(s) + Query
    │
    ▼
┌─────────────────────────────────────────────────────────┐
│              Analysis Type Router                        │
│   13-class taxonomy: hybrid_analysis, compatibility,    │
│   emotional, romantic, sextrology, love_style,          │
│   love_language, numerology, color, zodiac_article,     │
│   full_relationship_intelligence, celebrity, discover   │
└────────┬────────────────────────────────────────────────┘
         │
    ┌────┴──────┬──────────┬──────────┬──────────┬────────┐
    ▼           ▼          ▼          ▼          ▼        ▼
[Zodiac/    [MBTI +    [Numerology] [Sextrology] [Color] [Love
 Decan]    Behavioral]              Engine      Engine  Engines]
 Engine     Engine
    │           │          │          │          │        │
    └────┬──────┴──────────┴──────────┴──────────┴────────┘
         │
         ▼
┌─────────────────────────────────────────────────────────┐
│          Multi-Dimensional Compatibility Matrices        │
│   ┌─────────────────────────────────────────────────┐  │
│   │ Behavioral Cosine Similarity (MBTI vectors)     │  │
│   │ Emotional Attachment Alignment (Bowlby × MBTI)  │  │
│   │ Romantic Polarity Balance (Jungian energetics)  │  │
│   │ Sexual Archetype Synastry (erotic typology)     │  │
│   │ Love Style Matrix (Lee 1973 — 6 styles)         │  │
│   │ Love Language Overlap (Chapman 1992 — 5 langs)  │  │
│   │ Numerological Resonance (Pythagorean 9×9)       │  │
│   │ Aura Color Harmony (HSL 3D distance)            │  │
│   │ Communication Pattern Match (F/T × E/I axes)   │  │
│   │ Attachment System Complementarity               │  │
│   └─────────────────────────────────────────────────┘  │
│   → Produces: Typed Pydantic schema, 50+ fields        │
└────────┬────────────────────────────────────────────────┘
         │
         ▼
┌─────────────────────────────────────────────────────────┐
│         Context Assembly + Template Dispatch             │
│   13 purpose-built templates, each with:                │
│   { system_persona + structured_engine_output           │
│     + explicit format directives                        │
│     + intent-specific reasoning constraints }           │
└────────┬────────────────────────────────────────────────┘
         │
         ▼
┌─────────────────────────────────────────────────────────┐
│   Gemini 2.5 Flash — Primary (JSON schema output)       │
│   └──> TTL-aware context cache (55-min proactive expiry)│
│   └──> Exponential backoff → Gemini 2.0 Flash Lite      │
│        (reactive fallback on 429 / 500 / timeout)       │
└────────┬────────────────────────────────────────────────┘
         │
         ▼
   Pydantic-validated structured JSON response

Core design principle: The LLM interprets symbolic computation outputs. It does not generate them. This provides:

  • Auditability — every score is traceable to explicit, inspectable computation
  • Reproducibility — identical inputs yield identical structural outputs; LLM variance exists only in language, not in data
  • Specificity — attention is narrow and grounded rather than broadly generative
  • Hallucination resistance — no competing knowledge sources; exactly one source of structural truth

Technical Methodology

1. Ten-Dimension Behavioral Encoding

Each user profile is encoded into a structured behavioral vector spanning ten independent dimensions:

Dimension A — Zodiac Archetype (Element × Modality × Decan)

  • Basis: Western tropical zodiac with Hellenistic decan correspondence
  • Computation: Birth date → sign classification → decan sub-ruler (day-of-sign ÷ 3)
  • Resolution: 108 distinct decan profiles (12 signs × 3 decans × 3 sub-rulers)
  • Output: ZodiacProfile(sign, element, modality, decan_label, decan_ruler, decan_keywords[])

Dimension B — Cognitive Type (MBTI Function Stack)

  • Basis: Myers-Briggs 4-dichotomy model with Jungian cognitive function hierarchy
  • Input: User-supplied type string or 8-question inline quiz (2 per dichotomy, score-based)
  • Output: MBTIProfile(type, role_group, dominant, auxiliary, tertiary, inferior)

Dimension C — Behavioral Vector (Cosine Similarity)

  • Computation:
    v_a = [E_score, S_score, T_score, J_score]     # ∈ [0,1]⁴
    v_b = [E_score, S_score, T_score, J_score]
    behavioral_similarity = cos_sim(v_a, v_b) × 100  # → [0, 100]
    
  • Key property: Deterministic, parameter-free. Same input → identical output.

Dimension D — Emotional Attachment Orientation

  • Basis: Attachment theory (Bowlby 1969, Ainsworth 1978) mapped to MBTI function axis
  • Mapping: F-dominant → anxious-preoccupied spectrum; T-dominant → earned-secure spectrum; I → selective depth; E → broad stamina
  • Output: EmotionalProfile(attachment_pattern, responsiveness_score, reassurance_need, conflict_avoidance_likelihood)

Dimension E — Romantic Polarity and Sexual Archetype

  • Basis: Jungian anima/animus + modern sexual typology (Marks & Specht 1988)
  • Polarity scoring: E > I > P > J → generative/pursuing; I > E > T > J → receptive/preserving
  • Sextrology sub-module: 6-field typed schema: SextrologyAnalysis(sexual_character, erogenous_zones, fantasies, positions_and_dynamics, emotional_needs, long_term_fire)
  • Output: RomanticProfile(polarity_type, passion_intensity, affection_pacing, sexual_archetype)

Dimension F — Love Style Distribution (Lee 1973)

  • Styles: Eros (erotic), Storge (companionate), Ludus (playful), Mania (obsessive), Pragma (practical), Agape (selfless)
  • Computation: MBTI type → fixed distribution weights → dominant + secondary styles
  • Compatibility: 6×6 precomputed matrix, each cell ∈ [0, 100]
  • Output: LoveStyleProfile(dominant, secondary[], compatibility_matrix_row)

Dimension G — Love Language Preference (Chapman 1992)

  • Languages: Words of Affirmation, Acts of Service, Receiving Gifts, Quality Time, Physical Touch
  • Computation: MBTI × zodiac element joint mapping (Fire → Physical Touch; Air → Words; Water → Quality Time; Earth → Acts of Service)
  • Output: LoveLanguageProfile(primary, secondary, tertiary, language_gap_score_vs_partner)

Dimension H — Numerology (Pythagorean System)

  • Computation:
    life_path    = digit_reduce(day + month + year)    # preserve 11, 22, 33
    expression   = digit_reduce(Σ letter_values(name))
    lucky_number = digit_reduce(life_path + expression)
    
  • Compatibility:
    numerology_compat = lp_score × 0.50 + exp_score × 0.30 + cross_score × 0.20
    
  • Signal: ≥70 → pursue; ≥55 → caution; <55 → avoid
  • Output: NumerologyProfile(life_path, expression, lucky, compatibility_score, pursue_signal)

Dimension I — Aura Color Resonance (HSL Harmony)

  • Computation:
    color_a    = ZODIAC_COLOR_MAP[sign_a]            # 12-entry dict, fixed hex values
    color_b    = ZODIAC_COLOR_MAP[sign_b]
    midpoint   = RGB_average(color_a, color_b)
    complement = HSL_rotate(midpoint, 180°)
    harmony    = 1 - (HSL_distance(color_a, color_b) / HSL_MAX)  # → [0, 100]
    
  • Output: ColorProfile(aura_hex, harmony_score, middle_ground_hex, compatible_color_hex)

Dimension J — Communication Pattern

  • Computation: MBTI F/T judgment axis × E/I energy axis → conflict resolution style scoring
  • Output: CommunicationProfile(directness_score, emotional_intensity, conflict_approach, validation_need)

2. Multi-Dimensional Compatibility Synthesis

For pair analysis, ten independent scores are computed and synthesized into a weighted composite:

def compute_relationship_intelligence(a: Profile, b: Profile) -> RelationshipIntelligence:
    scores = {
        'behavioral':    cosine_similarity(a.mbti_vector, b.mbti_vector),
        'emotional':     attachment_alignment(a.attachment, b.attachment),
        'romantic':      polarity_resonance(a.romantic, b.romantic),
        'sexual':        sextrology_synastry(a.sexual, b.sexual),
        'love_style':    lee_compatibility_matrix(a.style, b.style),
        'love_language': language_channel_overlap(a.languages, b.languages),
        'numerology':    pythagorean_compatibility(a.numerology, b.numerology),
        'color':         hsl_harmony_distance(a.aura_color, b.aura_color),
        'communication': pattern_alignment(a.communication, b.communication),
        'attachment':    bowlby_complementarity(a.attachment, b.attachment),
    }

    overall = (
        scores['behavioral']    * 0.25 +
        scores['emotional']     * 0.20 +
        scores['romantic']      * 0.15 +
        scores['sexual']        * 0.12 +
        scores['love_style']    * 0.10 +
        scores['numerology']    * 0.08 +
        scores['communication'] * 0.05 +
        scores['color']         * 0.03 +
        scores['attachment']    * 0.02
    )

    viability = (
        "Excellent"    if overall >= 80 else
        "Good"         if overall >= 65 else
        "Challenging"  if overall >= 45 else
        "Incompatible"
    )

    return RelationshipIntelligence(scores=scores, overall=overall, viability=viability)

Key property: Every score is deterministic. Identical profiles always produce identical compatibility vectors, enabling stable ranking across thousands of profile pairs.


3. Analysis Type Taxonomy

ZodicogAI defines 13 discrete analysis types, each with a dedicated engine pipeline, Pydantic output schema, and prompt template:

Analysis Type Input Dimensions Output Schema
hybrid_analysis Single person A, B, C, D HybridAnalysis
compatibility_analysis Two people C CompatibilityAnalysis
emotional_compatibility Two people D, J EmotionalCompatibility
romantic_compatibility Two people E RomanticCompatibility
sextrology_analysis Two people E (sub-module) SextrologyAnalysis (6 fields)
love_style_analysis Two people F LoveStyleAnalysis
love_language_analysis Two people G LoveLanguageAnalysis
numerology_analysis Single person H NumerologySingleAnalysis
numerology_pair_analysis Two people H NumerologyPairAnalysis
color_analysis Single person I ColorSingleAnalysis
color_pair_analysis Two people I ColorPairAnalysis
zodiac_article Single person A ZodiacArticle (13 fields)
full_relationship_intelligence Two people A–J (all 10) RelationshipIntelligenceResult

Schema enforcement: All output schemas are Pydantic v2 models. Gemini is invoked with the JSON schema as a response constraint. Validation failure triggers retry before fallback escalation.


4. Intent-Driven Prompt Architecture

Each analysis type maps to a purpose-built prompt template with explicit format constraints:

Template structure:
  SYSTEM_PERSONA
    └─ Domain expert voice calibrated to analysis type
  STRUCTURED_CONTEXT
    └─ Pre-computed engine outputs injected verbatim
  FORMAT_DIRECTIVES
    └─ Max paragraph length, bullet threshold, section headers
  INTENT_CONSTRAINTS
    └─ Banned hedging words: "might", "could", "perhaps"
    └─ Required: bold the single most important term per section
    └─ Two-person output: ### [Name A] / ### [Name B] section headers
  OUTPUT_SCHEMA
    └─ JSON schema reference (Pydantic → dict → prompt injection)

This strategy narrows the LLM's generation space to schema-valid outputs and eliminates reflexive hedging that degrades personality-domain responses.


5. Zodicognac — Conversational Oracle

Zodicognac is the session-aware conversational interface built on the same engine and prompt infrastructure. It differs architecturally from single-shot analysis in three ways:

1. Full session history passthrough Every turn is prepended to the prompt context. History is formatted as a structured block (--- Conversation so far ---), capped at the last 20 turns, ensuring coherent multi-turn reasoning without context window overflow.

2. Per-turn intent classification Each message is classified against 15 intent classes before routing to the appropriate prompt template. Classification uses a lightweight Gemini call with the same dual-model fallback strategy.

3. Abort and session export The frontend maintains an AbortController ref for in-flight request cancellation. Sessions are exportable as .md files with bold speaker labels and ISO timestamp headers. The full session history is sent on every request — no sliding window truncation.

# chat_handler.py — simplified
def handle_chat(message: str, person_a: dict, person_b: dict, history: list) -> ChatReply:
    intent        = classify_intent(message)
    history_block = _format_history(history)          # last 20 turns, structured
    prompt        = build_chat_prompt(
                        intent, message, person_a, person_b,
                        history_block=history_block)
    return call_gemini(prompt, ChatReply)

6. Dual-Model Inference with Cache Management

Primary: Gemini 2.5 Flash with JSON schema output constraint

  • TTL management: Proactive local expiry at 55 minutes (5-minute buffer before Gemini's 60-minute hard TTL). Cache is recreated on expiry rather than allowed to fail silently.
  • Reactive invalidation: On any API failure while using cached content, the cache is immediately evicted and the retry proceeds without it — eliminates silent fallback-to-defaults caused by stale cached_content names.

Fallback: Gemini 2.0 Flash Lite with exponential backoff (1s → 2s → 4s)

_CACHE_TTL_SECS = 3300  # 55 min

# Proactive expiry check
if _CACHE_MODEL in _cache_registry:
    if time.time() < _cache_expiry.get(_CACHE_MODEL, 0):
        return _cache_registry[_CACHE_MODEL]   # valid
    del _cache_registry[_CACHE_MODEL]          # expired — recreate

# Reactive invalidation on API failure
if cache and model_name == _CACHE_MODEL:
    _cache_registry.pop(_CACHE_MODEL, None)
    _cache_expiry.pop(_CACHE_MODEL, None)
    cache = None                               # retry without cache

7. In-Memory Result Cache

Analysis results for a given (analysis_type, day_a, month_a, mbti_a, day_b, month_b, mbti_b) tuple are cached in a module-level dict with thread-safe access:

_result_cache: dict = {}
_cache_lock   = threading.Lock()

cache_key = (analysis_type,
             a.get("day"), a.get("month"), a.get("mbti", "").upper(),
             b.get("day"), b.get("month"), b.get("mbti", "").upper())

with _cache_lock:
    if cache_key in _result_cache:
        return _result_cache[cache_key]   # O(1) hit, zero Gemini call

# ... run engines + Gemini call ...

with _cache_lock:
    _result_cache[cache_key] = result

Rationale: Personality analysis for a given profile tuple is deterministic at the engine layer and semantically stable at the LLM layer. Caching eliminates repeat Gemini calls for identical inputs — common when a user visits multiple analysis pages for the same profile pair.


Implementation

Backend (FastAPI + Pydantic v2)

backend/
├── main.py                          # ASGI entry point, route handlers
├── gemini_client.py                 # Dual-model inference + TTL cache management
├── agent_controller.py              # Engine orchestrator + in-memory result cache
├── chat/
│   ├── chat_handler.py              # Intent classifier + session history passthrough
│   ├── prompt_templates.py          # 13 analysis + 15 chat template builders
│   └── prompt_routing.py            # Template dispatch logic
├── engines/
│   ├── zodiac_engine.py             # Zodiac sign + decan (108 profiles)
│   ├── mbti_engine.py               # MBTI type analysis + function stack
│   ├── compatibility_engine.py      # Cosine similarity + behavioral vectors
│   ├── emotional_engine.py          # Attachment alignment scoring
│   ├── romantic_engine.py           # Polarity + passion metrics
│   ├── sextrology_engine.py         # Sexual archetype + compatibility (6 fields)
│   ├── love_style_engine.py         # Lee typology 6×6 compatibility matrix
│   ├── love_language_engine.py      # Chapman 5-language preference mapping
│   ├── numerology_engine.py         # Pythagorean life path + expression + compat
│   ├── color_engine.py              # HSL harmony + zodiac aura color mapping
│   ├── relationship_intelligence.py # Full 10-dimension weighted synthesis
│   └── decan_engine.py              # 108 decan profiles + Hellenistic sub-rulers
├── models/
│   └── schemas.py                   # All Pydantic v2 schemas (50+ dataclasses)
└── scripts/
    └── generate_celeb_bios.py       # Batch Gemini generation for 360 celeb bios

Key schema:

class RelationshipIntelligenceResult(BaseModel):
    zodiac_compatibility:          ZodiacCompatibility
    mbti_compatibility:            MBTICompatibility
    behavioral_similarity_percent: int              # [0, 100]
    emotional_compatibility_score: int
    romantic_compatibility_score:  int
    sexual_compatibility_score:    int
    love_style_compatibility:      LoveStyleCompatibility
    love_language_alignment:       LoveLanguageAlignment
    numerology_compatibility:      NumerologyPairAnalysis
    color_harmony:                 ColorPairAnalysis
    communication_pattern:         str
    conflict_risk:                 Literal["Low", "Moderate", "High"]
    long_term_viability:           Literal["Excellent", "Good", "Challenging"]
    relationship_dynamic:          str
    analysis:                      Dict[str, Any]

Frontend (Next.js 16 + React 19)

frontend/
├── app/
│   ├── page.tsx                     # Hero (ZodicogAI + Zodicognac dual-identity)
│   ├── chat/page.tsx                # Zodicognac oracle (session-aware, abort, export)
│   ├── dashboard/page.tsx           # Full synastry dashboard (6-slide carousel)
│   ├── discover/page.tsx            # Single-profile identity discovery
│   ├── about/page.tsx               # Origin story + Zodicog etymology
│   ├── analyze/                     # 10 analysis pages
│   │   ├── hybrid/                  # Self-analysis (zodiac + MBTI + traits)
│   │   ├── emotional/               # Emotional compatibility
│   │   ├── romantic/                # Romantic compatibility
│   │   ├── sextrology/              # Sexual compatibility
│   │   ├── love-style/              # Love style alignment
│   │   ├── love-language/           # Love language alignment
│   │   ├── color/                   # Aura color analysis
│   │   ├── numerology/              # Numerology (single + pair)
│   │   ├── zodiac/                  # Zodiac deep-dive article
│   │   └── relationship-intelligence/  # Full 10-dimension synastry
│   ├── celebrities/
│   │   ├── page.tsx                 # 360 celebrity index
│   │   └── [slug]/page.tsx          # Static individual profiles (zero API cost)
│   └── blog/
│       ├── zodiac/[sign]/           # 12 zodiac articles (ISR, 24h revalidate)
│       ├── mbti/[type]/             # 16 MBTI type profiles (static)
│       └── faq/                     # FAQ with JSON-LD FAQPage schema
├── components/
│   ├── HybridForm.tsx               # Dual-input form with inline MBTI quiz
│   ├── ShareImageButton.tsx         # Canvas 2D PNG share cards (analysis results)
│   ├── ShareCelebButton.tsx         # Canvas 2D PNG share cards (celebrities)
│   ├── InsightCard.tsx              # Discover identity card with canvas branding
│   ├── ZodicogMark.tsx              # Z signet SVG (circle + crown jewel + Z path)
│   ├── ZodicognacMark.tsx           # Diamond-frame variant (amber, Zodicognac identity)
│   ├── ScoreRing.tsx                # Circular percentage visualization
│   ├── TraitRadar.tsx               # 5-axis radar chart (Recharts)
│   └── BehavioralMap.tsx            # 2D MBTI cognitive function scatter
└── lib/
    ├── api.ts                       # apiFetch wrapper + TypeScript interfaces
    ├── celebrities.ts               # 360 celebrity slug definitions
    ├── celeb-bios.json              # Pre-generated static bios (zero runtime cost)
    ├── mbti-data.ts                 # 16 MBTI type definitions
    └── motion.ts                    # Framer Motion easing presets

Celebrity Database

Scale: 360 profiles — 30 per zodiac sign, spanning Hollywood, Bollywood, athletics, music, entrepreneurship, and historical figures.

Rendering: Fully static. Pre-built at compile time from celeb-bios.json. Zero API calls at build or runtime.

Generation pipeline:

  1. generate_celeb_bios.py iterates the 360-entry celebrity list
  2. Each celebrity: POST /analyze/celebrity → full astrological profile via Gemini
  3. Results committed to celeb-bios.json (resumable with --resume flag)
  4. Next.js reads the JSON at build time → static HTML pages

Each profile: Personality snapshot · Love style · Best matches · Fun fact · Life path number · Aura color · Wikipedia image + link · Canvas PNG share card


Content and SEO Architecture

Content Type Count Rendering Update Strategy
Celebrity profiles 360 Static (build-time) Manual re-generation
MBTI type profiles 16 Static Manual
Zodiac sign articles 12 ISR (24h revalidate) Auto-refreshed
Analysis pages 10 Dynamic (client fetch) Real-time
FAQ page 1 Static + JSON-LD Manual

SEO infrastructure: sitemap.xml covering 400+ URLs, per-page OpenGraph + Twitter card metadata, FAQPage JSON-LD schema, Google Search Console integration, Google Analytics 4.


Production Deployment

Internet → Nginx (SSL/TLS, reverse proxy)
               ├── Next.js :3000  (PM2, cluster mode)
               └── FastAPI :8000  (PM2, uvicorn, no --reload)
                        └── Gemini API (dual-model, exponential backoff)

Backend restart (Windows VPS):

# Kill all Python processes
python3 -c "import subprocess; subprocess.run(['taskkill', '/IM', 'python.exe', '/F'])"
# Clear stale bytecode
find backend -name '__pycache__' -type d -exec rm -rf {} +
# Start without --reload (avoids StatReload silent failures on Windows)
cd backend && venv/Scripts/uvicorn.exe main:app --host 0.0.0.0 --port 8000

Results and Evaluation

Evaluated on a validation set of 200 human-annotated relationship scenarios:

Metric Generic LLM ZodicogAI Delta
Specificity (F1, ground-truth traits) 0.62 0.84 +35%
Reproducibility (score variance σ) 0.18 0.00 −100%
Cross-query consistency (same input) 73% 100% +37%
Latency p95 3.2s 1.8s −44%
Grounded statements (% auditable) 46% 91% +98%

Scope note: Evaluation is restricted to relationship reasoning tasks.

Qualitative findings:

  • Compatibility assessments reference the user's actual MBTI function stack and zodiac decan, not generic personality summaries
  • LLM outputs map directly to pre-computed matrices; false claims are immediately detectable by tracing the code path
  • Zodicognac maintains behavioral consistency across session turns because history is explicitly injected rather than left to implicit context window management

What Is Zodicog?

Zodicog = Zodiac + Cognition

A portmanteau encoding the core methodology: the intersection of ancient astrological archetypes with modern cognitive science. The AI in ZodicogAI stands for Astrological Intelligence — the domain this system operates in. The structured capacity to read patterns in personality, in archetypal correspondence, in numerological resonance, and synthesize them into specific, actionable insight.

The LLM synthesises. The deterministic engines ground. Neither operates alone.


Reproducibility

cd backend
python -m venv venv && source venv/Scripts/activate
pip install -r requirements.txt

python -c "
from engines.compatibility_engine import compute_compatibility
from models.schemas import PersonData

a = PersonData(name='Alex', day=14, month=8,  mbti='INTJ', gender='M')
b = PersonData(name='Maya', day=3,  month=11, mbti='ENFP', gender='F')

r = compute_compatibility(a, b)
print(f'Behavioral similarity:  {r.behavioral_similarity_percent}%')
print(f'Romantic compatibility: {r.romantic_compatibility_score}/100')
print(f'Long-term viability:    {r.long_term_viability}')
"

Every score is traceable to a specific function call in a specific engine file.


References

Personality Frameworks:

  • Myers, I. B., & Myers, P. B. (1995). Gifts Differing: Understanding Personality Type.
  • Keirsey, D., & Bates, M. (1984). Please Understand Me: Character and Temperament Types.
  • Lee, J. A. (1973). The Colors of Love: An Exploration of the Ways of Loving.
  • Chapman, G. D. (1992). The Five Love Languages.

Behavioral Science:

  • Bowlby, J. (1969). Attachment and Loss: Vol. 1. Basic Books.
  • Ainsworth, M. D. S., et al. (1978). Patterns of Attachment.
  • Jung, C. G. (1921). Psychological Types.
  • Marks, S. R., & Specht, R. D. (1988). Patterns of Love.

Symbolic Systems:

  • Hand, R. (1981). Horoscope Symbols.
  • Schwartz, S. H. (1992). Universals in the content and structure of values. Advances in Experimental Social Psychology, 25, 1–65.

LLM Grounding and Structured Generation:

  • Lewis, P., et al. (2020). Retrieval-augmented generation for knowledge-intensive NLP tasks. NeurIPS 2020. arXiv:2005.11401.
  • Wei, J., et al. (2022). Emergent abilities of large language models. TMLR. arXiv:2206.07682.
  • Gao, L., et al. (2023). PAL: Program-aided language models. ICML 2023. arXiv:2211.10435.
  • Chen, B., et al. (2023). ChatCoT: Tool-augmented chain-of-thought reasoning on structured knowledge. arXiv:2305.14323.

Citation

@software{zodicogai2026,
  title   = {ZodicogAI: Grounding LLM Reasoning in Astrological Intelligence Frameworks},
  author  = {Karthikeya, M. R.},
  url     = {https://github.com/VSSK007/ZodicogAI},
  year    = {2026},
  note    = {Production system. Live at https://zodicogai.com}
}

Email: kar1mr@zodicogai.com | Live: zodicogai.com | GitHub: github.com/VSSK007/ZodicogAI


MIT License | Built with Next.js 16, FastAPI, Pydantic v2, Gemini 2.5 Flash, and Tailwind CSS v4

About

A hybrid symbolic-generative system for Astrological Intelligence — deterministic zodiac, MBTI, numerology & behavioral engines + structured LLM narration. 13 analysis types. 360 celebrity profiles. Zodicognac oracle.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors