TL;DR — 혼자 AI로 증명사진 서비스를 굴립니다. 사진이 규격에 맞는지 보는 '검수'를 코드로 거의 다 자동화할 수 있었어요. 얼굴 크기가 몇 mm인지, 눈 높이가 맞는지, 입을 벌렸는지 같은 건 결국 숫자니까요. 그런데 저는 그 자동 검수에 최종 통과/반려 결정권을 주지 않았습니다. 자동화의 역할을 "사람을 대체한다"가 아니라 "사람의 일을 희석한다"로 못 박았어요. 왜 그 경계를 그었는지, 그리고 반려 사유가 쌓일수록 검수가 더 똑똑해지는 되먹임 고리에 대해 적어 둡니다.
저는 사진 일을 20년 했어요. 지금은 그 경력을 밑천 삼아, 혼자서 AI로 증명사진 서비스를 만들고 있습니다. 판단이 필요한 일은 AI 여러 대한테 나눠 시키고, 저는 그 위에서 규칙을 정하죠.
증명사진 서비스를 만들다 보면 반드시 부딪히는 벽이 하나 있어요. 검수입니다. 손님이 올린 사진이, 혹은 AI가 만들어 낸 결과물이 규격에 맞는지 누군가는 확인해야 합니다. 얼굴이 너무 크거나 작진 않은지, 눈 높이가 규격 안에 들어오는지, 입을 벌리거나 눈을 감진 않았는지.
그리고 이 검수는 자동화하기 딱 좋아 보이는 일이에요. 규격이 죄다 숫자거든요. 얼굴 길이 몇 mm, 눈높이 몇 %, 이건 코드가 재면 됩니다. 실제로 저는 이 대부분을 코드로 재게 만들었어요. 기계가 밀리미터를 재는 건 사람보다 빠르고, 지치지도 않고, 매번 같은 답을 냅니다.
그러니 자연스러운 다음 수순은 이거였죠. "그럼 통과/반려 판정도 코드한테 맡기면 되잖아?" 숫자가 규격 안이면 통과, 밖이면 반려. 사람이 낄 자리가 없어 보였습니다.
저는 그 선을 넘지 않기로 했어요. 그리고 그게 이 서비스에서 제가 내린 결정 중 가장 잘한 축에 든다고 생각합니다.
1. 자동으로 잴 수 있는 것과, 자동으로 판정해도 되는 것은 다르더라고요
먼저 헷갈리면 안 되는 두 가지를 나눴어요.
- 재는 것(측정) — "얼굴 길이가 33.0mm다." 이건 사실이에요. 코드가 재도 사람이 재도 답이 같아야 하고, 실제로 같습니다. 자동화의 영역이 맞아요.
- 판정하는 것(결정) — "그러니까 이 사진은 손님한테 돌려보낸다." 이건 사실이 아니라 결정이에요. 책임이 따라붙습니다.
문제는 이 둘이 붙어 있으면 티가 안 난다는 겁니다. "33.0mm → 규격 미달 → 반려"는 한 줄처럼 보이잖아요. 그런데 저 화살표 두 개는 성격이 완전히 달라요. 첫 번째 화살표(측정→판단 기준)는 기계의 일이고, 두 번째 화살표(판단→손님에게 미치는 결과)는 누군가 책임져야 하는 일입니다.
증명사진은 밀리미터의 세계라고 여러 번 적었는데요. 딱 그래서, 경계에 걸치는 사진이 늘 나옵니다. 32.9mm는 반려고 33.0mm는 통과일까요? 규격표는 그렇게 말하지만, 현장에서 20년 사진을 찍은 사람의 눈은 다르게 봅니다. 저 0.1mm 차이로 접수처에서 반려될 손님은 사실 거의 없어요. 그런데 자동 판정은 그 0.1mm에서 매몰차게 손님을 돌려보냅니다. 그것도 에러 하나 없이, 아주 자신 있게 말이죠.
멀쩡한 사진을 자신 있게 반려하는 시스템. 저는 이게 제일 무서웠어요.
2. 그래서 자동화를 '대체'가 아니라 '희석'으로 정의했어요
여기서 제가 뒤집은 건 자동 검수의 역할 정의였습니다.
처음엔 무의식적으로 이렇게 생각했어요. 자동 검수 = 사람 검수의 대체재. 자동화가 완벽해질수록 사람이 볼 일이 줄고, 언젠가 0이 되는 것. 이게 흔한 자동화의 그림이잖아요.
그런데 검수에서는 이 그림이 틀렸더라고요. 저는 정의를 이렇게 바꿨습니다.
자동 검수의 일은 사람을 대체하는 게 아니라, 사람이 볼 양을 희석하는 것이다.
무슨 말이냐면요. 코드가 "이건 누가 봐도 명백히 통과"인 사진과 "이건 누가 봐도 명백히 반려"인 사진을 걸러 줍니다. 이 둘은 사람이 굳이 안 봐도 돼요. 그렇게 양쪽 극단을 덜어내고 나면, 애매한 경계선 사진들만 사람 앞에 남습니다. 자동화가 100장을 10장으로 줄여 주는 거예요. 대체가 아니라 농축이죠.
그리고 그 남은 10장, 즉 경계선의 판정만큼은 저는 코드에 넘기지 않습니다. 왜냐하면 그 10장이야말로 20년 경력이 값을 하는 자리거든요. 규격표만으로는 안 되고, "이건 접수처에서 걸릴까 안 걸릴까"를 감으로 아는 사람이 봐야 하는 사진. 자동화는 그 사람이 딱 그 10장에만 집중하도록 앞을 치워 주는 도구입니다.
정의 하나 바꿨을 뿐인데, 자동화를 더 세게 밀어붙일수록 사람이 불필요해지는 게 아니라 사람이 더 귀한 곳에만 쓰이게 됐어요. 방향이 정반대가 된 거죠.
3. 판정에 자동을 안 쓰기로 하니, 기준이 더 정직해졌어요
재밌는 부작용이 하나 있었습니다.
"자동 판정으로 손님을 반려하지 않는다"고 정하고 나니, 자동 검수에 완벽함을 요구할 이유가 사라졌어요. 자동 검수는 이제 차단기가 아니라 감지기니까요. 틀려도 손님이 부당하게 반려당하지 않습니다. 기껏해야 "사람이 한 번 더 볼 목록"에 얹힐 뿐이죠.
이게 왜 좋냐면, 정직해질 수 있거든요. 예전 같으면 자동 판정이 손님의 당락을 쥐고 있으니, 애매한 값도 억지로 "통과 아니면 반려" 둘 중 하나로 우겨넣어야 했어요. 지금은 자동 검수가 "저는 잘 모르겠으니 사람이 봐 주세요"라고 말할 수 있습니다. 확신이 없을 때 확신하는 척을 안 해도 돼요.
전에 다른 글에서, 잴 수 없는 값을 억지로 지어내느니 정직하게 비워 두는 게 낫더라는 이야기를 적은 적이 있는데요. 이것도 같은 결입니다. 판정의 권한을 사람에게 남겨 두는 순간, 자동화는 비로소 정직해질 자유를 얻습니다. 모든 걸 책임지지 않아도 되니까요.
4. 그리고 이게 상품이 되더라고요
여기까지 오니 생각지도 못한 게 보였어요. 사람이 최종 책임지는 이 검수가, 사실은 팔 수 있는 가치라는 거요.
증명사진의 진짜 두려움은 "예쁘게 안 나오는 것"이 아니라 "접수처에서 반려당하는 것"입니다. 다시 찍고, 다시 내고, 일정이 밀리고. 손님이 정말로 사고 싶은 건 사진이 아니라 "이거 내면 통과돼요"라는 안심이에요.
그 안심은 코드가 못 팔아요. 코드는 "숫자가 규격 안입니다"까진 말할 수 있어도, "제가 20년 봐 왔는데 이건 됩니다"라고는 말 못 하잖아요. 결국 안심을 파는 건 사람입니다. 그러니 검수에 사람을 남겨 둔 건 자동화의 실패가 아니라, 가장 비싼 층위를 만드는 설계였던 거예요. 자동으로 다 걸러지는 층 위에, 사람이 눈으로 책임지는 층을 얹는 것.
5. 남은 되먹임 고리 — 반려 사유가 다음 검수를 키웁니다
마지막으로, 이 구조가 살아 움직이는 이유를 하나 적어 둘게요.
사람이 경계선 사진을 판정할 때마다 이유가 남습니다. "이건 머리가 살짝 잘려서 반려", "이건 규격은 아슬아슬한데 접수엔 무리 없어서 통과". 이 이유들이 쌓이면, 다음엔 그중 상당수를 코드가 미리 걸러 낼 수 있게 돼요. 자동 검수의 그물코가 사람의 판정을 먹고 촘촘해지는 거죠.
그러니까 사람 검수는 자동화가 언젠가 잡아먹을 대상이 아니라, 자동화를 키우는 사료입니다. 사람이 볼 양은 계속 줄지만 0이 되진 않아요. 자동화가 잡기 쉬운 것부터 배워 갈수록, 사람 앞엔 점점 더 어려운 것만 농축돼 남으니까요. 사람은 늘 자동화보다 한 발 앞의 어려움을 봅니다. 그 격차가 이 시스템이 계속 살아 있는 이유예요.
정리하면 이렇습니다. 저는 검수를 자동화할 수 있는 만큼 자동화했지만, 최종 결정권만은 사람에게 남겼어요. 자동화의 역할을 대체가 아니라 희석으로 정의했더니, 자동화를 밀어붙일수록 사람은 더 귀한 곳에만 쓰였고, 그 사람의 판정이 다시 자동화를 키웠습니다.
궁금한 게 있어요. 여러분의 일에도 "재는 것"과 "판정하는 것"이 붙어 있진 않나요? 그리고 그 판정의 권한을, 혹시 잴 줄 안다는 이유만으로 기계한테 통째로 넘겨 버리진 않았나요? 저는 그 둘을 떼어 놓고 나서야, 자동화를 제대로 쓰기 시작한 것 같아요.