내가 신뢰할 수 있는 첫 번째 OpenClaw 급여 워크플로우는 무서운 단계 직전에 멈추는 것이다
요약
ChatGPT와 같은 일반적인 LLM 인터페이스가 급여 처리와 같은 복잡한 파일 기반 워크플로우를 자동화하는 데 한계가 있음을 설명합니다. 신뢰할 수 있는 자동화를 위해서는 파일 접근 권한, 지속적인 상태 유지, 그리고 인간의 승인 단계가 포함된 에이전트 중심의 접근이 필요합니다.
핵심 포인트
- 단순 채팅 기반 AI는 파일 접근 및 지속적 상태 유지에 한계가 있음
- 급여 워크플로우는 파일 읽기, 변환, 검토, 승인 단계를 포함해야 함
- 신뢰성을 위해 자동화 프로세스 직전에 반드시 인간의 승인 게이트를 배치해야 함
- 단순 업로드 방식이 아닌 폴더 감시 및 파일 쓰기가 가능한 에이전트 형태가 필요함
나는 다양한 형태로 동일한 질문을 계속 접하고 있습니다:
ChatGPT에게 내 급여 프로세스를 가르치고 매 급여 주기마다 실행하게 할 수 있을까?
합리적인 질문입니다. 하지만 잘못된 시작점입니다.
만약 당신의 워크플로우가 "새로운 CSV를 읽고, 정규화(normalize)하고, 결과물을 생성하며, 돈에는 손대지 않는다"라면, 일반적인 ChatGPT는 여전히 이상할 정도로 불안정하게 느껴집니다.
내가 신뢰할 수 있는 첫 번째 OpenClaw 급여 워크플로우는 훨씬 더 단순합니다:
- 시간 기록(timekeeping) 내보내기 파일을 읽는다
- 이를 검증(validate)하고 변환(transform)한다
- 검토 파일(review file)을 작성한다
- 급여 제출(payroll submission) 직전에 멈춘다
마지막 부분이 핵심입니다.
문제는 모델의 품질이 아니다
이 글은 게으른 "ChatGPT는 나쁘고, 에이전트(agents)는 좋다" 식의 포스팅이 아닙니다.
ChatGPT Projects는 유용합니다.
ChatGPT Memory도 유용합니다.
반복적인 분석, 요약, 그리고 일회성 스프레드시트 정리 작업에 있어 ChatGPT는 여전히 확실한 옵션입니다.
하지만 급여 스타일의 자동화는 형태가 다릅니다.
다음과 같은 요소가 필요합니다:
- 파일 접근 권한 (file access)
- 반복 가능한 단계 (repeatable steps)
- 지속적인 상태 (persistent state)
- 채팅창 외부의 결과물 (outputs outside the chat window)
- 승인 게이트 (approval gates)
- 감사 추적 (an audit trail)
바로 이 지점에서 균열이 나타납니다.
OpenAI의 Scheduled Tasks 문서에는 이 사용 사례에서 가장 중요한 문장이 포함되어 있습니다:
"파일이 포함된 프로젝트에서 작업을 생성하는 경우, 해당 작업은 프로젝트 파일에 접근할 수 없습니다."
이 한 문장이 많은 반복적인 급여 및 보고 워크플로우의 꿈을 무너뜨립니다.
왜냐하면 실제 워크플로우는 다음과 같지 않기 때문입니다:
격주 금요일마다 급여 업무를 하라고 나에게 알려줘
그보다는 다음과 비슷합니다:
- 시간 기록 앱에서 새로운 CSV 또는 XLSX를 내보내기(export)한다
- 이를 읽는다
- 급여 필드(payroll fields)에 매핑(map)한다
- 이상한 행(rows)에 플래그를 표시한다
- 검토 결과물(review artifact)을 생성한다
- 사람의 승인(signoff)을 받는다
- 그제서야 급여 시스템에 업로드하거나 입력한다
예약된 알림은 워크플로우가 아닙니다.
파일을 건드릴 수 없는 반복 작업은 그저 근처를 맴돌 뿐입니다.
왜 파일 기반 워크플로우가 가장 먼저 무너지는가
ChatGPT의 파일 지원은 실제 기능이지만, 여전히 업로드 중심(upload-centric)입니다.
이것은 중요한 문제입니다.
다음 사이에는 큰 차이가 있습니다:
- "스프레드시트를 업로드해서 분석했다"
- "에이전트가 폴더를 감시하다가 이번 기간의 내보내기(export) 파일을 가져와서, 정규화된 출력값(normalized outputs)을 작성하고 예외 보고서(exception report)를 남겼다"
이것들은 서로 다른 제품의 형태(product shapes)입니다.
급여(payroll) 업무의 경우, 두 번째 방식이 유용한 방식입니다.
이 주제에 관한 r/openclaw 스레드에서 제가 본 가장 훌륭한 댓글은 기본적으로 다음과 같았습니다: "ChatGPT는 브라우저에서 텍스트를 생성하지만, OpenClaw는 워크플로우(workflow)의 일부로서 파일을 읽고 쓸 수 있다."
그것이 핵심입니다.
워크플로우가 로컬 파일(local files), 반복되는 단계, 그리고 채팅 탭 이외의 어딘가에 존재해야 하는 출력물을 포함하게 되면, 그 차이는 더 이상 철학적인 문제가 아닙니다.
그것은 운영(operational)의 문제가 됩니다.
내가 실제로 구축할 첫 번째 워크플로우
첫날부터 브라우저를 구동하는 Gusto를 만드는 것이 아닙니다.
ADP로 자율적인 제출을 하는 것도 아닙니다.
"GPT-5가 처리하게 두자"는 것도 아닙니다.
나는 엄격한 중단 지점(hard stop)이 있는 지루한 파이프라인(pipeline)을 구축할 것입니다.
1단계: 내보내기(export) 파일 가져오기
알려진 폴더와 예측 가능한 명명 패턴(naming pattern)을 사용하세요.
/payroll/inbox/timekeeping_2026-07-25.csv
복잡한 작업을 수행하기 전에 파일을 검증(validate)하세요.
내가 즉시 실패(fail fast)로 처리할 항목들:
- 필수 컬럼(column) 누락
- 빈 파일
- 중복된 헤더(header)
- 예상치 못한 구분자(delimiter) 또는 인코딩(encoding)
- 의심스러울 정도로 적은 행(row) 수
Node에서의 검증 예시:
import fs from 'node:fs';
import path from 'node:path';
import { parse } from 'csv-parse/sync';
...
2단계: 변환(Transform) 및 정규화(normalize)
이 단계는 LLM이 도움을 줄 수 있는 부분이지만, 반드시 가드레일(guardrails) 내부에서만 이루어져야 합니다.
정확해야 하는 항목에는 결정론적 규칙(deterministic rules)을 사용하세요:
- 직원 ID 형식(formatting)
- 급여 코드 매핑(pay code mapping)
- 날짜 정규화(date normalization)
- 반올림 규칙(rounding rules)
- 초과 근무 버킷(overtime buckets)
퍼지 클리닝(fuzzy cleanup)에는 LLM을 사용하세요:
- 일관성 없는 메모(notes)
- 내보내기 파일의 이상한 라벨(labels)
- 이상 징후 설명(anomaly explanations)
- 라벨을 알 수 없을 때의 매핑 제안(mapping suggestions)
이러한 분리가 중요합니다.
LLM에게 급여 스키마(payroll schema)를 즉석에서 만들어내라고 요구하지 마세요.
매핑 설정(mapping config) 예시:
{
"hour_code_map": {
"REG": "regular_hours",
...
결정론적 변환(deterministic transform) 예시:
function normalizeRow(row, config) {
return {
employee_id: String(row.employee_id).trim(),
...
결정론적 변환 (deterministic transform) 예시:
Step 3: 검토 패킷 (review packet) 생성
이 부분은 과소평가되어 있는 단계입니다.
워크플로우는 두 가지 결과물을 생성해야 합니다:
- 급여 지급 준비가 된 CSV 또는 XLSX
- 사람이 확인하기 위한 예외 보고서 (exception report)
예외 보고서는 다음과 같은 사항들을 지적해야 합니다:
- 누락된 직원 ID (missing employee IDs)
- 음수 시간 (negative hours)
- 중복된 행 (duplicate rows)
- 초과 근무 급증 (overtime spikes)
- 매핑되지 않은 코드 (unmapped codes)
- 이전 기간 대비 행 수 불일치 (row count mismatch vs prior periods)
예시 예외 객체 (exception object):
{
"severity": "high",
"employee_id": "E-1042",
...
만약 에이전트 (agent)가 무엇을 변경했는지, 혹은 무엇이 이상해 보이는지 설명할 수 없다면, 그것은 급여 업무에 투입될 준비가 되지 않은 것입니다.
Step 4: 중단 및 승인 요청
이 부분은 타협할 수 없는 핵심 사항입니다.
버전 1 (version 1)이 다음 시스템에 직접 제출되도록 방치하지 마십시오:
- Gusto
- ADP
- Paychex
- Rippling
- Workday
쓰기 (write) 단계를 게이트(gated)로 유지하십시오.
보수적으로 들릴 수 있지만, 실제로 보수적이어야 하기 때문입니다.
좋습니다.
돈과 관련된 에이전트의 실수는 감지하기 까다롭고, 되돌리기에는 매우 고통스럽습니다.
실용적인 폴더 기반 패턴
제가 실제로 사용할 구조는 다음과 같습니다:
/payroll
/inbox
/normalized
...
그리고 간단한 생명 주기 (lifecycle)입니다:
inbox -> normalized + exceptions -> approved -> archive
승인 프로세스는 파일 이동, 서명된 JSON 파일, 또는 Jira/Linear의 티켓 (ticket)으로 모델링할 수 있습니다.
단순하지만 명확한 패턴도 효과적입니다:
mv /payroll/inbox/timekeeping_2026-07-25.csv /payroll/archive/
cp /payroll/normalized/payroll_2026-07-25.csv /payroll/approved/
핵심은 우아함이 아닙니다.
추적 가능성 (traceability)입니다.
OpenClaw가 일반 ChatGPT보다 뛰어난 점
사람들은 에이전트와 ChatGPT를 비교할 때 지능 (intelligence)이 주된 차이점인 것처럼 말합니다.
비즈니스 자동화 (business automation) 측면에서 저는 그것이 거꾸로 된 생각이라고 봅니다.
주된 차이점은 지속성 (persistence)입니다.
훌륭한 OpenClaw 워크플로우는 다음을 기억할 수 있습니다:
- 내보내기 (export) 파일이 어디에 있는지
- 어떤 파일 패턴을 찾아야 하는지
- 열 (column)을 어떻게 매핑하는지
- 결과물을 어디에 저장하는지
- 무엇을 예외 (exception)로 간주할지
- 언제 승인을 위해 멈춰야 하는지
이는 반복적인 운영 (ops) 업무를 처리할 때 스마트한 채팅 (smart chat)보다 훨씬 유용합니다.
급여 (Payroll) 처리와 월간 보고 (monthly reporting)는 기본적으로 사촌 관계와 같습니다.
둘 다 화려하지는 않습니다.
둘 다 동일한 경로를 반복합니다.
둘 다 일관성이 없을 때 대가를 치르게 합니다.
일단 에이전트 (agent)가 해당 경로를 한 번 따라갈 수 있게 만들고 시간이 지나면서 이를 정교하게 다듬을 수 있다면, 방황하는 과정에 비용을 지불하는 일을 멈출 수 있습니다.
이는 비용 측면에서도 중요합니다.
개발자가 관심을 가져야 할 비용 관점
많은 팀이 더 나은 모델 (model)이 필요하다고 생각합니다.
하지만 대개 그들에게 필요한 것은 더 좁고 정교한 워크플로우 (workflow)입니다.
만약 모든 실행이 채팅창에서 처음부터 다시 시작된다면, 작업을 다시 설명하고, 컨텍스트 (context)를 다시 업로드하며, 동일한 추론 (reasoning)을 반복하느라 토큰 (tokens)을 낭비하게 됩니다.
워크플로우가 지속적이고, 파일 인지적 (file-aware)이며, 제약 조건이 걸려 있다면, 모델은 오직 가치를 더하는 지점에서만 등장하게 됩니다.
이것이 팀이 낭비를 줄이는 방식입니다.
그리고 수많은 반복 자동화 (automations)를 실행하고 있다면, 토큰당 과금 방식 (per-token pricing)은 금방 부담스러워집니다.
이것이 바로 에이전트 워크플로우에서 정액제 API 액세스 (flat-rate API access)가 흥미로운 이유입니다.
만약 당신이 다음과 같은 작업을 반복하는 시스템을 구축하고 있다면:
- 파일 읽기 (read files)
- 행 분류 (classify rows)
- 데이터 정규화 (normalize data)
- 예외 보고서 생성 (generate exception reports)
- 모델 간 라우팅 (route between models)
그렇다면 예측 가능한 비용이 벤치마크 (benchmark) 성능 자랑보다 더 중요합니다.
이것이 Standard Compute가 내세우는 핵심 가치입니다. 한 문장으로 요약하자면, OpenAI와 호환되는 API 형태로 제공되는, 월정액 기반의 무제한 AI 컴퓨팅 (AI compute)입니다.
따라서 이미 OpenAI SDK를 사용하는 코드가 있다면, 예측 가능한 과금을 위해 스택 (stack)을 새로 구축할 필요가 없습니다.
교체 예시:
import OpenAI from 'openai';
const client = new OpenAI({
...
이는 워크플로우 자체는 안정적이지만 모델 사용량이 일정한 OpenClaw, n8n, Make, Zapier 및 커스텀 에이전트 파이프라인 (agent pipelines)에 매우 중요합니다.
내가 추천하는 초보자용 아키텍처 (architecture)
만약 내가 내일 당장 이것을 구축한다면, 다음과 같은 패턴을 사용할 것입니다:
- 사람이 근태 관리 파일(timekeeping file)을 내보냅니다.
- OpenClaw가 감시 중인 폴더(watched folder)에서 파일을 읽습니다.
- 검증 단계(validation step)에서 열(column), 개수, 파일 형태(shape)를 확인합니다.
- 결정론적 변환(deterministic transform)이 엄격한 스키마(schema) 규칙을 처리합니다.
- LLM 단계가 퍼지 매핑(fuzzy mapping)과 이상 탐지(anomaly detection)를 처리합니다.
- 워크플로우가 급여 지급 준비가 된 CSV/XLSX 파일을 작성합니다.
- 워크플로우가 예외 요약(exception summary)을 작성합니다.
- 사람이 결과물을 승인합니다.
- 오직 그 후에야 누군가가 이를 급여 시스템에 업로드하거나 입력합니다.
이것은 대부분의 팀이 실제로 원하는 지루하지만 강력한 초능력을 제공합니다:
- 복사/붙여넣기 감소
- 반복 작업 감소
- 금요일의 실수 감소
- 더 깔끔한 감사 추적(audit trail)
그리고 가장 위험도가 높은 동작을 인간의 손에 남겨둡니다.
그것은 결함이 아닙니다.
그것이 바로 설계(design)입니다.
빠른 비교
| 옵션 | 실제로 잘하는 것 |
|---|---|
| ChatGPT Projects + Tasks | 반복적인 리마인더, 요약, 가벼운 분석, 임시 파일 작업 |
| ... |
만약 한 달에 한 번 스프레드시트를 분석하는 것이라면, ChatGPT로도 충분합니다.
파일을 다루고, 단계를 반복하며, 결과물(artifacts)을 남기고, 승인을 위해 일시 정지하는 워크플로우가 필요하다면, OpenClaw가 더 적합한 형태입니다.
진짜 교훈
처음으로 유용한 급여 자동화는 보통 모든 것을 수행하는 것이 아닙니다.
짜증 나는 중간의 80%를 일관되게 수행하고, 언제 멈춰야 할지를 아는 것입니다.
그것이 제가 자율적인 급여 제출(autonomous payroll submission)부터 시작하지 않는 이유입니다.
저는 인계(handoff)부터 시작할 것입니다:
- 내보낸 파일 읽기
- 변환하기
- 검토 파일 작성하기
- 이상한 행(row) 표시하기
- 일시 정지하기
덜 화려하지만, 더 신뢰할 수 있습니다.
그리고 실제 돈이 걸려 있을 때는, 신뢰할 수 있는 것이 언제나 화려한 것을 이깁니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기