Case Study · 운영 예산 관리
심의를 거쳐 배정된 프로모션 예산이 있었지만, 지금까지 얼마를 썼는지 확인할 수단이 없었습니다. 집행 내역을 처음으로 재구성하고, 매일 잔액이 보이는 관제 화면으로 만든 기록입니다.
상황
담당 조직에 신규 배차 서비스 도입을 위한 프로모션 예산이 배정돼 있습니다. 배송 건당 금액을 얹어주는 방식이고, 현장 상황에 맞게 켜고 끄고 단가를 조정하며 씁니다.
집행은 각 권역에서 바로 할 수 있습니다. 문제는 그 반대쪽이었습니다 — 오늘까지 얼마가 나갔는지, 배정액 중 얼마가 남았는지를 확인할 방법이 없었습니다. 사후에도 마찬가지였고요.
원인
집행 기록 자체는 시스템에 남아 있었습니다. 그런데 세 가지가 겹쳐서 합계를 낼 수 없는 상태였습니다.
같은 프로그램인데 한 권역은 이름에 식별자가 들어 있고, 다른 권역은 지점명만 붙어 있었습니다. 후자는 어떤 키워드로도 걸러지지 않습니다.
이름은 그대로인 채 건당 금액만 조정됐습니다. 이름만 봐서는 얼마짜리인지 알 수 없고, 변경 이력도 남지 않았습니다.
이 프로모션 외에 날씨·지역·거래처 명목의 지급이 동시에 얹힙니다. 건별 합계로는 프로그램이 분리되지 않습니다.
그래서 가장 흔한 계산법이 가장 크게 틀렸습니다. “건수 × 단가”로 추정하면 단가가 바뀐 구간 때문에 한 권역은 28% 적게, 다른 권역은 16% 많게 나옵니다. 저도 처음에 이 방식으로 계산했다가 두 번 정정했습니다.
한 일
합계를 낼 수 없으면 분모부터 다시 만들어야 합니다. 각 주문에 어떤 항목이 얼마씩 붙었는지 기록한 건별 명세를 항목 단위로 분해해, 날짜 × 항목 × 단가로 재구성했습니다.
권한은 조회뿐이었고 개발 지원도 없었습니다. 원시 데이터는 한 번에 2,000건까지만 받아올 수 있어서, 기간을 잘게 쪼개 누적하는 방식으로 두 권역 두 달 남짓을 모았습니다.
결과
초기 단가를 그대로 유지했다면 두 권역에서 약 286만원이 더 나갔을 것으로 계산됩니다(인하 후 집행 건수 5,716건 × 차액 500원). 현장의 조정 판단은 옳았지만, 그 판단이 얼마를 아꼈는지 아무도 셀 수 없었습니다.
산출물
한 번 재구성하고 끝내면 다음 달에 같은 일을 반복해야 합니다. 그래서 매일 갱신되는 집행 관제 화면으로 만들었고, 기존 일간 지표 점검 루틴에 얹어서 아침에 같이 갱신되게 했습니다.
| 화면에 올린 것 | 해결한 문제 |
|---|---|
| 배정액 대비 소진율 · 잔액 | 얼마 남았는지 알 수 없던 상태 |
| 일자별 집행액과 그날의 실제 단가 | 단가 변경 이력이 남지 않던 문제 |
| 항목별 · 단가 구간별 내역 | 여러 지급이 겹쳐 프로그램별 분리가 안 되던 문제 |
| 시간대별 집행액과 그 구간의 성과 | 돈을 쓴 구간과 효과를 나란히 볼 수 없던 문제 |
| 최근 페이스 기준 잔여 기간 | 한도에 가까워지는 것을 미리 알 수 없던 문제 |
실제로 매일 운영 중인 화면의 비식별 버전입니다. 권역·거점·항목명만 가렸고 금액·건수·시간·성과 지표는 실제 값입니다.
데모라 입력값은 저장되지 않습니다. 실제 화면에서는 배정액·단가 설정이 저장되고 매일 자동 갱신됩니다.
전망 계산에서 한 번 방향을 틀었습니다. 처음에는 전체 기간 일평균으로 추정했는데, 그러면 이미 집행을 멈춘 권역이 “이 페이스면 초과”로 경고됐습니다. 최근 7일 페이스 기준으로 바꿔서, 멈춘 프로그램을 미래로 연장하지 않도록 했습니다.
재발 방지
데이터를 다시 파는 것으로는 다음 권역에서 같은 일이 반복됩니다. 그래서 두 가지를 같이 제안했습니다.
화면은 매일 갱신되고 있고, 남은 예산과 최근 집행 페이스를 근거로 잔여 기간을 추정할 수 있게 됐습니다. “관리하고 있다”를 숫자로 설명할 수 있는 상태가 됐다는 것이 이 작업의 결과입니다.
다만 제안한 두 가지 규칙은 아직 표준으로 채택되지 않았습니다. 채택 전까지는 권역을 추가할 때마다 항목 이름을 수동으로 확인해야 하고, 그만큼 누락 위험이 남아 있습니다. 완결된 것처럼 쓰지 않는 편이 이 기록에 맞다고 봤습니다.
집행 기록은 처음부터 있었습니다. 없던 것은 그것을 합계로 만드는 방법이었고, 그게 없다는 사실 자체를 아무도 모르고 있었습니다. 숫자가 틀렸던 게 아니라 숫자를 낼 수 없는 구조였다는 것 — 그 구분을 찾아낸 것이 이 작업의 핵심입니다.