PARK SUNGJIN

Park Sungjin — Full-stack · AI

사용자 문제를
제품으로 해결합니다

AI를 활용해 실사용자가 있는 서비스를 만들고 운영하며, 여러 에이전트가 나눠 일하는 구조까지 설계하는 풀스택 개발자 박성진입니다. 한국항공대학교 소프트웨어공학, 2027년 2월 졸업 예정.

Projects

2026.04 —LiveSoloNext.jsFastAPISQLiteGrepRag

KAU Notice Hub

약 70개 사이트에 흩어진 교내 공지를 한곳에 모았습니다. 수집부터 검색, GrepRag 기반 질의응답까지 혼자 만들었고 지금 교내 구성원이 쓰고 있습니다.

문제한국항공대의 공지는 학과⁠·⁠부서별로 약 70개 웹사이트에 흩어져 있고, 매년 2,000건 넘게 올라옵니다. 장학금⁠·⁠행사 공지를 놓치는 일이 잦아, 전부 모아서 한곳에서 찾을 수 있게 만들었습니다.

구현Python 크롤러가 약 70개 사이트를 수집해 FastAPI⁠·⁠SQLite에 적재하고, Next.js에서 출처⁠·⁠카테고리로 탐색합니다. 질문하면 관련 공지를 근거로 답하는 챗봇은 GrepRag로 만들었습니다. 벡터 임베딩 대신 LLM이 고른 키워드로 공지 본문을 직접 검색(grep)해 후보를 걸러내고 재정렬하는 방식입니다. AWS Lightsail에 Docker로 배포해 운영하고 있습니다.

KAU Notice Hub 서비스 화면 — 왼쪽은 대상자·중분류로 좁혀 보는 공지 탐색 목록(총 2,455건), 오른쪽은 진행 중인 공모전을 묻는 질문에 근거 공지를 바탕으로 답한 AI 챗봇 대화
실제 서비스 화면 (공지 탐색 · GrepRag 챗봇)
  1. 70개 교내 사이트Python crawler
  2. FastAPI · SQLiteingest · search API
  3. Next.jsbrowse UI
  4. GrepRag 챗봇keyword grep → rerank
  5. RAGASanswer eval

설계 결정과 운영만들고 끝이 아니라, 운영하며 생긴 문제를 계측으로 확인하고 고쳤습니다.

  • 단순 키워드 매칭의 한계를 확인하고 LLM 키워드 선택 → grep 필터링 → reranking의 GrepRag 구조로 재설계했습니다. 글: RAG 고찰
  • "좋아진 것 같다"로 끝내지 않기 위해 RAGAS 평가 파이프라인을 만들어 근거 충실성⁠·⁠관련성⁠·⁠정확성을 수치로 봅니다. 글: RAG 평가 도입
  • 공지 데이터를 메모리에 전부 올리던 초기 구조에서 OOM이 발생했습니다. dmesg로 원인을 확인하고 SQLite 기반으로 바꾼 뒤 부하 테스트로 검증했습니다. 글: 인프라 점검
  • 공개 서비스의 비용⁠·⁠어뷰징 리스크에 대비해 rate limit⁠·⁠요청 크기⁠·⁠출력 토큰 상한을 걸고, Vercel Analytics로 사용 흐름을 보며 개선 방향을 정합니다. 글: 운영 리스크 글: 모니터링

현재월 방문자가 1,000명을 넘습니다(Vercel Analytics). 유입 대부분이 교내 커뮤니티(에브리타임)를 통해 들어오며, AWS Lightsail 단일 서버에서 운영 중입니다. 위 결정들의 과정은 모두 블로그에 기록해 두었습니다.

Vercel Analytics 대시보드 — 최근 30일 방문자 782명, 페이지뷰 2,019회. 유입 경로 1위는 교내 커뮤니티 everytime.kr 439명
Vercel Analytics — 2026.07 시점 최근 30일 (유입 1위 everytime.kr)
월 방문자
1,000+
수집 사이트
약 70
수집 공지
2,400+
담당
End-to-End

2025.03 — 2026.07Team of 3FrontendReactTypeScript

WeBand

가입 없이 링크 하나로 팀 일정을 조율하는 웹 앱입니다. 출시 한 달 만에 600명이 썼습니다.

문제팀 일정 조율은 모두의 가능 시간을 모으는 반복 작업인데, 기존 도구는 가입과 서버를 요구합니다. 밴드 합주 일정을 잡던 경험에서 출발해, 링크만 공유하면 되는 도구를 만들었습니다.

