← 돌아가기

Case Study · 운영 예산 관리

보이지 않던 예산

심의를 거쳐 배정된 프로모션 예산이 있었지만, 지금까지 얼마를 썼는지 확인할 수단이 없었습니다. 집행 내역을 처음으로 재구성하고, 매일 잔액이 보이는 관제 화면으로 만든 기록입니다.

역할 단독 기획·구축 대상 배송 권역 2곳의 신규 서비스 도입 프로모션 제약 조회 권한만 · 개발 리소스 없음

상황

쓰는 건 되는데, 얼마나 썼는지는 안 됐습니다

담당 조직에 신규 배차 서비스 도입을 위한 프로모션 예산이 배정돼 있습니다. 배송 건당 금액을 얹어주는 방식이고, 현장 상황에 맞게 켜고 끄고 단가를 조정하며 씁니다.

집행은 각 권역에서 바로 할 수 있습니다. 문제는 그 반대쪽이었습니다 — 오늘까지 얼마가 나갔는지, 배정액 중 얼마가 남았는지를 확인할 방법이 없었습니다. 사후에도 마찬가지였고요.

쓸 수는 있는데 남은 걸 볼 수 없으면, 관리하고 있다고 말할 수 없습니다.

원인

데이터는 있었는데, 셀 수가 없었습니다

집행 기록 자체는 시스템에 남아 있었습니다. 그런데 세 가지가 겹쳐서 합계를 낼 수 없는 상태였습니다.

01

권역마다 이름 규칙이 달랐습니다

같은 프로그램인데 한 권역은 이름에 식별자가 들어 있고, 다른 권역은 지점명만 붙어 있었습니다. 후자는 어떤 키워드로도 걸러지지 않습니다.

02

같은 이름으로 단가가 바뀌었습니다

이름은 그대로인 채 건당 금액만 조정됐습니다. 이름만 봐서는 얼마짜리인지 알 수 없고, 변경 이력도 남지 않았습니다.

03

한 건에 여러 항목이 겹쳐 붙습니다

이 프로모션 외에 날씨·지역·거래처 명목의 지급이 동시에 얹힙니다. 건별 합계로는 프로그램이 분리되지 않습니다.

그래서 가장 흔한 계산법이 가장 크게 틀렸습니다. “건수 × 단가”로 추정하면 단가가 바뀐 구간 때문에 한 권역은 28% 적게, 다른 권역은 16% 많게 나옵니다. 저도 처음에 이 방식으로 계산했다가 두 번 정정했습니다.

한 일

건별 명세를 뜯어 다시 셌습니다

합계를 낼 수 없으면 분모부터 다시 만들어야 합니다. 각 주문에 어떤 항목이 얼마씩 붙었는지 기록한 건별 명세를 항목 단위로 분해해, 날짜 × 항목 × 단가로 재구성했습니다.

권한은 조회뿐이었고 개발 지원도 없었습니다. 원시 데이터는 한 번에 2,000건까지만 받아올 수 있어서, 기간을 잘게 쪼개 누적하는 방식으로 두 권역 두 달 남짓을 모았습니다.

결과

처음으로 집행 전체가 보였습니다

재구성한 집행액858만원두 권역 · 그전까지 합계 불가
기존 추정법 오차최대 28%건수 × 단가로 계산할 경우
전체 지급 중 비중24.5%나머지는 다른 명목 — 함께 가시화
현재 집행률71.5%잔액 매일 추적 중
두 권역 모두 도입 직후 단가를 절반으로 내렸습니다
서비스 도입 후 경과일별 집행액 · 점선 = 건당 단가를 1,000원에서 500원으로 내린 시점
0만10만20만30만40만50만A 단가 인하B 단가 인하A 권역B 권역135791113151719서비스 도입 후 경과일
A 권역은 도입 7일 만에, B 권역은 12일 만에 단가를 절반으로 내렸습니다. 집행액이 계단처럼 꺾이는 지점이 그 시점입니다. 같은 판단이 두 번 반복됐는데, 그 이력은 어디에도 기록돼 있지 않았습니다 — 항목 이름이 그대로였기 때문입니다.

