Brandiker

2024

Brandiker
1
Brandiker
2
Brandiker
3
Brandiker
4

참여 범위 : 개인 프로젝트

UI/UX
전담
프론트엔드
전담
백엔드
전담
배포
전담

Vibe Coding: 백엔드에서 부분 사용

사용 도구 / 프레임워크

사용 도구 / 프레임워크
사용 도구 / 프레임워크
사용 도구 / 프레임워크
사용 도구 / 프레임워크
사용 도구 / 프레임워크
사용 도구 / 프레임워크

작업 과정

디자인

디자인
디자인
디자인
디자인
디자인
디자인
디자인

개발 동기

1

네이밍은 브랜드, 제품, 서비스, 매장, 프로젝트 등의 정체성과 가치를 담아 창의적이고
의미 있는 이름을 기획하는 전문 작업이다.

2

당시 AI 모델 (gpt-3.5 turbo, gpt-4o) 에게 네이밍 작업을 시키면 대부분 전혀 쓸 수 없는 수준의 결과물이 나왔다.

AI는 특정 키워드들을 지나치게 자주 사용하며 AI Slop를 생성했다.
자주 사용된 키워드 예시: Forge, Craft, Quest, Pixel, Innovate, Genesis, Fusion, Fest

3

그래서, 사람이 생각을 확장해 나가며 네이밍 아이디어를 발굴하는 과정을 AI로 구현해보고자 하였다.

AI 구현

사용자가 대상(예: 음식점)에 대해 설명하면 적절한 이름을 지어준다.
사람이 아이디어를 떠올리듯 먼저 연상 키워드 맵을 생성하고, 그것을 바탕으로 여러 네이밍 전략을 취하는 프로세스를 설계했다.

네이밍 대상에 대한
사용자 설명

키워드 브레인스토밍

키워드 풀에서 아이디어 발견

  • 전략 1: 두 단어 합성
  • 전략 2: 단어 변형
  • 전략 3: 이니셜 조합
  • 전략 4: 스토리 기반 생성

평가 및 후보 선택

개발 당시 gpt-3.5-turbo, gpt-4o-mini등을 사용했다.
당시 모델 성능의 한계로 인해, 정규화된 결과물을 얻기 위해서는 프롬프트 엔지니어링이 중요했다.

당신은 클라이언트의 설명을 잘 나타내는 이름을 지어야 합니다.

네이밍 전략:
1. 단어 후보에서 두개를 선택하고,선택한 단어들로 합성어를 만들기. 20개의 후보를 제시하기.
2. 후보들 중에서 가장 적합한 이름을 선택하기.

단어들:
$WORDS

출력:

먼저, 10개의 후보를 출력합니다.
넘버링으로 표시하고, 선택한 단어들을 +로 연결하고, => 기호 뒤에 합성어를 적어주세요.
그 뒤에는 만든 합성어를 평가하여, (Appropriateness: n/5, Namelike: n/5, Pronunciation: n/5, Creativity: n/5, Conciseness: n/5) 의 형식으로 평가해주세요.
* 합성어는 간결하고 기억하기 쉬운 것이 좋습니다. 발음이 쉬워야 합니다. 클라이언트가 요청한 내용이 잘 드러나는 이름이 좋습니다. 너무 일반적인 이름은 피해주세요.
* 이미 존재하는 이름을 사용하지 마세요. (브랜드, 제품, 서비스, 도메인 등)
* 평가 기준:
- Appropriateness: 이름이 클라이언트의 입력을 잘 나타내는가? (너무 억지스럽지 않은가?)
- Namelike: 이름이 자연스러운가? (서비스/제품/브랜드의 이름처럼 보이는가?)
- Pronunciation: 이름이 발음하기 쉬운가?
- Creativity: 이름이 창의적인가?
- Conciseness: 이름이 간결한가?
* 합성어는 영어 또는 한국어로 작성해주세요.

그 다음에, 가장 적합한 이름을 선택하고, 선택한 이름에 대해 Name, Goal, Reasoning을 작성해주세요.

'>>>Output'과 '<<<Output' 사이에 제작한 이름을 적어주세요.
'>>>Hooking'과 '<<<Hooking' 사이에 이 이름 밑에 적힐 슬로건을 적어주세요. (한국어로)
'>>>Goal'과 '<<<Goal' 사이에 네이밍에서 전달하고자 하는 의미를 적어주세요. (한국어로)
'>>Reasoning'과 '<<Reasoning' 사이에 이름이 Goal에 부합하는 이유를 적어주세요. (한국어로)
'>>>Marketing'과 '<<<Marketing' 사이에 이 이름을 이용한 마케팅 전략을 설명해주세요. (한국어로)