핵심 결정첫 버전 WeBand-Light는 백엔드 없이, 일정 상태 전체를 URL에 인코딩했습니다. 슬롯 비트셋 인코딩과 구간 기반 압축을 모두 구현해 더 짧은 쪽을 자동 선택하는 하이브리드 구조로, 예시 기준 공유 URL을 30자에서 9자까지 줄였습니다. 슬롯을 하나씩 찍는 입력은 터치 친화적인 구간 선택으로 바꿨습니다.

브라우저 주소창 — we-band.vercel.app/lite/260726/홍길동.~AFAHA_AGBLAGBnAEB_AFCaAK 처럼 일정이 인코딩된 짧은 공유 주소
서버 없이 일정 전체가 이 주소 안에 담깁니다
WeBand Light 시작 화면 — 약속을 잡을 기준 날짜를 선택하는 화면 주간 시간표에서 가능한 시간대를 구간으로 선택해 입력한 화면 일정 저장 완료 안내 — 일정이 인코딩된 짧은 공유 URL이 표시된 화면
실제 서비스 화면 (날짜 선택 · 구간 입력 · URL 공유)

결과출시 한 달 만에 사용자 600명, 이후 2025년 3~9월 누적 방문자 1,220명⁠·⁠페이지뷰 6,055회를 기록했습니다(Vercel Analytics). 참여자가 늘며 URL 방식의 한계가 보여, 고정 공유 링크를 쓰는 DB 기반 WeBand-Together로 확장했습니다. 디자이너⁠·⁠백엔드 개발자와 3인으로 만들었고, 저는 기획⁠·⁠UX에 참여하며 프론트엔드를 전담했습니다.

Vercel Analytics 대시보드 — 방문자 1,220명, 페이지뷰 6,055회, 2025년 3월부터 9월까지의 방문자 추이 그래프
Vercel Analytics, 2025.03 — 09

More Projects

  • 2026RosterCrawler교내 근로 업무(안전교육 관리) 자동화. 좌표 기반 리포트 텍스트를 표로 복원했고, 저장 단위를 바꿔 수집 성능을 높였습니다
  • 2026NoDupDownload파일명⁠·⁠출처 URL로 중복 다운로드를 감지하는 Chrome 확장

AI & Competitions

  1. LG Aimers 9기 · 야구 투구 제구 예측2026.08상위 약 4.5%
  2. Dacon · AI 코딩 에이전트 행동 예측2026.07상위 약 20%
  3. LG Aimers 8기 · LLM Quantization 해커톤2026.01 — 02상위 약 30%
100%7550251위
2026년에 참가한 AI 대회 세 곳의 순위 백분위입니다. 오른쪽에 가까울수록 상위이고, 위가 최신입니다.

2026.08Team of 3Brier Skill ScoreKBO TrackMan

LG Aimers 9기 — 야구 투구 제구 성공 확률 예측

LG AI연구원이 운영하는 AI 교육⁠·⁠해커톤 프로그램의 9기 대회입니다. KBO 트랙맨 기반 학습 데이터(약 137만 행)와 2025 시즌 평가 데이터(약 24.6만 행)를 제공받아, 투수가 던진 공이 의도한 코스로 갈 확률을 예측했습니다. 2,403명⁠·⁠1,082팀이 참가한 온라인 해커톤을 49위(상위 약 4.5%)로 통과했습니다.

리더보드 점수 1위 = 100

  • 549.5베이스라인
  • 919.9전체 평균
  • 1,167.7
  • 1,225.21위

제출 횟수 상한 140

  • 36회전체 평균
  • 138회
평균은 마감 전날 리더보드 스냅샷(1,053팀) 기준

지표를 먼저 해석했습니다Brier Score는 누가 더 잘 맞히는지(순위)가 아니라 예측 확률이 실제 빈도와 얼마나 맞는지(보정)를 채점합니다. 실제로 모델들의 판별력(AUC)은 0.53 수준이었고, 점수 차이의 대부분이 보정에서 나온다는 것을 초기에 측정으로 확인했습니다. 그래서 "더 강한 모델 찾기"가 아니라 "여러 모델을 어떻게 결합하고 확률을 어떻게 보정할 것인가"에 4주를 썼습니다.

