두 개의 SKU, 하나의 모델: 프롬프트 엔지니어링만으로 어떻게 19달러와 29달러짜리 SOP 생성기를 만드는가
요약
단일 Claude Haiku 모델과 프롬프트 구성의 차이만으로 두 가지 가격대의 SOP 생성 서비스를 구현한 사례를 소개합니다. 별도의 모델 파인튜닝 없이 프롬프트 내 지시사항 조절을 통해 제품 등급을 차별화하는 효율적인 개발 방식을 다룹니다.
핵심 포인트
- 동일한 모델과 함수를 사용하되 프롬프트의 tier 문자열로 서비스 등급 차별화
- Pro 등급은 추가적인 RACI 매트릭스 및 컴플라이언스 지침을 프롬프트에 포함
- 미리보기 기능은 토큰 제한이 아닌 프롬프트 지시를 통해 특정 섹션만 생성하도록 설계
- 사용자 입력에 맞춤화된 미리보드를 제공하여 결제 전환율 극대화
두 개의 SKU, 하나의 모델: 프롬프트 엔지니어링만으로 어떻게 19달러와 29달러짜리 SOP 생성기를 만드는가
AI SOP Builder는 평이한 언어로 된 프로세스 설명을 완성된 표준 운영 절차 (Standard Operating Procedure, SOP)로 변환합니다. 파인튜닝 (fine-tuned)된 모델도 없고 별도의 "프로" 파이프라인도 없습니다. 단일 Claude Haiku 호출일 뿐이며, 19달러와 29달러 등급 사이의 모든 제품 차별화는 프롬프트 (prompt)가 어떻게 구성되느냐에 달려 있습니다.
하나의 생성 함수, 두 개의 등급
두 SKU — single ($19, 표준) 및 pro ($29, "감사 준비 완료") — 모두 동일한 generateSOP() 함수와 동일한 모델 (claude-haiku-4-5, 선택적 SOP_MODEL_PRO 환경 변수 오버라이드 포함)을 통해 라우팅됩니다. 변경되는 점은 프롬프트 빌더 (prompt builders)를 통해 전달되는 tier 문자열입니다:
export function buildSystem(brief, tier) {
return [
"You are a senior operations and quality-management specialist who writes Standard " +
...
Pro 등급은 다른 검색 소스 (retrieval source)나 더 큰 컨텍스트 윈도우 (context window)를 할당받지 않습니다. 대신 동일한 모델에게 RACI 매트릭스 (Responsible/Accountable/Consulted/Informed), 인라인 컴플라이언스 (compliance) 노트, 그리고 더 강력한 승인 체크리스트를 추가하도록 지시하는 한 단락의 추가 텍스트를 받습니다. 환각 (hallucination) 방지 지침 — 규정 번호나 인증 ID를 절대 지어내지 말 것, 제공되지 않은 모든 사항은 "소유자가 작성해야 함"으로 표시할 것 — 은 두 등급 모두에 적용됩니다. 감사 파일에 조작된 ISO 조항이 포함되는 것은 솔직하게 일반적인 SOP보다 더 나쁘기 때문입니다.
무료 미리보기는 축소된 것이 아니라, 제한된 별도의 생성입니다
결제 전, /api/preview는 출력 토큰 (output tokens)을 240개로 제한하여 "목적 및 범위 (Purpose and Scope)" 섹션만 생성합니다:
export async function generateSOP(env, brief, previewOnly, tier) {
const system = buildSystem(brief, tier);
const user = buildUser(brief, previewOnly, tier);
...
이것은 클라이언트 측에서 잘라낸 불완전한 SOP가 아닙니다. previewOnly 모드에서는 프롬프트 자체가 모델에게 해당 섹션 외에는 아무것도 쓰지 말라고 지시합니다 ("write nothing else — no other section, no numbered steps"). 방문자는 결제하기 전에 자신의 프로세스에 진정으로 특화된 내용을 읽게 되는데, 이것이 핵심입니다. 즉, 일반적인 마케팅 스크린샷보다 사용자의 입력에 맞춰 맞춤화된 미리보기가 훨씬 더 높은 전환율을 보인다는 점입니다.
결제 캡처와 동시에 수행되는 의도적인 Fulfillment (이행)
결제 후 별도의 "생성 (generate)" 단계는 없습니다. capture-order.js가 PayPal 주문을 캡처하고, 동일한 요청 내에서 응답을 보내기 전에 전체 문서를 위한 generateSOP()를 호출합니다:
let sop = "";
let processingError = false;
try {
...
중요한 라인은 다음과 같습니다: 생성 과정에서 오류가 발생하더라도 status: "COMPLETED"는 여전히 반환됩니다. 결제는 성공했으므로 응답은 이를 알리되, 돈이 오간 사실을 조용히 놓치는 대신 processing_error 플래그와 고객 지원 연락처를 함께 제공합니다. 소스 코드의 주석에 따르면, 이는 결제는 성공했지만 Fulfillment가 기록도 없이 조용히 실패했던 이전 파이프라인에서의 교훈을 직접적으로 반영한 것입니다.
Markdown 라이브러리 없이 결과 렌더링하기
SOP는 Markdown 형식으로 반환되며, 프론트엔드는 직접 작성한 작은 파서(parser)를 사용하여 이를 렌더링합니다. 이 파서는 제목(^#{1,4}\s), 번호 매기기 목록(^\d+[.)]\s), 글머리 기호(^[-*]\s), 그리고 **bold** 범위를 위해 한 줄씩 정규 표현식(regex) 매칭을 수행하며, innerHTML을 전혀 사용하지 않고 오직 createElement/textContent로만 구축되었습니다. 이는 의도적으로 제한된 어휘를 사용하도록 설계되었습니다. 왜냐하면 시스템 프롬프트가 요구하는 전체 출력 형식이 "render-safe Markdown only... no tables, code fences, or HTML"이기 때문입니다. 따라서 렌더러는 모델이 생성하도록 지시받은 내용만을 정확히 처리하면 됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기