제품 사례
WorldLim
숙련된 강의자가 맡던 학습 설계·자료 구성·맥락에 맞는 재설명을, 검수 가능한 강의 데이터와 같은 자료를 보는 런타임 튜터로 나눠 제품화한 AI 학습 서비스입니다.
바로 확인하기



이 제품이 필요했던 이유
사전의 뜻풀이를 읽는 것과 개념을 제대로 배우는 것은 달랐습니다. 숙련된 강의자는 개념의 경계를 설명하고, 자주 생기는 오해를 짚고, 다른 관점과 적용 장면을 보여주며, 학습자의 질문에 맞춰 다시 풀어줍니다.
하지만 이 품질은 사람의 전문성과 시간에 의존해 모든 주제와 학습자에게 확장하기 어렵습니다. LLM이 등장해 누구나 모르는 것을 물을 수 있게 됐어도, 자유로운 질의응답만으로 무엇을 어떤 순서로 배울지, 어떤 자료로 이해할지, 지금 막힌 지점에 어떻게 답할지가 하나의 학습 과정으로 생기지는 않았습니다.
사람의 역할을 두 시스템으로 나눴습니다
그래서 숙련된 강의자가 수행하던 일을 미리 설계·검수할 수 있는 부분과 학습 중에만 알 수 있는 부분으로 나눴습니다.
- 강의 데이터 생산: 개념의 경계, 오해, 다른 관점, 문맥과 적용 질문을 학습 순서에 맞춰 미리 만들고 검사·수정합니다.
- 런타임 튜터: 학습자가 지금 보고 있는 뜻, 단계와 자료를 함께 읽고 현재의 질문과 오해에 맞춰 다시 설명합니다.
자유 채팅 하나에 모든 책임을 맡기지 않았습니다. 반복해서 사용할 수 있는 학습 설계와 자료는 제품 데이터로 고정하고, 현재의 오해와 질문에 대응하는 일만 런타임 모델에 맡겼습니다.
사용자가 겪는 흐름
사용자는 학습 세계에서 한 단어의 뜻을 선택하고, 떠올리기·뜻 이해·다른 관점·문맥 읽기·내 상황에 적용하기를 순서대로 진행합니다. 칸트·플라톤·정지용처럼 서로 다른 관점에서 같은 단어를 보고, 막히면 현재 화면의 강의와 문맥을 함께 보는 튜터에게 질문합니다.
학습 세계와 캐릭터, 단계 화면은 이미지 생성 결과를 검토해 Flutter 자산으로 편입했습니다. 콘텐츠 생산 파이프라인을 실제로 탐색하고 질문하며 이어서 학습하는 제품 경험까지 연결했습니다.
데이터·코드·모델·사람의 책임
| 주체 | 맡긴 일 |
|---|---|
| 원천 데이터 | 단어, 뜻, 난이도와 학습 단위의 기준 |
| 결정론적 코드 | 정규화, schema 검사, 중복·길이·상태 검사, 반영 조건 |
| 생성·평가 모델 | 설명·문맥·질문 후보 생성과 의미 적합성 진단 |
| 런타임 모델 | 현재 화면의 자료를 근거로 사용자의 질문에 답변 |
| 사람 | 학습 설계, 기준 정의, 모호한 항목 검토와 최종 책임 |
만들면서 해결한 문제
Learning Unit: 같은 단어의 다른 뜻이 섞이지 않게 했습니다
- 문제: 단어 문자열만 기준으로 콘텐츠를 만들면 같은 표기의 다른 품사와 뜻이 한 학습 흐름에 섞일 수 있었습니다.
- 판단: 생성·검토·앱 화면·튜터가 모두
사용자가 선택한 뜻을 같은 단위로 봐야 했습니다. - 구현: 사전 원문을 뜻 단위로 정규화하고 발견 질문, 정의, 관점, 문맥과 적용 질문이 같은 식별자를 따라가게 했습니다.
- 달라진 점: 잘못된 뜻을 가르치는 결과를 검사하고, 원천 뜻에서 화면까지 추적할 수 있게 됐습니다.
Product Data Gate: 자연스러운 LLM 출력을 바로 제품에 넣지 않았습니다
- 문제: JSON이 맞고 문장이 자연스러워도 선택한 뜻과 다르거나 필수 단계가 비는 결과가 생겼습니다.
- 판단: 모델 출력은 완성 데이터가 아니라 검사할
생성 후보여야 했습니다. - 구현: 형식과 의미를 진단해 통과·수정·반려로 나누고, 실패 이유로 다시 만든 뒤 재검사했습니다.
- 달라진 점: 정의 이해 데이터 3,780개 중 첫 검사에서 멈춘 410개를 수정했고, 409개는 1차, 마지막 1개는 2차 수정 뒤 다음 단계로 보냈습니다.
Runtime Grounding: 화면과 튜터가 같은 자료를 보게 했습니다
- 문제: 자유 채팅은 현재 단어와 선택한 뜻, 화면의 강의에서 쉽게 벗어날 수 있었습니다.
- 판단: 생산 파이프라인과 실시간 답변은 분리하되, 둘은 같은 학습 묶음과 화면 상태를 사용해야 했습니다.
- 구현: 서버가 활성 묶음에서 화면 자료를 가져오고, 현재 단계와 실제 노출 자료를 확인해 사용자 질문과 함께 튜터에 전달했습니다.
- 달라진 점: 튜터가 무엇이든 답하는 챗봇이 아니라 지금 배우는 장면 위에서 설명을 조율하게 됐습니다.
AI Asset Pipeline: 생성 이미지를 실제 제품 자산으로 바꿨습니다
- 문제: 이미지 생성 결과는 스타일, 비율, 투명 배경과 UI 적합성이 흔들렸습니다.
- 판단: 이미지를 한 번 생성하는 장식이 아니라 요구사항, 금지 요소, 채택 여부와 화면 위치를 가진 제품 자산으로 관리해야 했습니다.
- 구현: 역할·크기·스타일을 먼저 정의하고, 검토해 채택한 파일만 지도·스테이지·캐릭터 위치에 연결했습니다.
- 달라진 점: 생성 이미지를 화면에서 반복 사용되는 지도·스테이지·캐릭터 자산으로 정리해 실제 Flutter 제품에 편입했습니다.
실제 운영 범위
- 활성 학습 묶음: 3,778개
- 페르소나 문맥: 11,334개
- 개념 강의: 11,334개
- 대화 시나리오: 15,112개
- 하위 콘텐츠 합계: 37,780개
이 수치는 사용자 수나 학습 효과가 아니라 현재 제품에 연결한 데이터 운영 범위입니다.