ScopeLock: 프리랜서의 범위 확장(scope creep)을 유료 변경 주문으로 바꾸는 오픈 웨이트 AI
요약
ScopeLock은 프리랜서와 소규모 에이전시가 겪는 '범위 확장(scope creep)' 문제를 해결하는 AI 기반 사이드 허슬 도구입니다. SOW와 고객 대화 스레드를 분석하여 요청의 범위를 판단하고, 전문적인 경계 설정 답변 초안과 유료 변경 주문서를 자동으로 생성해줍니다.
핵심 포인트
- SOW와 클라이언트 대화를 통합 분석합니다.
- 요청이 범위 내/외인지 라벨링하며 SOW를 인용합니다.
- 변경 주문서 및 긴급 수수료 계산 기능을 제공합니다.
- Ollama와 pgvector를 사용하여 로컬 환경에서도 작동 가능합니다.
_이 글은 Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle에 제출하는 내용입니다.
제가 만든 것 (What I Built)
**ScopeLock**은 범위 확장(scope creep)으로 인해 계속 돈을 잃는 프리랜서와 소규모 에이전시를 위한 사이드 허슬 도구입니다.
작업 명세서(statement of work, SOW)와 고객과의 대화 스레드(client thread)를 붙여넣거나 (또는 Slack JSON을 가져오거나, **음성 메모(voice memo)**를 업로드합니다). ScopeLock은 다음과 같은 기능을 수행합니다:
- 각 고객 요청이 범위 내(in-scope)인지 범위 외(out-of-scope)인지를 라벨링합니다.
- SOW의 문구를 인용합니다.
- 전문적인 경계 설정 답변 초안을 작성합니다.
- 사이드 허슬 코크핏(Side hustle cockpit) 기능을 실행합니다: 범위 확장 점수, TabPFN으로 추정한 변경 주문 시간, 긴급 수수료 계산, 그리고 Markdown 형식으로 내보낼 수 있는 고객용 변경 주문서를 제공합니다.
누가 돈을 지불할까요? 고정 비용 또는 마일스톤 프로젝트로 청구하는 솔로 개발자, 디자이너, 파트타임 엔지니어 등 —
render.yaml로 배포 → 서비스scopelock- DNS: CNAME
scopelock→*.onrender.com export RENDER_API_KEY=rnd_... && npm run sync:render(.env.local읽기)
실시간 URL: https://scopelock.smriad.tech
로컬 개발 환경 (Local dev)
cp .env.example .env.local # 파트너 키 채우기
npm install
npm run dev
선택 사항: 로컬 pgvector를 위해 docker compose up -d 사용; 임베딩을 위한 로컬 Ollama.
http://localhost:3000에서 열기 — 샘플이 미리 로드됨.
작동 방식 (How it works)
- **작업 명세서(statement of work)**와 선택적으로 pgvector 인덱스를 붙여넣습니다 (Ollama로 청크 임베딩 후 Postgres에 저장).
- 클라이언트 스레드를 붙여넣습니다.
- 범위 분석(Analyze scope) — Ollama가 구조화된 JSON을 반환합니다: 판결문(verdicts), SOW 인용, 회신 초안, 변경 주문 항목(change-order line items).
Ollama가 오프라인인 경우, 앱은 **데모 분석(demo analysis)**을 사용하여 비디오를 계속 녹화할 수 있습니다 (클라우드 호스트에서 DEMO_MODE=true 설정).
스택 (Stack)
| Layer | Tech |
|---|
…
MIT 라이선스. render.yaml 블루프린트, GitHub Actions CI, 그리고 프로덕션에 대한 npm run smoke.
구축 과정 (How I Built It)
Gemma 3 (google/gemma-3-4b-it)를 열어 추론 코어로 사용했습니다 — Render에서는 OpenRouter를 통해 실행되며; 로컬에서는 대신 Ollama를 지정할 수 있습니다. Mastra는 범위 에이전트와 워크플로우를 오케스트레이션하여 분석이 구조화되도록 유지합니다 (판결문, 인용, 회신, 항목).
| Layer | Tech |
|---|---|
| Host | Render (무료 티어 블루프린트, /api/health) |
| ... |
분석 경로는 다음과 같습니다: SOW 인덱싱 → 청크 검색 → 에이전트 JSON → TabPFN 시간 계산 → 선택적 Tinker 패스 → /history에 영속화.
오픈 혁신(Open Innovation)은 왜 중요한가?
프리랜서는 클라이언트의 스레드를 임의의 폐쇄형 챗봇에 붙여넣고 강제적인 결과물을 기대할 수 없습니다. 오픈 웨이트 Gemma는 모델을 교체 가능하게 유지합니다 (오늘날은 클라우드 API, 내일은 노트북). TabPFN은 사용자의 과거 프로젝트를 커스텀 회귀 분석기(regressor) 훈련 없이 시간 추정치로 변환합니다. Tiger와 Mongo는 SOW(작업 명세서) 및 분석 기록을 통제하는 인프라 하에 유지합니다. 이는 제품의 전체 역할이 계약적 증거인 경우 중요합니다.
폐쇄형 API는 이메일을 초안 작성할 수는 있지만, 제가 자체 호스팅하고 감사할 수 있는 “SOW 조항과 금액”을 보여주는 신뢰할 수 있고 재현 가능한 스택은 제공하지 못할 것입니다.
나의 에이전트 세션
ScopeLock HF26 Week 2 — Render 배포, Cloudflare Worker, 실시간 연기 테스트(smoke test)
당신
프리랜서의 범위 확장(scope creep)을 유료 변경 주문으로 바꾸는 오픈 웨이트 AI인 ScopeLock을 Hacktoberfest Week 2 부업 프로젝트로 구현하세요.
에이전트
Mastra 에이전트, OpenRouter를 통한 Gemma (Render에서), Tiger pgvector RAG, MongoDB 기록, TabPFN 시간, ElevenLabs 음성, 그리고 부업 코크핏 UI가 적용된 Next.js 앱을 구축했습니다.
▸ deploy render.yaml Blueprint + sync-render-env
입력
render.yaml Blueprint + sync-render-env
출력
Service scopelock-m4bp.onrender.com이 18개의 통합 환경 변수와 함께 라이브입니다.
당신
도메인 scopelock.smriad.tech가 Cloudflare 네임서버가 권한을 가질 때 등록기관에서 CNAME을 통해 해결되지 않았습니다.
에이전트
custom_domain=true를 사용하여 Cloudflare Worker 프록시(29.smriad.tech와 동일한 패턴)를 배포했습니다. 충돌하는 DNS 레코드를 제거하고, Worker DNS 레코드를 추가했으며, HTTPS를 검증했습니다.
▸ smoke_test SCOPELOCK_URL=https://scopelock.smriad.tech
입력
SCOPELOCK_URL=https://scopelock.smriad.tech
출력
건강 상태 OK, mastra/고위험 분석, TabPFN 15.3시간, 음성 MP3, 기록 영속화됨
당신
Week 2 챌린지 제출 게시물을 초안 작성하세요.
에이전트
실시간 데모 링크, 파트너 스택 테이블, 그리고 상금 카테고리가 포함된 DEV 초안을 생성했습니다. 프로덕션 URL은 https://scopelock.smriad.tech입니다.
6/6 메시지
DEV에서 전체 세션 보기(https://dev.to/agent_sessions/scopelock-hf26-week-2-render-deploy-cloudflare-worker-live-smoke-test-p31baj) — 빌드, Render 배포, Cloudflare Worker DNS, 라이브 스모크 테스트. 미리보기에서 임베드가 비어 있다면 세션 페이지에서 공개로 설정하세요.
수상 부문
추천(Featured): Render · Gemma · TabPFN · Tinker의 최적 사용 사례
파트너(Partner): Backboard · ElevenLabs · Entire · GitHub Copilot · Mastra · MongoDB Atlas · Sentry Agent Tracing · SerpApi · Tiger Data · .tech 도메인 최적 사용 사례
(참가하지 않은 항목: Arduino, DigitalOcean, Temporal — 이 빌드에는 하드웨어 또는 두 번째 장기 실행 워커가 없습니다.)
읽어주셔서 감사합니다. 샘플 스레드를 사용해 보시고 변경 주문 계산이 여러분이 청구하는 방식과 일치하는지 알려주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기