SIDE PROJECT / AI
AI naming plus tournament-style voting — so the whole family picks the baby's name together
I tried a few baby-naming services and they all turned out to be single-player tools. Naming a baby is something families do together, though. So I built a service where GPT-4o recommends names based on Saju (Korean birth-chart) and Ohaeng (Five-Element analysis), and the family votes through a bracket-style tournament to land on the final name.
- Core idea
- AI + family vote
- AI model
- GPT-4o
- Family participation
- Bracket voting
- Current status
- Live
AI recommends, family chooses
Ohaeng, Saju and Hanja analysis
Vote via shared link
ohmybaby.kr
Background
Shouldn't a baby's name be something the whole family picks together?
When the time came to name a baby, I tried out a few naming services. Some used AI to suggest names, others applied traditional Korean naming rules — but after using them all, one shortcoming kept coming up. They were all "single-player tools".
In real life, naming a baby isn't something you do alone. Mom and Dad weigh the candidates, show them to the grandparents, who say "hmm, not quite...", and then aunts and uncles chime in too. The name only settles once the whole family's opinions come together, but existing services ended at "one person gets an AI suggestion, screenshots it, and drops it in a KakaoTalk group chat."
So I thought — what if we keep the AI-generated names, but layer on a tournament-style voting (bracket voting) format? Compare candidate names head-to-head in 1v1 matchups, let each family member vote, then tally the results to land on the final name. AI recommends, family chooses.
Existing naming services are all single-player
Whether AI-driven or tradition-based, every tool delivers results to one person at a time. None of them had a way to gather opinions from the rest of the family.
Naming is supposed to be a family event
In Korean culture, not just parents but grandparents and relatives weigh in — and no service was built to accommodate that.
The only way to share candidates was a KakaoTalk screenshot
To show AI-suggested names to the family, taking a screenshot and dropping it into the group chat was the only option.
Approach
AI suggestions + tournament-style voting = a family-participatory naming service
The structure is simple. Create a project, enter the baby's details, and GPT-4o suggests names. Open a bracket-style tournament with those candidates, share the link with the family, and each person votes. As the votes roll in, the family's favorite name naturally rises to the top.
User flow
Create project
4-step wizard
AI name suggestions
GPT-4o
Edit candidates
Add / remove
Share bracket
Kakao link
Family votes
Tournament
Result postcard
印章 seal design
Why GPT-4o
Korean naming is a domain that demands knowledge of Ohaeng (Five-Element analysis), Saju (birth-chart), and Hanja (Chinese characters used in Korean naming). GPT-4o was the best fit for injecting those rules through prompting.
Why bracket voting
1v1 comparisons are more fun than plain ranking, and the tournament structure naturally whittles the candidates down round by round.
Why Kakao sharing
In Korea, the family group chat is KakaoTalk. One link drops people straight into voting, so the barrier to entry is almost zero.
Process
Implementation
- 01
GPT-4o prompt design — teaching the AI the rules of Korean naming
Korean traditional naming has a surprising number of rules. The generative and destructive cycles of the Five Elements (木火土金水 — Wood, Fire, Earth, Metal, Water), the Saju Palja birth-chart calculated from the baby's birth date and time, and the real-world usage frequency of each Hanja character that maps to a given syllable. I baked all of that into the system prompt so GPT-4o would produce names that feel like they came from an actual Korean naming studio.
One thing I spent extra effort on was filtering out the Hanja that GPT naturally gravitates toward (like 瑞 or 睿). Models reach for these characters often, but they're rarely used in real Korean naming. I explicitly banned those, and locked the output format to JSON to keep parsing stable. The prompt itself is core service logic so I'm not publishing it here, but the overall direction is "structure Korean naming rules into a rule list, state forbidden patterns explicitly, enforce a JSON schema."
- 02
Bracket engine — a client-side tournament
A tournament bracket that supports 4, 8, 16, and 32 entrants runs on the client. The candidate names get randomly shuffled into a bracket, and each round is a 1v1 comparison where picking one advances it to the next round.
Once the share link goes out via KakaoTalk, family and friends can jump straight into voting. Each person's votes are stored in Supabase, and the project owner can see the aggregated results. The free plan supports up to 10 voters per project.
- 03
Hanja meanings + Ohaeng data
I mapped Hanja variants for 40+ Korean surnames. For example, even the surname "Kim" can be written with different Hanja like 金 or 金海, and each variant has a different stroke count and Ohaeng (Five-Element) attribute. Without that dataset, there's no way to give GPT-4o concrete instructions like "this surname's element is Metal, so pick generatively compatible Water or Wood Hanja."
On the results screen, each syllable's Ohaeng is color-coded. Wood is green, Fire is red, Earth is yellow, and so on — so the elemental composition of the name is readable at a glance.
- 04
Kakao login + sharing — designed for virality
Kakao OAuth is wired into Supabase Auth. Since most Korean users already have a Kakao account, the login friction is minimal, and sharing the voting link as a KakaoTalk message turns the product naturally viral.
When voting ends, a postcard-style result card is generated, complete with an 印章 (seal) design. That card is also shareable via KakaoTalk, so families can use it to announce, "Here's the name we picked!"
Outcome
Outcome
ohmybaby.kr is live
A side project I took solo from planning through AI integration, UX design, and deployment. It is running as a real service today.
Translating Korean naming culture into AI prompts
The biggest takeaway was turning domain knowledge — Ohaeng generative/destructive relationships, Saju analysis, and filtering of Hanja actually used in real naming — into prompt engineering. I learned that "what you forbid the AI from doing" matters more than "what you tell it to do."
End-to-end experience: planning, design, build, deploy
Stacking Next.js 16 + Supabase + GPT-4o + Kakao OAuth full-stack on my own gave me experience with auth, billing design, AI integration, and social sharing inside a single project.
Next up: activate the Pro plan, expand marketing channels
The Free/Pro tier structure — gated on AI suggestion count (free: 3) and vote-participant count (free: 10) — is already designed. The plan is to collect user feedback, turn on the Pro tier, and broaden marketing channels through parenting communities.
MORE
Explore other cases
Badabom
AUTH / SSO
Building an SSO Provider for Partner Sites
Implemented an SSO Provider so external partner sites (e.g., OTT) could sign in with Badabom accounts. Single-use UUID tokens stored in the database support multiple WAS nodes, and CI (Connecting Information) auto-maps accounts across both sides.
View detailBadabom
DEVOPS / OBSERVABILITY
SSE + Cross-WAS Real-Time Log Viewer
The WAS lived in the Daejeon IDC, but network-segregation policy meant only Busan-office PCs could reach it — so pulling a log effectively meant flying to Busan. I built an SSE-based viewer inside the admin web and added a cross-WAS relay so logs from both WAS nodes stream into a single screen.
View detailBadabom
LEGACY MIGRATION
Migrating the OTT Technology-Trade System into Badabom
Moved an Oracle + MyBatis technology-trade platform (OTT) onto PostgreSQL + iBATIS. Rewrote 87 URLs, 34 JSPs, 80+ SQL queries, and 14 tables.
View detailGAIS — Government Advertising Integrated Support System
CI/CD
Automating the Build and Deploy Pipeline
Replaced a fully manual build-and-deploy workflow with a Jenkins + GitLab Webhook pipeline, cutting deploy time from 15–20 min down to around 4 min.
View detailGAIS — Government Advertising Integrated Support System
INFRA / SESSION
Redis-Backed Session Clustering
JEUS Standard doesn't support native session clustering, so I put Redis in front as an external session store. That unlocked rolling restarts across WAS nodes.
View detailGAIS — Government Advertising Integrated Support System
SECURITY / NETWORK
Applying TLS 1.3 via an Nginx Reverse Proxy
Touching the shared WebtoB SSL felt risky, so I put Nginx in front and terminated TLS there instead. Existing services kept running untouched while TLS 1.3 was rolled out.
View detailFreelance · Side Projects
CLIENT WORK / WEB
Pitched and Built a Postpartum Care Center Site Renewal
My wife had stayed at a postpartum care center whose website felt dated, so I mocked up a UI sample and pitched it myself. I built an Astro static site with a 192-frame scroll animation, Kakao Map, and SEO — then shipped it to their production domain.
View detail