2026년 05월 01일
20대에게 맞는 혜택 정보는 넘쳐나는데, 정작 “내가 받을 수 있는 혜택”을 한눈에 보기는 어렵다.
카드 캐시백, 청년 지원금, 대학생 할인, 군인 혜택 등 조건만 맞으면 바로 쓸 수 있는 혜택들을 영수증 스타일로 큐레이션하는 서비스를 만들었다.
“몰랐던 혜택, 3초 만에 발견” — 복잡한 조건 설명 대신, 각 혜택의 핵심 금액과 실행 방법을 영수증처럼 한눈에 보여준다.
디자인 컨셉은 레트로 영수증이다. 크림 배경에 코랄/라임 액센트, 지그재그 모서리, 바코드까지 — 편의점에서 받은 영수증을 들여다보는 느낌으로 정보를 전달한다.
Turborepo 모노레포 구조로 콘텐츠와 웹앱을 분리했다.
apps/web — Next.js 앱 (홈, 팁 상세, 카테고리 필터)packages/content — MDX 기반 콘텐츠 + 타입 정의tooling/tailwind — 영수증 디자인 시스템 (토큰, 프리미티브)콘텐츠는 MDX 파일의 frontmatter로 메타데이터(금액, 카테고리, 출처, 태그)를 관리하고, gray-matter로 파싱하여 정적 페이지를 생성한다. DB 없이 Git만으로 콘텐츠를 버전 관리한다.