형식:
```
1. A+B=>C (Appropriateness: 5/5, Namelike: 5/5, Pronunciation: 4/5, Creativity: 5/5, Conciseness: 5/5)
2. ...
...

>>>Output
name
<<<Output
>>>Hooking
hooking
<<<Hooking
>>>Goal
Goal
<<<Goal
>>Reasoning
Reasoning
<<Reasoning
>>>Marketing
Marketing
<<<Marketing

당시 모델들은 네이밍 작업 요청 시 실제로 사용하기 힘든 수준의 이름을 생성했다.
같은 대상에 대해서 Brandiker의 프로세스를 거친 결과는 대부분 더 우수했다.

주제: 독특한 게임을 만들어 서로 공유하는 해커톤 행사 이름

GPT-4o Prompt대상 설명:
독특한 게임을 만들어 서로 공유하는 해커톤 행사 이름
이 대상의 이름을 여러 개 지어줘. (전문 네이밍 수행)
아이디어 발휘.

Brandiker

  • 독게임
  • CreatiVerse(크리에티버스)
  • CIG(시그)
  • Originality(오리지널리티)

GPT-4o

  • PlayForge Jam
  • GameCraft Con
  • Code & Quest Hackathon
  • IndiePlay Hackfest
  • Pixel Innovate Clash
  • QuestCrafter Hackathon

주제: 라벤더가 아름다운 꽃집 이름

GPT-4o Prompt대상 설명:
라벤더가 아름다운 꽃집 이름 여러 개 지어줘. (전문 네이밍 수행)
아이디어 발휘.

Brandiker

  • 라벤더뷰티
  • Lavenda(라벤다)
  • Lavendelle(라벤델)

GPT-4o

  • 라벤더 가든
  • 라벤더 하모니
  • 블루밍 라벤더
  • 라벤더 컬러
  • 보라빛 정원

Brandiker에서 생성된 이름 예시

Brandiker에서 생성된 이름 예시
Brandiker에서 생성된 이름 예시

개발 결과

Overview

메인 화면
대상 설명 작성 화면
키워드 풀 생성 Visualization
결과 조회

크레딧 시스템

크레딧 시스템
크레딧 시스템
크레딧 시스템

유저가 광고 영상 시청

보상형 광고를 시청 완료하면, Admob에서 백앤드로
Server-Side Verification(SSV) callback을 호출

유저가 크레딧을 소모할 때마다 실제로 운영비용이 들기 때문에(AI) 위변조를
방지하는 것이 매우 중요하다.
광고 시청 완료 판정을 프론트엔드에서 하지 않고 Server Side에서 수행한다.

Server Side에서
Firebase-admin으로 User의
credit increment 수행

키워드 풀 생성 Visualization

‘빠르게 계속 불어나는 마인드맵’이라는 느낌을 애니메이션으로 나타내고자 하였다.

거리에 따른 인력, 척력, 마찰력 계산 규칙을 정했다.
개별 원에 대해 Net Force를 구하고, 가속도에 따라 움직이도록 물리 기반 애니메이션을 구현했다.

Server Side에서 키워드 풀이 계산 되는 동안, 중간 과정이 WebSocket으로 Front Side로 전달된다.
추가된 단어는 마인드 맵 Visualization에 반영된다.

배포

Playstore에 출시를 성공적으로 마쳤다.

원래는 다음으로 Meta 광고, 구글 광고를 진행할 예정이었다. 그러나 아래 문제들로 인해 서비스 종료를 결정하게 되었다.

당시 admob 계정이 다른 프로젝트로 인해 잠시 정지 된 상태(정책 위반 검토)이었기 때문에 유저가 광고 영상으로 크레딧을 얻을 수 없었다. 군 입대 전까지 마케팅을 다 마치려고 했지만, 검토 과정이 길어져 입대 이후가 되어서야 정지가 풀리게 되었다.

이후 유지보수/마케팅을 진행하면 군복무 중 수익 창출 활동에 해당되기 때문에 서비스 종료를 결정할 수 밖에 없었다.

배포