달빛선생
A premium saju SaaS grounding OpenAI interpretations in classical citations (Jeokcheonsu, Jipyeongjinjeon), with a three-stream revenue model (membership, coins, collectible reports), Toss payments, and web push. A sibling build to 간지사주.
Sibling / earlier build of 간지사주

Overview
Korean fortune-telling apps tend to ship as novelty toys: a single free reading, a thin AI wrapper, and no real reason to come back or pay. 달빛선생 was built as the opposite — a premium consumer SaaS that has to earn money repeatedly and behave correctly when it does. The hard problem is not generating saju text; it is making a paid, recurring product trustworthy enough that a user hands over a card for an intangible reading.
The approach answers that on two fronts. On credibility, every OpenAI interpretation is grounded in classical source texts (적천수, 자평진전) so the output reads as cited reasoning rather than free-floating LLM prose. On monetization, it runs three revenue streams at once — membership, a coin economy, and collectible reports — which means the payment layer can't be an afterthought: Toss checkout has to flow into durable entitlements and a reading-history archive that survives across sessions.
What makes it engineering-notable is that it is a sibling build to 간지사주, the same product instinct re-architected on a newer stack (Next.js 16, React 19, Tailwind v4). It captures the disciplines — payment correctness, entitlement persistence, scheduled web push — that carry over from regulated consumer SaaS work, treating an unregulated vertical with the same operational rigor.
Highlights
- AI–classical hybrid grounding (Jeokcheonsu, Jipyeongjinjeon citations)
- Three-stream revenue model (membership + coins + collectible reports)
- Toss payments → entitlement persistence → reading-history archive
- Web push (morning/noon/evening/weekly/monthly schedules), mobile-first + dark mode