● 2026-09-18 갱신 — 클라우드 전환 (현재 기준)
이 문서는 온프레미스 자체 서빙·Qwen 자체학습 기준으로 작성됐다. 프로젝트는 이후 심사·운영을 클라우드(AWS · seuk.suvisdev.cloud)에서 Anthropic Claude 기반으로 확정했다. 아래 온프레미스/자체학습/"Claude API 미의존" 서술은 당시 기록이며, 현재 심사 기준은 클라우드·Claude 다.

● 최종 갱신 2026-09-28 — 심사 기간 판정·요약은 클라우드 Claude 로 운영, 자료 부족 지원자는 09-18 부터 자동 서류 탈락, 경계선 hold(A안)는 미구현으로 종결.
09-20 해커톤 제출 이후 코드 동결(main 마지막 커밋 8071fd9, 마지막 머지 PR #354). 아래 24명 수치는 09-11 실측 그대로 보존한다. 심사 기간(09-18~09-28) 신규 지원서는 0건이라 판정 표본은 늘지 않았다. Qwen 어댑터 후속(요약 v2 · career_years 보강)은 보류.
fit-check 자동 판정 · 정확성 분석
2026-09-17 갱신 · 해커톤 마감 D-3 · 판정 근거 수치화 + 정확성 측정 방법
서류 심사 DB 실측(09-11 기준) · 판정 코드 backend/app/application/screening.py · 프롬프트 chain_evaluate.v2.md
2026-09-17 갱신 · 이 문서에서 달라진 것 (핵심 5줄)
서류 24명 정정(09-12 확인 · 유지) · 인수인계에는 "자동 불합격 3명 (한지우·박도윤·정민호)" 이라 되어 있었지만, DB 실측 · 이 3명 모두 자동 합격이었음.
실제 자동 불합격 8명 · 자동 합격 14명 · 요약 대기 2명 (문가영·장우진 · 정보 부족 지원자). 이하 §1~§8 은 09-11 서류 심사 실측을 유지하고 시점을 명시한다.

1. 전체 상태 · 한눈에 (서류 심사, 09-11 실측)

8
자동 불합격
14
자동 합격
2
요약 대기
60
합격 기준

2. 판정 알고리즘 · 어떻게 계산하는가

문서 점수 (0-100) = 세 부분의 가중 평균

doc_score = (requirements × 50 + preferred × 20 + culture × 30) / 100
항목가중치0 → 100 기준
requirements50%필수 요건을 전부, 요구 수준 이상으로 충족 → 100
preferred20%우대 항목을 실제 경험으로 여럿 보임 → 100. 없으면 50.
culture30%인재상 "함께 일하고 싶은 사람" 흔적 → 100. 근거 없으면 50. "잘 안 맞음" 신호 → 낮음.

각 항목은 chain_evaluate.v2.md 프롬프트가 LLM 호출로 산출. 기준은 company_profile.scoring_weights. 총점 ≥ 임계값(60)이면 자동 합격, 아니면 불합격.

⚠ 시점 주의: 아래 24명 실측은 09-11 · Claude Haiku 호출 기준이다. 심사·프로덕션 판정 서빙은 09-18 확정으로 클라우드(AWS)+Anthropic Claude 이고, Qwen 어댑터 실측(§9·§10)은 비용 절감 R&D 자산의 정확도 참고 자료다.

3. 자동 불합격 8명 · 근거 수치 (09-11 실측)

최유진 · id 67 (FE) · 37점 불합격
requirements: 15
preferred: 50
culture: 65
(15×50 + 50×20 + 65×30) / 100 = 750 + 1000 + 1950 = 37
근거: React·TypeScript 실무 경험 0년 (필수 2년 이상). HTML 기초만 있음. 마케팅 4년 → 프론트엔드 전직 시도 중.
판정: 명확한 요건 미달 · 정확
최유진 · id 81 (BE) · 37점 불합격
requirements: 15
preferred: 50
culture: 65
근거: Python·FastAPI·PostgreSQL 실서비스 개발 경험 전무. SQL·데이터 파이프라인 감각은 있음. 동명이인 · FE 지원과 같은 프로필.
판정: 명확한 요건 미달 · 정확
오하람 · id 78 · 44점 불합격
requirements: 35
preferred: 50
culture: 55
근거: 데이터 엔지니어 3년 (Python·PostgreSQL 튜닝 有) → 백엔드 지원. API 서버 실무는 없음. FastAPI·Django 경험 미기재.
판정: 데이터 엔지니어 vs 백엔드 개발자 경계 · 판정은 타당하나 · 학습 곡선 감안하면 재고 가능
홍지민 · id 52 · 49점 불합격 재접수 diff 시연 대상
requirements: 45
preferred: 50
culture: 55
근거: Node.js·Express BFF 경험 有 (기술 스택 다름). Python·FastAPI·PostgreSQL 실무 없음. MongoDB 만 실무.
판정: Node.js 5년 vs Python 요건 3년 · 스택 자체가 다름 · 정확한 판정. 최근 Node.js → Python 전환 트렌드 감안하면 우대 가점 논의 여지.
시연 · diff: 이력서 sha256 이 옛 것 유지 · 새 PDF 업로드됨 → "내용이 바뀜" 시연 대상. 09-17 갱신: 이 서사가 정식 재접수 diff UI(#327) + 변동 배지로 승격됐다. 같은 사람 재접수 시 이전 지원 대비 이력서 변동을 요약 chain(resume_diff, #320)이 감지해 화면에 diff 로 띄운다.
임재원 · id 74 · 54점 불합격
requirements: 65
preferred: 25
culture: 55
(65×50 + 25×20 + 55×30) / 100 = 3250 + 500 + 1650 = 54
근거: FastAPI 3년 실무 (필수 충족!) · 하지만 우대 사항 부족 (25점) · CI·pytest·JWT·큐 경험 미기재 · alembic·쿼리 튜닝 부재.
판정 이슈: 필수 요건은 통과했는데 · 우대 부족으로 탈락. 우대 20% 가중치가 부족 · 재검토 여지 있음. 09-17: C 개선(#182, 우대 20→10)으로 완화된 축.
백서준 · id 80 · 56점 불합격
requirements: 62
preferred: 15
culture: 72
(62×50 + 15×20 + 72×30) / 100 = 3100 + 300 + 2160 = 55.6 ≈ 56
근거: Flask 2년 (필수 3년 미달) · FastAPI 는 사이드 프로젝트 · culture 72 (문화 우수). preferred 15 (매우 낮음).
판정 이슈: 문화는 우수 · 경력 1년 부족 + 우대 낮음. 아슬한 케이스.
남기훈 · id 79 · 58점 불합격 ⚠
requirements: 75
preferred: 50
culture: 35
(75×50 + 50×20 + 35×30) / 100 = 3750 + 1000 + 1050 = 58
근거: FastAPI·PostgreSQL 5년 실무 (요건 3년 초과) · alembic 리비전 순차 배포 有 · DB 튜닝 有.
culture 35 이유: "회의 기반 의사결정, 승인 기반 조직문화 적응" 문구가 인재상의 '자율 결정권'과 불일치 신호로 판정됨.
⚠ 판정 이슈: 요건 우수 지원자 · 문화 하나로 탈락. 09-17: B 개선(#182)의 문화 하한 규칙(요건 70↑이면 culture 50 미만 방지)이 바로 이 케이스를 막는다.
강현우 · id 68 · 59점 불합격 ⚠
requirements: 65
preferred: 50
culture: 55
(65×50 + 50×20 + 55×30) / 100 = 3250 + 1000 + 1650 = 59
근거: React·TypeScript 3년 실무 · Redux · 무장애 배포. REST API 인증 경험·PR 문서화 미기재.
⚠ 판정 이슈: 정확히 1점 차이로 탈락. 임계값 감도 문제. 60점이었으면 자동 합격. (A안 경계선 hold 는 여전히 미구현.)

4. 판정 정확성 · 세 가지 문제 발견 (09-11)

① 남기훈 (58) · 요건 우수인데 culture 하나로 탈락
requirements 75 (요건 초과 충족) · preferred 50 · culture 35 로 결정적 감점.
"회의 기반 의사결정" 자소서 문구가 인재상 (자율 결정권 선호) 과 불일치로 판정.
→ 대응(구현됨) · B. 문화 하한 규칙(#182): 요건 ≥ 70 이면 culture 가 50 미만으로 내려가지 않음.
② 강현우 (59) · 1점 차이로 탈락
임계값 60 에 정확히 1점 못 미침. 3년 실무 경력 있음.
→ 제안(미구현) · 55-65 경계선 지원자는 자동 판정 대신 hold · 담당자 리뷰. A안, 팀 결정 사항.
③ 임재원 (54) · 요건 충족했는데 우대 부족으로 탈락
requirements 65 (통과!) · preferred 25 (매우 낮음) · culture 55.
→ 대응(구현됨) · C. 우대 가중치 20 → 10(#182). 필수 통과자를 우대 부족으로 떨어뜨리는 감도를 낮춤.

5. 개선 방향 · 세 가지 (반영 현황)

A. 경계선 지원자 · 자동 판정 대신 hold 미구현 · 최종(09-28) 미구현으로 종결

55-65 사이 (임계값 ±5) 는 hold 로 두고 담당자 리뷰. 자동 판정 실수 방지.

코드 위치 · backend/app/application/screening.py (경로 이관 · ADR-0035) · if score >= threshold 로직에 경계 범위 추가.

B. 요건 우수자는 culture 하한 보장 구현됨 · #182

requirements ≥ 70 이면 · culture 가 50 미만으로 내려가지 않음(문화 하한 규칙). 남기훈 같은 케이스 방지.

doc_score_from 에 반영 · CULTURE_FLOOR_WHEN_REQUIREMENTS_HIGH=50 · REQUIREMENTS_HIGH_THRESHOLD=70.

C. 우대 가중치 20 → 10 · 필수 통과자 보호 구현됨 · #182

임재원처럼 필수는 만족했는데 우대 부족으로 탈락 하는 케이스 방지. 필수 요건 50 → 60.

DEFAULT_WEIGHTS · {"doc_preferred": 10}.

6. 자동 합격 14명 · 참고 (09-11)

점수이름주요 근거
86한지우 (FE)React·TS 2년+, 성능 최적화 실전, 협업 문화
86류성민 (BE)고득점
84조민석 (BE)고득점
82Emily Park (FE)영어 이력서 · 정상 채점
81Daniel Kim (BE)영어 이력서 · 정상 채점
78배수아 (BE) · 오세린 (FE)영어 이력서 · 정상 채점
77김태호 (FE)안정 합격
66윤하늘 (FE)중간 합격
61박도윤 (FE)Vue 6년 · React 요건 미충족 (요건 55). 우대·문화로 상쇄.
60이서연 (FE) · 정민호 (FE) · 서지훈 (FE) · 신예은 (BE)정확히 임계값 · 아슬 합격

박도윤 (61점) · 흥미로운 케이스

박도윤 · id 63 · 61점 합격 · Vue 6년 → React 지원
requirements: 55
preferred: 70
culture: 65
근거: Vue/Nuxt 6년 · React 실무 없음 (요건 미충족) · TypeScript 전환 리드, 성능 최적화 (1.2초→200ms), 팀 합의 로드맵.
판정 특징: requirements 55 (미충족) 이지만 · preferred 70 (기술 이관 경험 우대) + culture 65 → 총점 61 로 통과. 알고리즘이 "이관 지원자" 를 포용한 케이스.

7. 문가영 · 장우진 · 요약 대기 (원인 규명 완료)

doc_score = null · 요약 미완료.

인수인계에 "문가영 · 정보 부족 서사 · 아르가 정보 부족 인정" 대상으로 표시. 실제 · 채점 자체가 안 됨.

2026-09-12 확인 · 자료 자체가 비어 있다 (정상 판단)
장우진(id 82) 첨부를 프로덕션에서 직접 추출: 이력서 PDF 291자(대부분 이메일·전화·생년월일) · 자기소개서 PDF 54자("파이썬 백엔드 4년." 한 문장) · 자기소개 입력칸 27자. PDF 추출 경로는 정상이고 텍스트가 stub 이다. 아르가 insufficient: true 로 남긴 것은 정상 판단이다.
같이 발견된 실제 버그: "다시 생성" 버튼에 onClick 이 없어 눌러도 요청이 안 나감(프로덕션 로그 90분 호출 0건). PR #208 로 배선 + 실패 사유(503/422/네트워크) 표시.
최종(09-18 반영 · 09-28 확인) · 자료 부족 지원자는 자동 서류 탈락
요약이 insufficient: true(분석할 자료가 없음)로 저장된 지원자는 점수 없이 hold 로 남지 않고 자동 서류 탈락하도록 바뀌었다(#349·#351, ADR-0034 확장 · screening.py _summary_insufficient). 문가영·장우진 같은 "요약 대기" 상태가 더는 쌓이지 않는다. 근거는 "판단할 자료가 비어 있음" 이다. 적용 대상은 screening_mode=auto 공고의, 아직 applied 단계이고 사람이 옮긴 적 없는 지원자다 — 시스템이 applied→screening→rejected 로 자동 서류 탈락 처리한다(actor_kind=agent, 단계 이력에 사유 기록). 탈락 메일은 이때 보내지 않는다(notify=False) — 코드상 발송 경로는 마감 뒤 일괄 발송용 POST /api/v1/postings/{id}/send-rejections(send_pending_rejections) 하나이며, 이를 부르는 프론트 버튼·스케줄러는 코드에 없다(09-29 확인). 수동 모드 공고는 hold 로 남아 담당자 판단에 맡긴다.

8. 시연 시나리오 · 09-17 갱신

시연 시나리오 정정 · 신규 UI 반영:

9. 판정 정확성을 어떻게 "측정"하는가 (신설)

서류 점수는 위 §2 공식으로 나오지만, "판정이 정확한가"는 세 갈래로 따로 측정한다. 멘토가 "성능을 어떻게 측정하냐"고 물으면 이 표가 답이다.

측정 대상방법결과 (09-17)
아르 도구 호출정답 케이스 대비 pass_rate · fail 사유를 UX정상 / 진짜실수로 분류v9 73.9% (17/23) · §10
Claude vs Qwen (R&D 비교)같은 케이스·같은 rubric 으로 두 모델 대조69.6% vs 26.1% · §10
요약 어댑터JSON 유효성·gist·key_skills·career_years 항목별 정성 대조career_years 만 오차 · §10

서류 심사(§2~§8)와 이 세 측정은 층위가 다르다. 서류 심사는 "점수가 맞나", 이 절은 "어떤 모델·어댑터로 판정을 돌려야 정확한가"를 본다.

10. 어댑터 정확도 · Qwen 3갈래 R&D 자산 (신설)

아르 도구 호출 (chat/agent = qwen3-arda-agent v9)

도구 호출 pass_rate 73.9% (17/23) 실측. fail 6건 중 5건은 UX상 정상(pending_pass · 안전 다단계) → 실질 ~95%+. 진짜 실수는 1건(list_postings 오선택). v6·v7·v8 을 모두 상회.

같은 자(rubric)로 Claude vs Qwen (R&D 비교)
옛 측정에서 Claude 69.6% vs Qwen 26.1% — 격차의 상당 부분이 도메인 미스매치였다. v9 파인튜닝으로 이 격차를 대폭 축소했다(R&D 실측). 다만 해커톤 심사 서빙 기준은 판단 품질·서비스 안정성·트래픽 대응(LLM 은 관리형 API 라 벤더 쪽에서 확장 · 서버는 단일 EC2)을 이유로 클라우드(AWS)+Anthropic Claude 로 확정했고, Qwen 어댑터는 비용 절감 R&D 자산으로 남긴다.

요약 어댑터 (summary = qwen3-arda-summary · summary-2026-09-17)

정성 확인: JSON 완벽 · gist · key_skills 정확. 다만 career_years 만 인턴 포함 오차 — 정답 3년을 5년으로 셈(R&D 실측). career_years 는 인턴 포함 여부에서 오차가 나기 쉬운 축이라, 심사에서 Claude 로 서빙하는 서류 요약·이력서 재접수 diff 에서도 담당자 확인 축으로 표기한다.

⚠ 혼동 금지 · v6~v9 는 chat 어댑터, summary-2026-09-17 은 요약 전용 최초 어댑터. 겸용 아님. 면접 chain 은 별도 qwen3-arda-interview.

09-17 운영 리허설 (우정)

전체 흐름 13분 무중단(공고→지원→서류→면접→분석→채점→합격→메일). 얼굴 인식 86% · 실시간 판정 57/57 담당자 화면 도착 · 메일 4통 발송. 서류 판정과 실시간 판정이 한 흐름에서 끊김 없이 도달함을 확인.