ZodicogAI is a deployed hybrid symbolic-generative system for compatibility, communication, and relationship intelligence. It combines deterministic multi-framework profile computation across zodiac, MBTI, numerology, attachment, love styles, and related signals with schema-constrained LLM interpretation to generate grounded, explainable user-facing insights. Rather than relying on free-form generation, the system routes narrative output through pre-computed symbolic features and structured schemas.
This work presents ZodicogAI, a deployed hybrid symbolic-generative system for compatibility, communication, and relationship intelligence. 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 — spanning zodiac archetypes, MBTI cognition, attachment patterns, love styles, numerology, and related signal families — and routing LLM inference through schema-constrained prompt templates, ZodicogAI produces outputs that are more specific, reproducible, and structurally 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:
- A ten-dimension behavioral encoding scheme with deterministic compatibility matrices across all dimension pairs
- A 13-class analysis type taxonomy with intent-driven prompt routing and schema-locked Pydantic output validation
- A conversational oracle (Zodicognac) with session memory, full history passthrough, and per-session continuity across arbitrary turn depth
- A dual-model inference architecture with proactive TTL-aware context cache management and reactive failure invalidation
- A 360-profile celebrity database rendered fully statically, enabling zero-latency astrological profiling at scale
- Reproducible evaluation on relationship reasoning tasks against generic LLM baselines
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 multi-framework behavioral intelligence 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.
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.5 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
Each user profile is encoded into a structured behavioral vector spanning ten independent dimensions:
- 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[])
- 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)
- 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.
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- Computation: MBTI F/T judgment axis × E/I energy axis → conflict resolution style scoring
- Output:
CommunicationProfile(directness_score, emotional_intensity, conflict_approach, validation_need)
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.
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.
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.
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)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_contentnames.
Fallback: Gemini 2.5 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 cacheAnalysis 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] = resultRationale: 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.
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/
├── 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
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:
generate_celeb_bios.pyiterates the 360-entry celebrity list- Each celebrity: POST
/analyze/celebrity→ full astrological profile via Gemini - Results committed to
celeb-bios.json(resumable with--resumeflag) - 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 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.
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 8000Evaluated 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
Zodicog = Zodiac + Cognition
A portmanteau encoding the core methodology: the intersection of symbolic astrological archetypes with modern cognitive and behavioral science. The system integrates these not as competing belief systems but as complementary structured encoding schemes within a unified compatibility intelligence layer.
The LLM synthesises. The deterministic engines ground. Neither operates alone.
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.
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.
@software{zodicogai2026,
title = {ZodicogAI: Hybrid Symbolic-Generative Compatibility Intelligence},
author = {Vannemreddy, Sri Sai Karthik},
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
