조달핏이 공고를 어떻게 골라 보여주는지, 무엇을 바꿨고 그래서 얼마나 나아졌는지를 적습니다. 숫자는 전부 같은 방법으로 잰 것입니다.
재는 방법. 과거 시점(예: 8월 1일)으로 돌아가 그날 조달핏이 어떤 공고를 추천했을지 다시 계산하고, 그 뒤 실제로 그 회사가 낙찰받은 공고가 추천 30건 안에 있었는지 봅니다. 세 시점(7/1·8/1·9/1)으로 잽니다. 회사는 2026-10-16 부터 3,000곳(정답이 있는 회사가 그보다 적으면 있는 만큼)이고, 그 전 숫자는 300곳 기준입니다. 이 숫자는 "낙찰 확률"이 아니라 검토할 만한 공고를 놓치지 않는 비율입니다. 낙찰은 못 해도 검토할 가치가 있던 공고는 훨씬 많습니다. 2026-10-13 이전 항목은 채점표가 생기기 전의 변경이라 전후 수치가 없습니다.
지금 (2026-10-15)
변경 22건 · 마지막 10.23
8/1 기준
처음
지금
추천 30건 안
40%
49%
추천 5건 안
26%
28%
신규 회사, 30건 안
25%
38%
다음 병목: 여전히 후보에 못 올라오는 공고(특히 물품)입니다. 물품분류 통로와 사용자 신호(검토·안 맞아요) 반영이 다음입니다.
어떻게 고르는가
점수표는 운영 코드 값 · 회사별 실제 수치는 결과 화면에
9,462
지금 입찰 가능한 공고
여기서 시작합니다. 글의 뜻이 비슷한 공고, 회사 등록업종을 허용하는 공고, 회사 공급물품 분류가 맞는 공고 세 통로로 후보를 모읍니다.
마감 90일 이내 · 참가자격 등록이 안 지난 것
200
비슷한 순서로 추린 공고
회사 등록업종·공급물품·수주 이력으로 만든 회사 벡터와 공고를 견줘 비슷한 순서로 추립니다.
전체의 2.1%
회사마다
참가 자격 통과
면허(허용업종)·지역 제한(시·도 또는 시·군·구)·참가자격 등록 마감을 대조해 낼 수 없는 공고는 뺍니다.
면허·지역·등록 마감 대조
20
검토할 공고
아래 점수표로 줄 세우고, 비슷한 공고가 상위를 독점하지 않게 섞은 뒤 보여줍니다.
점수 순 · 다양성 반영
점수를 올리는 것
공고 내용과 회사 업종 설명의 유사도기본 점수0 ~ 100
과거 거래한 기관의 공고+12
유사 회사가 수주한 기관지금은 꺼져 있음+9
지역 제한이 본사와 일치+9
등록업종·물품 표현이 공고와 겹침최대 9+3 / 개
추정가가 회사 평균 수주가의 0.7~1.5배+2
점수를 내리는 것
추정가가 평균의 1/10 이하 또는 10배 이상−2
최근 낙찰의 절반 이상을 같은 회사가 가져간 기관10건 이상 기관만−3
마감 1일 이내−9
회사 벡터 = 등록업종·공급물품 설명(메인) + 과거 수주 이력(보조). 섞는 비율은 수주 건수에 따라 다릅니다 — 0건이면 업종만, 1~5건 0.65 : 0.30, 6건 이상 0.50 : 0.45. 점수는 낙찰 확률이 아니라 검토 순서입니다. 자격 판정은 공고 필드(허용업종·지역·등록 마감)만 봅니다 — 문서 속 면허·증명 요구는 판정하지 않고 보여만 줍니다.
2026.10.23
검토할 공고를 12건에서 20건으로
한 번에 보여주는 공고를 12건에서 20건으로 늘렸습니다(로그인 없이 보이는 상위 5건은 그대로).
두 가지를 재고 정했습니다. 첫째, 같은 추천 순서에서 몇 건까지 보여줄 때 뒤에 낙찰받은 공고가 들어 있는지를 시점 둘로 쟀습니다. 12건이면 8월 1일 40.8% · 9월 1일 41.6%, 20건이면 48.2% · 44.9%, 30건이면 51.3% · 47.3%입니다. 20건을 넘기면 늘어나는 폭이 그 이전보다 작아집니다. 둘째, 지금까지 쌓인 실제 사용 기록에서 13~20번째 줄에서 저장된 공고가 전체 저장의 27%였습니다. 뒤쪽 줄을 훑고 지나가는 것이 아니라 거기서도 검토할 것을 찾고 있었습니다.
인쇄용 보고서는 12건 그대로입니다. A4 한 장에 들어가는 수이고, 화면에서 고르는 일과 종이로 건네는 일은 쓰임이 다릅니다.
2026.10.23
결과 페이지가 계산 단계를 실제 진행대로 보여줍니다
결과 페이지 머리에서 후보 검색 → 참가 자격 → 순서 매기기 세 단계가 실제로 끝나는 순서대로 선이 지나갑니다. 숫자(지금 입찰 가능한 공고 · 등록업종 허용 공고 · 참가 자격 통과 공고 · 검토할 공고)는 그 요청에서 실제로 센 값이고, "참가 자격 통과"는 후보 200건 중 통과한 수입니다. 가짜 진행률은 없습니다. 추천 순서 자체는 바뀌지 않았습니다.
2026.10.16
물품 회사 정보를 먼저 보강 + 공급물품 수집 복구
물품 통로는 회사에 공급물품이 등록돼 있어야 작동합니다. 9/1 시점에 놓친 물품 낙찰 43건 중 33건은 회사 쪽에 공급물품이 아예 없어서였습니다. 회사 정보 보강 순서에 "물품 입찰에 참여한 적 있는데 공급물품이 없는 회사"(28,681곳)를 검색된 회사 바로 다음 단계로 넣었습니다. 그 과정에서 공급물품 API가 9월 10일부터 파라미터 하나가 빠져 빈 응답을 돌려주고 있던 것을 발견해 고쳤습니다. 5주간 업종만 채워지고 공급물품은 못 받은 회사 20,941곳도 다시 조회합니다.
고친 뒤 100곳 시험
값
공급물품을 받은 회사
83곳
받은 공급물품
3,062건
하루 1,500곳씩 돌아가므로 밀린 회사를 다 훑는 데 3주쯤 걸립니다. 그동안 물품 통로의 효과가 조금씩 커집니다.
2026.10.16
공고와 사전규격을 번호로 직접 잇기
공고 상세의 라이프사이클(발주계획→사전규격→공고→낙찰→계약)에서 사전규격 칸이 거의 비어 있었습니다. 사전규격 쪽 "공고번호 목록"에 그 공고가 적혀 있는지로 추측해 잇다 보니 187건만 이어졌습니다. 원인은 둘이었습니다. 사전규격을 용역 중 SW사업만 받고 있어 2,521건뿐이었고, 공고 쪽 사전규격 등록번호(어제 채운 것)는 물품 공고에만 있어서 한 건도 안 맞았습니다. 사전규격 수집을 물품·용역·공사·외자 전부로 넓히고(2,521건 → 61,180건), 공고의 등록번호로 사전규격을 직접 찾도록 바꿨습니다. 등록번호가 없는 공고만 예전 방식으로 찾습니다.
사전규격이 이어진 공고
전
후
등록번호로 직접
0건
30,098건
어느 방식으로든
187건
65,600건
지금 진행 중인 공고 중 1,656건에 사전규격이 붙습니다. 발주계획은 공고 쪽에 연결 번호 컬럼이 아직 없어 다음에 합니다.
2026.10.16
참가자격 등록 마감이 지난 공고 제외
입찰에는 마감일보다 먼저 닫히는 문이 하나 더 있습니다. 입찰참가자격 등록 마감입니다. 이 시각이 지나면 아무리 맞는 공고여도 낼 수 없는데, 진행 중인 공고 9,588건 중 426건(4%)이 이 마감을 넘긴 채 추천에 올라오고 있었습니다. 후보를 고르는 단계에서 이런 공고를 아예 빼도록 했고, 공고 상세에도 "참가자격 등록 마감" 시각을 표시합니다. 저장돼 있던 마감 시각이 9시간 밀려 있던 것(한국 시각을 UTC로 적음)도 58,867건 바로잡았습니다.
추천 30건 안 (7/1, 회사 1,582곳)
전
후
전체
41.4%
41.6%
거래 이력 없는 신규 회사
28.8%
29.3%
1~5건
43.2%
43.4%
6건 이상
51.2%
51.3%
낙찰 공고는 당연히 등록 마감 전에 낸 것이라 놓치는 쪽은 없고, 빠진 자리를 다른 공고가 채워 세 회사군 모두 조금씩 올랐습니다. 8/1·9/1(회사 300곳)도 같거나 올랐습니다.
2026.10.16
공고와 발주계획을 번호로 직접 잇기
사전규격에 이어 발주계획도 같은 구조로 바꿨습니다. 공고 상세 API 응답에 발주계획 통합번호가 있는데 저장 컬럼이 없어 원본 JSON에만 묻혀 있었습니다. 컬럼을 만들고 원본에서 152,004건을 옮긴 뒤, 상세 수집이 앞으로 같이 채우게 했습니다. 공고 페이지는 이 번호로 발주계획을 바로 찾고, 번호가 없을 때만 예전처럼 추측합니다.
발주계획이 이어진 공고
전
후
전체
4건
121건
진행 중인 공고
—
96건
숫자가 작은 이유는 공고 쪽이 아니라 발주계획 쪽입니다. 공고가 가리키는 발주계획 번호는 122,315개인데 발주계획 테이블에는 419건뿐입니다(용역 하나만, 그것도 수동으로 두 번 받은 게 전부라 20건이던 것을 오늘 10개월치로 다시 받아 419건). 나라장터 발주계획 API 자체가 구분당 2026년 400건 안팎만 돌려줘 물품·공사·외자까지 넓혀도 1,100건 정도입니다. 연결 구조는 준비됐고, 발주계획 수집을 네 구분으로 넓혀 매일 돌리는 것이 다음입니다.
2026.10.16
상세 필드를 물품만이 아니라 용역·공사·외자에도
사전규격 번호·참가자격 등록 마감·공동수급 방식·발주계획 번호는 공고 상세 API에만 오는데, 매시간 수집은 물품 공고만 상세를 받고 있었습니다. 그래서 "자격등록 마감 지난 공고 제외"와 사전규격·발주계획 연결이 물품에만 작동했습니다. 5월부터의 용역·공사·외자(발주계획 번호를 위해 물품도) 공고 23만 건을 상세 API로 다시 받아 채웠고, 매시간 수집도 네 구분 전부 받도록 바꿨습니다.
5~10월 공고, 채워진 비율
자격등록 마감
사전규격 번호
발주계획 번호
용역 (78,248건)
0% → 85~89%
0% → 55~67%
74~80%
공사 (60,837건)
0% → 97~99%
0% → 2~5%
66~68%
외자 (862건)
0% → 72~88%
0% → 85~93%
90~99%
물품 (64,181건)
91~94% (그대로)
54~64% (그대로)
69~78%
이제 실제로 제외되는 양입니다. 진행 중인 공고 10,274건 중 참가자격 등록 마감이 지난 것이 공사 518건, 물품 473건, 용역 412건, 외자 0건 — 합쳐 1,403건(13.7%)입니다. 어제까지는 물품 448건만 걸러지고 있었습니다. 사전규격이 직접 이어진 진행 중 공고도 1,656건(물품만) → 4,255건(용역 2,324·물품 1,824·공사 65·외자 42)이 됐습니다. 공사는 사전규격 자체가 드뭅니다.
2026.10.16
지역 제한을 시·군·구까지 비교
지역 제한이 있는 진행 중 공고 5,021건 중 "경기도"처럼 시·도만 적은 것은 58%뿐이고, "경상남도 창원시"처럼 시·군을 적은 것이 36%, "부산광역시 중구"처럼 자치구를 적은 것이 7%였습니다. 그런데 자격 판정은 회사 주소의 첫 단어(시·도)만 떼어 비교하고 있어서, 창원시만 허용하는 공고에 김해 회사가 "지역 자격 충족"으로 통과됐습니다. 반대로 주소에 개편 전 이름(전라남도·광주광역시·전라북도·강원도)이 남은 회사는 새 이름으로 적힌 제한과 한 글자도 맞지 않아 지역 제한 공고를 전부 떨어뜨리고 있었습니다.
이제 제한이 적은 단위까지만 비교합니다. "경상남도"면 시·도, "경상남도 창원시"면 시·군, "부산광역시 중구"면 자치구까지. 비교 전에 옛 시·도 이름은 현재 이름으로 바꿉니다.
회사 소재지 (예)
지역 제한 행 6,837개 중 통과
경상남도 김해시
438 → 222
창원시·진주시 등 다른 시 제한을 더는 통과하지 않음
부산광역시 동구
230 → 170
다른 구 제한 제외
경기도 성남시 분당구
737 → 379
경기도 안 다른 시 제한 제외
전라남도 목포시 (옛 이름)
0 → 168
이름 불일치로 전부 떨어지던 것이 정상으로
한종산업개발(창원)은 자격 통과 383건 → 376건으로 7건 줄었습니다. 창원시 제한 공고가 많은 지역이라 영향이 작았고, 다른 시·군 회사는 위 표처럼 절반 가까이 줄어듭니다. 줄어든 것은 원래 낼 수 없던 공고입니다.
2026.10.15
공고 조건 추출 모델 교체
첨부문서(공고문·과업지시서·규격서)에서 참가 조건·낙찰 방식·일정을 뽑는 모델을 바꿨습니다. 40건을 원문과 대조했을 때 필수 조건 누락이 116건에서 32건으로, 숫자 오류가 18건에서 6건으로 줄었습니다. 물품 규격서(xlsx)도 읽기 시작했습니다.
2026.10.15
임베딩 모델 교체 (KURE-v1)
공고와 회사를 숫자 벡터로 바꾸는 모델을 한국어에 맞춘 모델(KURE-v1)로 바꿨습니다. 후보에 올라오는 낙찰 공고가 55%에서 63%로 늘었고, 최종 추천도 세 시점 모두 올랐습니다.
추천 30건 안
7/1
8/1
9/1
전
34.3%
45.1%
39.2%
후
35.9%
48.8%
46.7%
공고 26.6만 건과 회사 5.9만 곳을 다시 계산했고, 검색 응답 시간은 오히려 빨라졌습니다(회사 모드 1.7초, 키워드 모드 0.5초).
2026.10.15
점수표를 새 임베딩에 맞춤
임베딩 모델을 바꾸니 유사도가 더 촘촘하게 나왔습니다. 상위 30건이 겨루는 유사도 폭이 전보다 3분의 2로 줄었는데 "같은 지역", "거래했던 기관" 같은 보너스 점수는 그대로라, 보너스가 내용 유사도를 전보다 세게 눌렀습니다. 보너스 전체를 0.3배로 줄였습니다. 항목 간 비율은 그대로입니다.
추천 순서 품질(MRR)
7/1
8/1
9/1
전
0.161
0.188
0.241
후
0.172
0.202
0.250
세 시점 모두 올랐습니다. 30건 안에 들어오는 비율은 거의 그대로이고, 들어온 공고가 몇 번째에 놓이느냐가 좋아졌습니다.
해 보고 뺀 것 — 새 임베딩에 맞춰 점수표 전체를 처음부터 다시 적합하는 안도 돌렸습니다. 맞춘 날짜에서는 5건 안 비율이 43%에서 49%로 올랐지만 다른 날짜에서는 56%에서 52%로 떨어졌고 신규 회사도 나빠졌습니다. 한 시점에만 맞춘 표였던 것이라 폐기하고, 항목 비율은 그대로 둔 채 배율만 0.3 으로 줄이는 쪽을 택했습니다.
2026.10.15
물품 통로 추가
물품 공고는 글만으로는 잘 안 잡혔습니다. 후보에 올라오는 비율이 46%로 공사의 70%보다 한참 낮았습니다. 그래서 공고의 물품분류번호와 회사의 공급물품 코드를 직접 맞추는 통로를 하나 더 열었습니다. 업종 통로와 같은 방식입니다. 나라장터 표준 API에는 분류번호가 없어서 물품 공고만 상세 API로 한 번 더 받아옵니다.
물품 공고, 추천 30건 안
7/1
8/1
9/1
전
26%
33%
35%
후
28%
40%
38%
물품 공고가 후보에 올라오는 비율은 8/1 기준 46%에서 68%로 올랐습니다. 다른 분야는 거의 그대로이고 공사만 1%p 내려갔습니다. 회사에 공급물품이 등록돼 있어야 작동하는 통로라, 회사 정보 보강이 진행될수록 효과가 커집니다.
해 보고 뺀 것 — 물품 통로를 업종 통로와 한 자리에 겹쳐 합치는 방식도 시험했는데 전부 나빠져 기각했습니다. 세 통로를 번갈아 합치는 지금 방식이 남았습니다.
2026.10.14
업종 통로 추가
놓친 낙찰 공고의 56%는 "글은 안 비슷해도 공고가 요구하는 업종에 그 회사가 등록돼 있는" 공고였습니다. 그래서 후보를 두 통로에서 가져오게 했습니다. 뜻이 비슷한 공고, 그리고 회사 업종을 허용하는 공고 중 비슷한 것.
8/1 기준, 30건 안
전
후
전체
40%
44%
신규 회사
25%
35%
2026.10.14
점수표 재보정
점수 항목 하나하나가 실제 낙찰을 얼마나 예측하는지 재봤더니, 보너스(거래 기관·예산대·검토 여유 등)가 유사도를 압도하고 있었습니다. 예측력 없는 항목 두 개를 빼고 나머지를 줄였습니다.
추천 5건 안
7/1
8/1
9/1
전
15.9%
26.1%
21.3%
후
17.2%
27.9%
24.0%
세 시점 모두 올랐습니다. 특히 거래 이력이 적은 회사가 가장 많이 좋아졌습니다.
해 보고 뺀 것 — "신규 진입이 열린 기관" +15 와 "검토 여유 6~14일" +10 은 그럴듯했지만 실제 낙찰과 무관해서 뺐습니다(그 배지가 사라진 이유). 공고 허용업종에 회사 등록업종이 들어 있으면 가산하는 항목도 시험했는데, 이미 업종·물품 표현 겹침 신호와 겹쳐 효과가 0 이라 넣지 않았습니다.
2026.09.21
측정 전
벡터 없는 회사는 등록업종으로 즉석 추천
수주 이력도 벡터도 없지만 나라장터에 등록업종은 있는 회사에는 그 업종 설명을 그 자리에서 벡터로 만들어 추천합니다. 빈 화면 대신 결과가 나가고, 정식 벡터는 다음 재계산 때 만들어집니다.
2026.09.18
측정 전
회사를 못 찾거나 벡터가 없던 경우
실제 검색 기록을 보니 "회사를 찾을 수 없습니다"가 46건, 회사는 찾았는데 벡터가 없어 추천이 안 되던 경우가 27건이었습니다. 이름 매칭을 넓히고, 못 찾으면 키워드 모드로 자동 전환하며, 검색된 미등록 회사는 다음 시간 수집에서 자동 등록하도록 했습니다. 벡터 없던 27곳 중 16곳은 중복 행 문제라 바로 풀렸습니다.
2026.08.28
측정 전
2037년 마감 단가계약이 1위를 먹던 것
마감이 몇 년 뒤인 장기 단가계약 공고가 "오래 열려 있다"는 이유로 상위를 차지했습니다. 추천은 마감 90일 이내 공고만 보도록 지평선을 뒀습니다.
2026.08.17
측정 전
같은 공고가 여러 번 뜨던 것
정정·재공고로 번호만 바뀐 공고가 추천 안에 두세 번 나오던 것을 제목·기관·마감·추정가가 같으면 하나로 합치도록 했습니다.
2026.07.26
측정 전
참가 자격을 먼저 거르고, 점수표와 다양성
뜻이 비슷해도 낼 수 없는 공고가 섞여 있었습니다. 공고의 면허(허용업종)·지역 제한을 회사 정보와 대조해 통과하지 못하면 아예 빼도록 바꿨습니다. 남은 공고는 유사도에 거래 이력이 있는 기관·지역·예산대·마감 같은 신호를 더한 점수표로 줄 세우고, 비슷한 공고끼리 상위를 독점하지 않게 다양성을 섞었습니다. 같은 날 입찰 참가 기록(낙찰자 외 참가업체)을 수집해 회사 벡터의 보조 신호로 넣기 시작했습니다.
2026.06.14
측정 전
사전규격·발주계획까지
공고만 보여주던 것을 사전규격(공고 전 의견 수렴 단계)과 발주계획(연간 계획)까지 넓혔습니다. 공고가 뜨기 전에 알아야 준비 시간이 생기기 때문입니다. 회사 모드에 키워드를 덧붙이면 회사 벡터 0.6 · 키워드 0.4 로 섞어 특정 영역으로 좁힐 수 있게 했습니다.
2026.05.25
측정 전
등록업종을 메인으로
수주 이력만으로 회사를 표현하면 이력이 적은 회사가 거의 비슷한 추천을 받았습니다. 회사 벡터를 등록업종·공급물품 설명을 메인으로, 수주 이력을 보조로 섞는 방식으로 바꿨습니다. 섞는 비율은 이력 건수에 따라 다릅니다 — 수주 0건이면 업종 설명만, 1~5건이면 업종 0.65 · 이력 0.30, 6건 이상이면 업종 0.50 · 이력 0.45.
2026.05.24
측정 전
첫 추천 — 회사와 공고를 같은 자리에 놓고 비교
회사의 등록업종·공급물품 설명과 과거 수주 이력을 하나의 벡터로 만들고, 공고 글도 같은 방식의 벡터로 만들어 뜻이 가까운 순서로 보여주기 시작했습니다. 수주 이력이 없어 회사 벡터를 못 만드는 회사는 업종·품목을 글로 적어 찾는 키워드 모드로 안내했습니다. 이때는 아직 자격을 거르지 않았고 정확도를 재는 방법도 없었습니다.
내부 작업 4건은 화면에서 숨겼습니다(원문에는 있습니다). 채점표가 생긴 2026-10-13 이전 항목은 전후 수치가 없어 "측정 전"으로 표시합니다.