Feature Explosion — Compatibility, Daily Fortune, Tojeong Bigyeol, and Beyond

 


Once the Saju analysis engine stabilized, ideas started flooding in. Compatibility analysis, daily fortune, Tojeong Bigyeol (a traditional Korean fortune book). The problem was that each of these features would normally be a project-sized effort on its own. But with AI as a collaborator, the story was different.

The Foundation That Made Expansion Possible

The rule-based engine and AI interpretation layer covered in earlier installments — this hybrid architecture — became the critical foundation for feature expansion. Heavenly Stem and Earthly Branch calculations, Five Elements identification, Ten Gods analysis, combination and clash detection — all of this logic was modularized. Adding new features didn't require starting from scratch.

Take Compatibility Analysis (Gunghap) as an example. Analyzing each person's chart individually was something the existing engine already did. The only new layer needed was analyzing the relationship between two charts. The same was true for daily fortune: the user's natal chart already existed, and calculating today's Heavenly Stem and Earthly Branch was enough to derive the day's fortune.

The real value of modularization reveals itself not when you first design it, but when you expand. This project drove that lesson home.

Compatibility Analysis — CompatibilityPage

Compatibility is one of the most-requested features. Whether for romantic partners, spouses, or business partners, the desire to understand interpersonal chemistry is universal.

The implementation centered on the relationship between two Day Masters. We examine the Five Elements generation/destruction relationship between Day Masters, their Ten Gods relationship, and whether they form a Heavenly Stem combination. Then we layer in Earthly Branch analysis: Three Harmonies, Six Harmonies, Six Clashes. For example, a Gap Day Master and a Gi Day Master form a Heavenly Stem combination, suggesting natural attraction. Meanwhile, Gap and Gyeong are in an Indirect Officer relationship, indicating tension.

When I asked AI to "prioritize the important factors in compatibility analysis," it proposed four axes: Day Master relationship, Favorable Element complementarity, combination/clash patterns, and Five Elements balance compensation. We adopted this structure directly for the CompatibilityPage design. Enter two people's profiles, get per-axis compatibility scores plus a comprehensive analysis.

From Daily Fortune to Major Fate Cycles — Layers of Time

In Saju, "fortune" exists across multiple time scales. The Major Fate Cycle (Daewoon) spans 10 years, the Annual Fate Cycle spans 1 year, Monthly Fortune covers a month, and Daily Fortune covers a single day. Analyzing how each interacts with the natal chart is the essence of fortune reading.

The DailyFortunePage calculates the day's Heavenly Stem and Earthly Branch and analyzes their relationship with the user's natal chart. What Ten God does today's stem represent to your Day Master? Does today's branch form a harmony or a clash with your branches? The rule engine computes these factors, and AI generates natural-language advice like "today, be mindful of this."

Monthly and New Year fortunes follow the same logic, just at different time scales. Major Fate Cycle analysis is more complex — you need to calculate when each 10-year cycle begins and interpret its influence on the natal chart over a decade. The AI's natural language generation capabilities particularly shined when describing the transition periods between cycles, traditionally seen as times of significant life change.

One design consideration: requesting AI interpretation for daily fortune every single day would rack up API costs. So we made the rule engine's analysis output as rich as possible, triggering AI calls only when users request the "detailed analysis." A balance between cost and user experience.

Tojeong Bigyeol — Digitizing Traditional Fortune-Telling

Tojeong Bigyeol is a traditional Korean fortune-telling system attributed to the Joseon-era scholar Yi Ji-ham. Its calculation method differs from Saju. You derive an upper trigram from the birth year, a middle trigram from the birth month, and a lower trigram from the birth day, then combine them to select one of 144 hexagram-like outcomes, each with its own fortune text.

What fascinated me while building the TojungPage was Tojeong Bigyeol's structural simplicity. If Saju is "infinite combinations of interpretation," Tojeong Bigyeol is closer to "144 fixed texts." It's actually more similar in structure to tarot. The challenge was that the 144 original fortune texts are in classical Chinese, and AI was tremendously helpful in translating them into accessible modern language.