접근

  • 라벨이 성공 + 반대방향 + 한복판 ≈ 0.90으로 분해된다는 관찰에서 출발해, 실패 유형별로 부스터를 따로 학습하고 그 출력을 스태커가 다시 결합하는 구조를 설계했습니다(CatBoost, 63피처).
  • 팀에서 함께 운용한 LightGBM⁠·⁠신경망⁠·⁠EBM 등을 더해 총 5개 모델을 로짓 공간에서 가중 결합하고, 다항식 보정과 상황별 오프셋 보정을 얹었습니다.
  • 평가 대상이 2025 시즌이라 모든 누적 통계가 해당 시즌 이전만 참조하도록 만들었습니다. 랜덤 K-Fold 대신 "2023년까지 학습 → 2024년 검증"이라는 시간 분할 하나를 비교 기준으로 고정했습니다.
  • 하루 5회 제출 제한이라 제출 하나를 측정 1회로 취급했습니다. 리더보드 점수에서 보정 상수의 최적값을 역산하되, 추정에 계통 오차가 있는 것을 확인한 뒤로는 오차가 2배여도 손해가 안 나는 보수적 지점에 섰습니다. 실패한 제출도 직전과의 차이를 계산해 원인을 특정하는 식으로 정보를 회수했습니다.

담당3인 팀에서 모델 구조 설계와 학습⁠·⁠앙상블⁠·⁠검증⁠·⁠제출 전략을 맡았습니다. 야구 도메인 지식이 있는 팀원이 피처 발굴을 담당해, 도메인에서 나온 가설을 제가 모델 구조와 검증 설계로 옮기는 분업이었습니다. 팀원이 도메인 관점에서 낸 피처 후보는 기존 피처와 통계적으로 겹치는지 직교성 분석으로 걸러 채택했습니다.

4주 동안의 제출 138회는 근거와 결과를 전부 원장으로 남겼고, 채택 기준은 결과를 보기 전에 미리 등록해 두는 규율로 운영했습니다. 배포 모델은 학습 코드로 재학습했을 때 트리 잎값까지 동일하게 재현되는 것을 확인했습니다.

모델을 하나 더 얹는 것보다 무엇을 기준으로 결합하고 무엇으로 검증할지를 정하는 편이 점수를 갈랐습니다. 도메인을 아는 팀원이 낸 피처는 혼자였다면 나오지 않았을 것이라, 역할을 어떻게 나누느냐가 결과의 일부라는 것도 이 대회에서 확인했습니다.

1,082팀 중
49위
백분위
상위 약 4.5%
참가
2,403명
제출
138회

2026.07SoloMacro-F1Multi-agent

Dacon — AI 코딩 에이전트 행동 예측

에이전트의 세션 로그로 다음 행동 14클래스를 예측하는 대회입니다. 베이스라인 0.43에서 0.7867까지 올려 868명⁠·⁠269팀 중 59위(상위 약 20%)로 마쳤고, 실험 운영은 17개 역할로 나눈 AI 에이전트 하네스를 직접 설계해 맡겼습니다.

Macro-F1 1위 = 100

  • 0.43베이스라인
  • 0.7867
  • 0.79881위

제출 횟수 상위 88팀

  • 67회상위 88팀 평균
  • 105회1위
  • 110회
전체 269팀 중 리더보드에 공개된 상위 88팀 기준

문제 재정의같은 요청이라도 파일을 읽었는지, 테스트가 통과했는지에 따라 다음 행동이 달라집니다. 단순 문장 분류가 아니라 대화와 도구 사용으로 누적된 작업 상태를 추론하는 문제로 정의하고, 현재 요청과 과거 행동을 잇는 관계형 피처를 설계했습니다. 고전 ML과 Transformer 3종을 확률 블렌드로 앙상블했는데, 개별 점수보다 오류를 보완하는 조합이 성능을 갈랐습니다.

AI Agent 운영 하네스실험 실행은 Claude 에이전트에 맡기고 저는 전략⁠·⁠승인⁠·⁠제출을 맡았습니다. 하나의 에이전트에 전부 맡기자 단계 누락과 정보 혼선이 반복돼, 원인을 모델의 능력이 아니라 한 에이전트가 지는 책임과 컨텍스트가 너무 넓어진 작업 구조로 보고 다시 설계했습니다.

  • 역할을 17개 서브에이전트로 분리하고(전략 수립 / 데이터⁠·⁠누수 감사 / 학습 설정 검증 / 실행 / 제출물 검증 / 기록), 각 에이전트에는 맡은 역할에 필요한 최소 정보만 넘겼습니다.
  • 자연어 보고 대신 산출물로 검증했습니다. 실제 적용된 설정을 남기는 effective_config, 코드⁠·⁠데이터 SHA 대조, 제출물 자동 검사를 붙였고 실제로 학습 시작 전 결함을 2회 사전 차단했습니다.