Claude Design으로 초기 컴포넌트를 설계하고, 영수증 프리미티브를 직접 구현했다.
색상은 크림(#FAF6F1) 배경에 코랄(#E8573D) 강조, 라임(#D4E84F) 하이라이트를 사용하며, 폰트는 Pretendard(본문) + Archivo(디스플레이) + JetBrains Mono(수치)를 조합했다.
콘텐츠는 리서치 가이드에 따라 수집하고 팩트체크 후 게시한다.
수집 소스: 뽐뿌 재테크포럼, DC 신카갤, 카드고릴라, 뱅크샐러드, 에브리타임, 각 서비스 공식 사이트
스크리닝 기준:
카테고리: 카드, 구독, 교통, 생활, 무료, 대학생, 군인 (7개)
현재 16개 팁을 운영 중이며, 매월 카드 캐시백 이벤트와 시즌 혜택을 갱신한다.
검색엔진과 AI(ChatGPT, Perplexity, Google AI Overview)가 콘텐츠를 잘 수집할 수 있도록 구조화했다.
Article JSON-LD (image, author, keywords, inLanguage)WebSite + ItemList 스키마 (전체 팁 목록)sitemap.xml + robots.txt 자동 생성MDX 파일 기반 정적 생성으로 DB 없이 운영하며, 콘텐츠 추가는 MDX 파일 하나만 작성하면 빌드 시 자동으로 페이지가 생성된다. Vercel에 배포하여 한국 사용자에게 빠른 응답 속도를 제공한다.
1분기가 끝났다. GitHub 정리해보니 3개월 동안 3개 레포에서 152건 정도 작업했더라. 많이 만들긴 했다. 성과도 나오고 있고, D2C 퍼널 데이터도 잘 나오고 있다. 그런데 이 글을 쓰면서 계속 드는 생각이 있다. 'OKR 목표를 바라보고 달렸나?' 이 질문에는 자신 있게 답하기 어렵다. 무엇을 했나 D2C — 0에서 1로 만든 제품 1분기에서 가장 큰 작업은 D2C 서비스를 처음부터 만들어서 런칭한 거다. 1월 말부터 근무지 선택, 월급일 입력 같은 초기 플로우를 만들기 시작했고, 2월 초~중순에 온보딩, CMS 자동이체, 본인인증, 상환 페이지, 급여계좌 R2 업로드 같은 핵심 기능을 완성했다. 2월 중순부터는 QA에 집중하고 바로 오픈할 정도로 촉박한 일정이었다. 런칭 후에는 Amplitude, PostHog 기반으로 퍼널 데이터 수집하고, 전환율 떨어지는 구간 잡아서 개선하고, 성과 측정까지 진행했다. 데이터는 잘 나오고 있다. 신분증 OCR 원래 Tesseract로 OCR을 붙였는데 인식률이 좋지 않았다. 코드에프, 네이버 클로바 등 여러 솔루션을 찾아봤는데, 문득 '그냥 AI로 해볼까?' 싶어서 Claude Vision을 붙여봤다. 프롬프트에 따라 인식률이 꽤 높아서 그대로 진행했다. 여러 선택지 중에서 가장 합리적인...
Notion을 사용하면서 대시보드에 시계나 진행률 같은 위젯을 넣고 싶었는데, 기존 서비스들은 가입을 요구하거나 커스터마이징이 제한적이었다. 가입 없이 URL 쿼리 파라미터만으로 위젯을 커스터마이즈하고, Notion에 바로 임베드할 수 있는 서비스를 직접 만들기로 했다. 핵심 컨셉 “URL = Single Source of Truth” — 모든 위젯 설정이 URL 쿼리 파라미터에 저장된다. 별도의 가입이나 DB 저장 없이 URL 하나만 공유하면 누구든 같은 위젯을 볼 수 있다. 사용 흐름은 단순하다: 갤러리에서 위젯을 고른다 색상, 언어, 표시 옵션을 커스터마이즈한다 생성된 URL을 Notion의 /embed 블록에 붙여넣는다 기술 스택 Framework: Next.js 16 (App Router) Language: TypeScript 5 Styling: Tailwind CSS 4 Monorepo: Turborepo + pnpm Deploy: Vercel (한국 리전) i18n: 딕셔너리 패턴 (ko/en) 아키텍처 Turborepo 모노레포로 패키지를 분리하여 관리한다. apps/web — Next.js 앱 (랜딩, 갤러리, 커스터마이저, 임베드) packages/widget-core — 위젯 타입, 레지스트리, 파라미터 파싱, 공용 프리셋 packages/widgets — 개별 위젯 구현체 (6종) 위젯 추가 시 registerWidget()으로 등록하면 갤러리, 커스터마이저, 임베드 라우트가 자동 생성된다. 위젯 갤러리 현재 6종의 위젯을 제공한다....
카카오같이가치는 카카오가 운영하는 사회공헌 플랫폼으로, 좋아요와 댓글만으로도 기부에 참여할 수 있는 서비스다. 매일 접속해서 참여하면 좋겠지만, 수백 개에 달하는 기부 항목을 매번 수동으로 처리하는 것은 현실적으로 어렵다. 자동화 기술을 활용하면 꾸준하게 참여할 수 있겠다는 생각에 크롬 익스텐션으로 개발하게 됐다. 기술 스택 Extension: Chrome Manifest V3, Service Worker Frontend: React 18 Build: Vite 5 CORS 문제 해결 크롬 익스텐션 환경에서 카카오 API를 직접 호출하면 CORS 오류가 발생한다. Extension의 Origin이 chrome-extension://... 형태이기 때문에 카카오 서버에서 요청을 거부한다. 이를 해결하기 위해 declarativeNetRequest API를 활용하여 요청 헤더를 자동으로 교체했다. { "action": { "type": "modifyHeaders", "requestHeaders": [ { "header": "Origin", "operation": "set", "value": "https://together.kakao.com" } ] }, "condition": { "urlFilter": "*together*kakao.com*", "resourceTypes": ["xmlhttprequest"] } } rules.json을 통해 글로벌 규칙을 적용하니 fetch 호출 코드에서 헤더를 별도로 관리할 필요가 없어졌다. 자동화 로직 핵심 자동화는 Service Worker(background.js)에서 처리한다. 실행 흐름: 기부 목록 수집: 전체 페이지를 순회하며 진행 중인(STATUS_FUNDING) 항목 수집 중복 필터링: chrome.storage에 저장된 참여 기록과 비교하여 미참여...