"Interpret the Tojeong Bigyeol fortune for upper trigram 1, middle trigram 3, lower trigram 2 in modern terms." Repeating requests like this, we generated interpretation texts for all 144 combinations. Preserving the original text's context while converting it to contemporary tone — this is exactly the kind of task AI excels at.

I Ching and Dream Interpretation — Beyond Saju

The ZhouyiPage (I Ching / Book of Changes) and DreamPage (dream interpretation) aren't directly related to Saju analysis. But there were good reasons to include them.

The I Ching is foundational to Eastern philosophy. Its 64 hexagram system shares theoretical roots with Four Pillars theory. Users interested in Saju often naturally develop curiosity about the I Ching as well. Adding a simple I Ching divination experience deepens the app's content.

Dream interpretation is lighter fare. Unlike serious Saju analysis, it's more about entertainment. But this lightness is precisely the point — it's a feature that newcomers to the app can try without any barrier. It serves as an on-ramp.

AI's contribution to both features was high. Generating interpretation texts for all 64 I Ching hexagrams, creating keyword-based dream interpretation data — this volume of text content would take weeks for a human to write but could be drafted in days with AI. Post-generation review and editing were separate, of course.

Why "One Day Should Be Enough" Was Actually True

Based on previous work experience, properly implementing a compatibility analysis feature alone would take at least 1-2 weeks. Requirements gathering, domain research, design, implementation, testing. But in this project, I'd think "let's try adding compatibility today" and have a working version by end of day.

Three factors made this speed possible.

First, the modularized engine. Combining existing analysis logic was enough to build each new feature's core. Second, AI's domain knowledge. Asking AI "why is the Day Master relationship most important in compatibility?" yields a structured answer instantly. Domain research time shrinks dramatically. Third, AI's code generation speed. Once the design is locked, component implementation, state management, and routing additions proceed rapidly with AI assistance.

But "done in a day" doesn't mean the quality is one day's worth. A working version emerges on day one, then several more days go into edge case handling, UI polish, and interpretation text review. "80% in one day, the remaining 20% over several days" is the more accurate description.

The Flip Side of Feature Explosion — Management Complexity

Rapid feature growth wasn't all upside. Once the page count exceeded ten, routing management got complicated, and the dependency graph between shared components and utility functions started tangling.

For example, both Compatibility Analysis and Daily Fortune use the "Ten Gods relationship calculation" logic. Initially each page called it directly, but later, modifying the Ten Gods calculation rules meant touching multiple files simultaneously. We eventually refactored the analysis logic into a separate service layer.

Another issue was bundle size. Tojeong Bigyeol's 144 hexagram data, I Ching's 64 hexagram data, dream interpretation keyword data — static data accumulated until initial load times noticeably increased. React's lazy loading and code splitting solved it, but the lesson was clear: if you don't watch bundle size while adding features, user experience degrades.

These management complexity issues are invisible when adding features one by one but erupt all at once past a certain threshold. "Being able to add features quickly" and "being able to manage features well" are different skills.

What Feature Expansion Taught Me

Several lessons emerged from this period of rapid growth.

First, investment in initial architecture pays back manifold during expansion. If the engine weren't modularized, every new feature would have required rebuilding analysis logic from scratch.

Second, not every feature needs the same depth. Saju analysis is the project's core and warrants depth, but dream interpretation or a Five Elements quiz can be light entertainment. Judging the appropriate depth for each feature is part of design.

Third, AI collaboration's real productivity gain isn't "writing code faster" — it's "reducing domain research and design time." For compatibility analysis, AI's contribution to understanding what factors to examine was more significant than its help with the actual implementation.

Fourth, feature addition speed and management quality are separate axes. The faster AI helps you add features, the more deliberately you must invest in managing complexity. Being able to build quickly doesn't mean you should build quickly.

Coming Up Next

As features multiplied, the app's skeleton took shape. But features alone don't bring users back. Attracting and retaining users requires content. Celebrity Saju analyses, MBTI-to-Day-Master mapping, a casual Five Elements quiz — Part 17 explores how content strategy transformed the app's character.

댓글

이 블로그의 인기 게시물

사랑을 직접 올리지 않는 설계

감정을 변수로 옮기다 — 3계층 감정 모델

시작의 충동 — "타로 웹앱을 만들어볼까?"