한 에이전트의 실수가 전체 과정을 그대로 통과하기 어려운 구조가 됐습니다. AI Agent의 성능은 모델만이 아니라 역할⁠·⁠컨텍스트⁠·⁠권한⁠·⁠검증 구조를 어떻게 설계하느냐에도 달려 있다는 것을 배웠습니다.

베이스라인
0.43
최종 Macro-F1
0.7867
269팀 중
59위
참가
868명

2026.01 — 02Team of 4LeadGPTQ W4A16

LG Aimers 8기 — LLM Quantization 해커톤

EXAONE-4.0-1.2B를 4bit로 양자화해 성능과 속도를 함께 겨루는 대회입니다. 직접 팀을 모아 4인으로 참가해 리드를 맡았습니다. 1,537명이 참가했고 628팀 중 185위로 마쳤습니다.

분업4인이 경량화 기법을 나눠 맡아 각자 연구했습니다. 팀원들이 프루닝과 디스틸레이션을 맡았고, 저는 양자화를 담당했습니다.

점수가 성능 50% + 속도 50%로 매겨져서 "어디까지 줄여도 성능이 버티는가"를 찾는 문제였습니다. GPTQ(llmcompressor)로 W4A16 양자화를 적용하고, 결과를 좌우하는 캘리브레이션 데이터 구성을 다섯 가지로 바꿔가며 비교했습니다. 같은 제출물인데도 점수가 0.1점 이상 흔들리는 것을 관측했고, 모델 개선과 별개로 측정 자체를 믿을 수 있는지 먼저 따져야 한다는 것을 이 대회에서 처음 겪었습니다.

About

만들고 배포하는 데서 멈추지 않고, 로그와 지표를 보며 서비스를 고쳐 나가는 일을 좋아합니다. AI를 도구로 쓰는 것을 넘어 그 행동을 데이터로 분석해 봤고, 여러 에이전트가 나눠 일하는 실험 구조를 직접 설계해 운영해 봤습니다. AI가 들어간 제품을 처음부터 끝까지 만들어 운영합니다.

부딪힌 문제는 기록으로 남깁니다. 위 프로젝트의 설계 결정과 트러블슈팅은 대부분 기술 블로그에 글로 남겼고, 2024년 3월부터 비공개 글을 포함해 200편 이상 썼습니다.

Skills

운영 서비스에서
Next.js · TypeScript · FastAPI · SQLite · Docker · AWS — KAU Notice Hub를 만든 스택입니다. SQLite는 저사양 단일 서버에서 관리 부담 없이 쓰기 위한 선택이었습니다.
AI
LLM 애플리케이션(GrepRag 설계 · RAGAS 평가) · 멀티 에이전트 오케스트레이션 · 모델 경량화(GPTQ 양자화) — GrepRag는 Notice Hub 챗봇으로 운영 중이고, 에이전트 오케스트레이션은 Dacon 실험 운영에, 양자화는 LG Aimers 제출 모델에 적용했습니다.
언어
Python · TypeScript/JavaScript · C++ — 알고리즘 대회에서는 C++를, 제품에서는 TypeScript와 Python을 씁니다.
협업 · 도구
Git/GitHub · Figma · Notion · Jira · Slack · Claude · Codex — 디자이너⁠·⁠백엔드 개발자와 WeBand를 함께 만들었습니다.

Collaboration & Leadership

  • 교내 멘토링 8회. 후배들의 개발 학습과 프로젝트를 돕고 있습니다
  • 클라이밍 동아리 Hands On Top! 창립. 70명 규모로 운영 중이고, 교내 지원 프로그램에서 100여 팀 중 6팀에 선정됐습니다
  • 자라섬 재즈 페스티벌 자원봉사. 해외 아티스트 영어 통역과 현장 운영을 맡았습니다
  • 중국 톈진 국제학교 4년. 영어로 수업을 듣고 다문화 환경에서 협업했습니다

Awards & Certifications

2026.06제25회 TOPCIT 정기평가 Level 4교내 1위
2026.02지식 공유 우수작 선발 대회1위
2026.023중 멘토링 뽐내기 공모전2위
2026.023중 멘토링 우수 멘토59팀 중 4등
2026.02TOEIC890
2025.09KAUPC 알고리즘 경진대회2위
2024.10Codeit 프로젝트 교내 쇼케이스1위
2023.11SW 코딩자격1급