AI AGENT CHALLENGE
대외활동 큐레이션
흩어진 대외활동을 다 모아, 내가 지원할 수 있는 것만 골라주는 서비스
N186 이재호
문제
대외활동 찾기가 너무 번거롭다
- ·대외활동·공모전·장학금이 사이트마다 흩어져 있다. 링커리어도 보고, 콘테스트코리아도 보고, 지자체 청년 사이트까지 다 따로 뒤져야 한다.
- ·봐도 나랑 상관없는 게 잔뜩. 1학년만 되는 거, 특정 지역만 되는 거. 하나하나 읽어서 내가 되는지 직접 확인해야 한다.
- ·그러다 놓치거나, 지원했다가 자격이 안 돼서 시간만 버린다.
해결
다 모아서, 내가 되는 것만 골라준다
- 1.흩어진 공고를 한곳에 다 모은다 (하나도 안 놓치게)
- 2.내 조건(학년·전공·지역)을 넣으면, 그중 내가 지원할 수 있는 것만 골라준다
- 3.안 되는 것도 "왜 안 되는지"까지 알려준다
실제 화면
이렇게 생겼습니다
조건을 넣으면 지원 가능한 공고가 위로 올라오고, 각 공고에 마감일·출처가 붙습니다. 지금 실데이터 6,000건 이상이 들어 있습니다.
실데이터 6,000건+7개 소스
공고를 어디서 모으나
일곱 곳에서, 최대한 많이
콘테스트코리아링커리어위비티
온통청년부산 청년포털서울 청년포털한국장학재단
API로 받을 수 있는 곳은 API로, 안 되는 곳은 프로그램으로 긁어온다. 한 사이트만 보면 놓치니까, 빠짐없이 다 모으는 것(총망라)이 1순위 목표.
어떻게 골라주나
내 조건과 대조해, 네 갈래로 나눠 줍니다
조건
넣기→
공고 자격요건과
대조→
네 갈래로
나눠 보여주기
지원 가능
거의 가능 (조건 하나 차이)
확인 필요 · 지원 불가 (+사유)
안 되는 건 숨기지 않고 "요구 3.5인데 내 학점 3.2"처럼 왜 안 되는지 보여준다. 상세에서 조건을 바로 고치면 즉시 다시 판정한다.
어떻게 만들었나
화면이 데이터베이스에서 바로 읽어온다
화면
(웹 · React)
←→
데이터베이스
(Supabase)
공고는 데이터베이스에 저장하고, 화면이 거기서 바로 읽어온다. 원래 '서버'라는 걸 따로 만들어야 하는데, Supabase가 그 역할을 대신해줘서 서버를 안 만들었다. 수집(긁어오기)만 별도 프로그램이 따로 돌린다.
데이터가 화면까지 오는 길
DB에서 읽어와, 내 조건과 맞춘다
화면→
공고 요청
loadPostings→
Supabase
읽기→
자격 판정
match.js→
화면에
나눠 표시
- ·수집 프로그램이 7개 사이트를 긁어 postings 한 곳에 모은다 (중복은 걸러냄)
- ·match.js가 내 조건과 공고 조건을 맞춰 가능/거의 가능/확인 필요/불가로 나눈다
직접 보여드릴게요
지금 뜨는 공고는 진짜 데이터입니다
- ·조건을 바꾸면 결과가 바로 바뀌고, 공고를 누르면 자세히 보여요.
- ·지역을 부산으로 하면 부산 공고만, 별을 누르면 즐겨찾기에 담겨요.
2주차엔 샘플 데이터였지만, 지금은 7개 사이트에서 실제로 긁어온 6,000건 이상이 들어 있습니다. 마감 지난 건 자동으로 숨깁니다.
그다음
모으는 걸 넘어, 정확하게 골라주기
데이터를 다 모은 뒤엔, 실제로 써보며 잘못 골라주는 걸 하나씩 바로잡았습니다.
정확도를 높인 것
실제로 써보며 바로잡은 것들
지역이 잘못 섞이던 것
부산으로 골랐는데 광주·전남 공고가 떴습니다. 지역명을 못 뽑아 "아무나"로 처리된 탓이라, 시·도·시 이름을 잡아내게 고쳤습니다(52건 → 0건).
쓸모없는 조건은 걷어내기
나이 조건은 대학생이면 늘 만족이라 노이즈였고, 봉사 칸은 실제 데이터가 하나도 없었습니다. 둘 다 프로젝트 전체에서 걷어냈습니다.
어떻게 일했나
AI와 함께, 매일 이 순서로
혼자 몰아치지 않고, 계획 → 개발 → 검증 → 올리기 네 단계를 하루 안에서 작게 여러 번 돌립니다.
하루의 흐름
계획 → 개발 → 검증 → 올리기
① 계획
할 일 나누기→
② 개발
작게 쪼개 만들기→
③ 검증
진짜 되는지→
④ 올리기
깔끔하게
스킬 6개직접 만든 검증 에이전트테스트 64개
쓰는 도구
혼자가 아니라 도우미들과 함께
스킬(Skill) — AI에게 미리 정해둔 "일하는 방식"
매번 설명하지 않아도, "이 일은 이렇게 해줘"를 규칙으로 적어둔 것. 계획 나누는 법, 테스트 쓰는 법, 올리는 법 등 6개를 만들어 씁니다.
에이전트(Agent) — 특정 일을 맡기는 AI 조수
"이 코드 올려도 되나 한 번 훑어봐"처럼 한 가지 역할을 떼어 맡기는 AI. 코드 검증 에이전트를 직접 만들었습니다.
① 계획
큰 일을 하루치로 잘게 나눕니다
- ·이번 주 목표를 "하루 안에 끝낼 작은 일"로 쪼개고, 각 일에 "무엇이 되면 끝인지"를 정합니다.
- ·순서를 맞춥니다. 데이터가 먼저 있어야 화면이 되니까, 앞뒤가 엉키지 않게 잡습니다.
- ·예: "나이 조건을 없애자"는 한 번에 못 합니다. 화면 → 수집 → DB → 문서 순으로 쪼개 하나씩 지웠습니다.
② 개발
작게 쪼개 만들고, 확인 방법부터 짭니다
- ·한 번에 몰아치지 않고 파일 하나·수정 하나 단위로 나눠 저장합니다. 잘못돼도 어디서 틀렸는지 금방 찾습니다.
- ·코드보다 "잘 됐는지 확인하는 코드(테스트)"를 먼저 만듭니다. 통과하도록 짜면, 나중에 고쳐도 뭐가 깨졌는지 바로 압니다.
- ·AI가 짜준 걸 그대로 받지 않습니다. 방향은 제가 정하고, 만든 걸 직접 돌려보며 고칩니다.
③ 검증
"됐다"는 말을 안 믿고, 두 겹으로 확인
기능 검증 — 실제로 돌려서 눈으로
말로 넘기지 않고 화면을 띄워 확인합니다. 흔한 경우뿐 아니라 아주 큰 값·빈 값 같은 극단도 넣어봅니다.
코드 검증 에이전트 — 올리기 전 대신 훑기
제 코드를 대신 읽고 틀린 부분·빠진 테스트·실수를 짚어줍니다. 사람도 AI도 사각지대가 생기니 보는 눈을 하나 더 둡니다.
④ 올리기
여러 곳을 어긋나지 않게, 안전하게
- ·코드·제출 저장소·위키·할일 목록을 매번 같은 최신 상태로 맞춥니다. 예전 것과 새 것이 섞이면 헷갈리니까요.
- ·올리기 전에 비밀번호·열쇠 같은 게 섞였는지 자동으로 검사하고, 있으면 멈춥니다.
- ·정해둔 안전선을 지킵니다. 공식 저장소 본체엔 함부로 올리지 않고 제 작업 공간에만 올립니다.
이 방식이 실제로 잡은 것
검증이 진짜 실수를 걸러냈습니다
검증 에이전트가 잡은 버그
"재학생 안 됨"을 "졸업예정자만"으로 처리했는데 휴학생도 되는 걸 빠뜨렸습니다. 올리기 전 검증 에이전트가 짚어줘 고쳤습니다.
눈에 보이게 하니 드러난 버그
화면에 공고 수를 띄웠더니, 3,900건 중 1,000건만 불러오던 버그가 드러났습니다. 숫자를 안 띄웠으면 못 찾았습니다.
다음 주 · 마지막 주
모으는 걸 넘어, 믿고 쓸 수 있게
더 정확하게
- ·복잡한 자유 문장 조건까지 AI로 읽어내기 (지금은 규칙으로만)
- ·실제 공고로 얼마나 정확한지 숫자로 재고, 틀리면 규칙 고치기
실제로 쓸 수 있게
- ·인터넷에 배포해서 누구나 접속하게 (지금은 제 컴퓨터에서만)
- ·마감 임박 강조·수집 시각 표시 등 마무리 다듬기
목표는 하나 — 다 만들면 제가 실제로 쓰는 것.
이걸 왜 만드나
지원할 수 있었는데 몰라서 놓치는 일을 없애고 싶습니다.
흩어진 걸 다 모아서, 내가 되는 것만 정확히 골라주는 서비스. 저처럼 대외활동 찾느라 고생하는 사람이 자기 기회를 놓치지 않게. 다 만들면 제가 실제로 씁니다.
다 모아서 · 내가 되는 것만 · 놓치지 않게