초기 단가를 그대로 유지했다면 두 권역에서 약 286만원이 더 나갔을 것으로 계산됩니다(인하 후 집행 건수 5,716건 × 차액 500원). 현장의 조정 판단은 옳았지만, 그 판단이 얼마를 아꼈는지 아무도 셀 수 없었습니다.

산출물

매일 잔액이 보이는 화면으로 만들었습니다

한 번 재구성하고 끝내면 다음 달에 같은 일을 반복해야 합니다. 그래서 매일 갱신되는 집행 관제 화면으로 만들었고, 기존 일간 지표 점검 루틴에 얹어서 아침에 같이 갱신되게 했습니다.

화면에 올린 것해결한 문제
배정액 대비 소진율 · 잔액얼마 남았는지 알 수 없던 상태
일자별 집행액과 그날의 실제 단가단가 변경 이력이 남지 않던 문제
항목별 · 단가 구간별 내역여러 지급이 겹쳐 프로그램별 분리가 안 되던 문제
시간대별 집행액과 그 구간의 성과돈을 쓴 구간과 효과를 나란히 볼 수 없던 문제
최근 페이스 기준 잔여 기간한도에 가까워지는 것을 미리 알 수 없던 문제

직접 눌러볼 수 있는 데모

실제로 매일 운영 중인 화면의 비식별 버전입니다. 권역·거점·항목명만 가렸고 금액·건수·시간·성과 지표는 실제 값입니다.

  • 월 행을 클릭하면 그 달의 항목별 · 단가 구간별 내역이 펼쳐집니다 — 단가가 바뀐 지점이 여기서 보입니다
  • 일자 행을 클릭하면 그날 어떤 항목이 건당 얼마씩 나갔는지 보입니다
  • 권역을 A → B로 바꾸면 적용 방식의 차이가 드러납니다 — A는 시간대 제한 없이, B는 하루 8시간만
데모 열기 →

데모라 입력값은 저장되지 않습니다. 실제 화면에서는 배정액·단가 설정이 저장되고 매일 자동 갱신됩니다.

전망 계산에서 한 번 방향을 틀었습니다. 처음에는 전체 기간 일평균으로 추정했는데, 그러면 이미 집행을 멈춘 권역이 “이 페이스면 초과”로 경고됐습니다. 최근 7일 페이스 기준으로 바꿔서, 멈춘 프로그램을 미래로 연장하지 않도록 했습니다.

재발 방지

화면보다 중요한 건 규칙이었습니다

데이터를 다시 파는 것으로는 다음 권역에서 같은 일이 반복됩니다. 그래서 두 가지를 같이 제안했습니다.

항목 이름에 프로그램 식별자를 넣어 통일신규 권역 자동 집계 지금은 권역을 추가할 때마다 이름을 일일이 확인해야 합니다. 규칙이 통일되면 새 권역이 열려도 별도 작업 없이 집계에 잡힙니다.
단가를 바꿀 때 기존 항목을 수정하지 말고 새로 분리변경 이력 보존 이름에 단가를 넣어 분리하면 변경 이력이 데이터에 남습니다. 이번에 겪은 “최대 28% 오차”가 구조적으로 사라집니다.

지금 상태

화면은 매일 갱신되고 있고, 남은 예산과 최근 집행 페이스를 근거로 잔여 기간을 추정할 수 있게 됐습니다. “관리하고 있다”를 숫자로 설명할 수 있는 상태가 됐다는 것이 이 작업의 결과입니다.

다만 제안한 두 가지 규칙은 아직 표준으로 채택되지 않았습니다. 채택 전까지는 권역을 추가할 때마다 항목 이름을 수동으로 확인해야 하고, 그만큼 누락 위험이 남아 있습니다. 완결된 것처럼 쓰지 않는 편이 이 기록에 맞다고 봤습니다.

이 작업에서 남긴 것

집행 기록은 처음부터 있었습니다. 없던 것은 그것을 합계로 만드는 방법이었고, 그게 없다는 사실 자체를 아무도 모르고 있었습니다. 숫자가 틀렸던 게 아니라 숫자를 낼 수 없는 구조였다는 것 — 그 구분을 찾아낸 것이 이 작업의 핵심입니다.