[연재] 카드 혜택 (1) 1,180장을 어떻게 모았나
"스타벅스 할인되는 카드"를 검색했는데 하나도 안 나왔습니다
카드 혜택 정리 도구를 만들다가 있었던 일입니다.
카드를 잔뜩 모아놓고, 검색창에 스타벅스라고 쳐봤어요. 스타벅스 할인되는 카드가 몇 장은 나와야 정상이잖아요.
하나도 안 나왔습니다.
이상해서 데이터를 뒤져봤더니, 스타벅스 혜택이 있는 카드가 분명히 있었어요. 그런데 그 혜택이 어디에 들어 있었냐면요.
- 어떤 카드사는 "카페" 라고 적어놨고
- 어떤 카드사는 "카페/디저트" 라고 적어놨고
- 어떤 카드사는 그냥 "푸드" 라고 적어놨습니다
같은 스타벅스 할인인데 카드사마다 부르는 이름이 달랐던 거예요. 이러면 어느 이름으로 검색해도 나머지는 다 놓칩니다.
오늘부터 세 편에 걸쳐 카드 혜택 도구 이야기를 해보려고 합니다. 오늘은 첫 편, 카드 1,180장을 어떻게 모았나입니다.

왜 카드를 모으기로 했나
시작은 아주 사소한 짜증이었어요.
지갑에 카드가 몇 장 있잖아요. 그런데 편의점에서 어느 카드를 내야 제일 이득인지를 매번 모르겠는 겁니다. 분명 어떤 카드에 편의점 할인이 있었던 것 같은데, 그게 어느 카드였는지, 한 달에 얼마까지 할인되는지가 기억이 안 나요.
카드사 앱을 열어보면 내 카드 혜택은 나옵니다. 그런데 카드사가 다르면 앱도 달라요. 세 장 비교하려면 앱 세 개를 켜야 합니다. 그리고 각 앱은 자기 카드 얘기만 하죠.
그래서 이런 걸 만들기로 했습니다. 내가 가진 카드를 등록해두면, 카페·주유·마트 같은 상황별로 어느 카드가 제일 유리한지 순위를 보여주는 것.
그런데 이걸 만들려면 먼저 카드 데이터가 있어야 하잖아요. 그게 오늘 이야기입니다.
카드 목록을 주는 곳이 없었습니다
제일 먼저 부딪힌 게 이거였어요. "전체 카드 목록"을 주는 데가 없습니다.
카드 정보를 모아놓은 사이트는 있어요. 거기서 카드 한 장의 정보는 주소만 알면 가져올 수 있습니다. 카드마다 번호가 붙어 있어서, 그 번호로 부르면 그 카드 정보가 오는 식이에요.
문제는 "카드가 총 몇 장이고 번호가 몇 번부터 몇 번까지인지"를 알려주는 곳이 없다는 것입니다. 목록이 없으니 뭘 가져와야 할지를 모르는 거죠.
그래서 이렇게 했습니다.
1번부터 3200번까지 전부 두드려봤습니다.

무식해 보이는데, 실제로 이게 제일 확실했어요. 있는 번호면 카드 정보가 오고, 없는 번호면 없다는 답이 옵니다. 3,200번을 한 번씩 두드리면 존재하는 카드가 전부 걸려요.
한 번에 한 개씩 두드리면 오래 걸리니까 동시에 24개씩 두드리게 해뒀습니다. 그래도 몇 분은 걸려요. 어차피 자주 돌릴 일은 아니라 이 정도면 충분했습니다.
그렇게 해서 나온 게 1,180장, 카드사 50곳입니다.

신한카드가 182장으로 제일 많고, KB국민카드 173장, NH농협카드 120장, 삼성카드 101장, 현대카드 100장 순입니다. 아래로는 한 장짜리 카드사도 여럿 있어요. 카드사가 50곳이나 되는 줄은 저도 모으고 나서 알았습니다.
카드 이미지를 받아오지 않은 이유
카드는 그림이 중요하잖아요. 이름만 줄줄이 있으면 내 지갑에 있는 그 카드인지 알아보기가 어려워요. 그래서 카드 이미지를 화면에 띄우기로 했습니다.
여기서 선택지가 두 개였어요.
1. 이미지를 전부 내 쪽으로 내려받아서 사이트에 같이 올린다 2. 원래 있던 자리를 가리키기만 한다
1번을 하면 이미지 1,180장을 제 저장소에 두게 됩니다. 카드 이미지는 카드사 자산이라 그걸 통째로 복제해서 재배포하는 게 마음에 걸렸어요. 용량도 늘고요.
그래서 가리키기만 하기로 했습니다. 화면에는 정상적으로 보이는데, 실제 이미지 파일은 제 쪽에 없어요.
이 선택에는 대가가 있습니다. 원래 자리에서 그림이 없어지면 제 화면에서도 안 보이게 돼요. 그건 감수하기로 했습니다. 안 보이는 건 불편한 정도지만, 남의 자산을 통째로 복제해두는 건 성격이 다른 문제라서요.

카드 한 장이 저장되는 모양이 위와 같습니다. 카드 번호, 발급사, 카드 이름, 신용인지 체크인지, 연회비, 전월실적 조건, 카드 색깔, 이미지 주소, 그리고 혜택 목록이요. 이게 1,180장 붙어서 파일 하나가 6메가바이트쯤 됩니다.
이름을 하나로 묶는 사전은 사람이 만들었습니다
이제 맨 앞의 스타벅스 문제로 돌아옵니다.
카드사마다 혜택 카테고리를 자기 마음대로 적어놨어요. 실제로 나온 이름들을 보면 이렇습니다.
- 음식점 계열: 푸드 · 점심 · 외식 · 일반음식점 · 패밀리레스토랑 · 배달앱
- 마트 계열: 편의점 · 대형마트 · 마트 · SSM
- 구독 계열: 디지털구독 · 스트리밍 · OTT
전부 같은 걸 다르게 부르는 겁니다. 이대로 두면 "마트"로 검색한 사람은 "대형마트"라고 적힌 카드를 못 찾아요.
그래서 이름을 하나로 묶는 사전을 만들었습니다.

왼쪽이 카드사가 쓴 이름, 오른쪽이 제가 정한 이름이에요. 푸드도 점심도 외식도 전부 "음식점" 하나로 갑니다. 이렇게 21개 묶음으로 정리했어요.
이 사전은 사람이 만들었습니다. 이건 자동으로 못 만들어요. "SSM이 마트다"라는 걸 알려면 SSM이 기업형 슈퍼마켓 줄임말이라는 걸 알아야 하고, "공항라운지/PP"의 PP가 프라이어리티 패스라는 것도 알아야 하거든요. 이름만 보고 기계가 묶으면 엉뚱한 데로 갑니다.
사전에 없는 이름이 나오면 어떡하냐고요? 그때는 혜택 설명에 들어 있는 단어로 추측합니다. "스타벅스"나 "투썸"이 있으면 카페로, "지하철"이나 "택시"가 있으면 대중교통으로요. 그래도 못 정하면 "기타 혜택"으로 둡니다. 억지로 아무 데나 넣지 않아요.
지금도 전체 혜택 5,265줄 중에 1,129줄이 기타로 남아 있습니다. 5분의 1이 넘어요. 이건 나중에 사전을 늘려가면서 줄여야 할 몫입니다.
카드사 칩이 실시간으로 줄어듭니다
사전을 넣고 나니 검색이 되기 시작했어요. 그런데 여기서 한 가지가 더 필요했습니다.
카드사가 50곳이잖아요. 화면 위쪽에 카드사를 골라서 거르는 칩이 쭉 붙어 있는데, 처음엔 이게 항상 50개 다 떠 있었어요.
이러면 이상한 일이 생깁니다. 스타벅스를 검색해서 결과가 30장쯤 나왔는데, 위에 있는 카드사 칩은 여전히 50개예요. 거기서 카드사 하나를 누르면 결과가 0장이 됩니다. 스타벅스 혜택이 있는 카드가 그 카드사엔 없었던 거죠.
고를 수 있게 해놓고 고르면 아무것도 없는 화면이 되는 거예요.
그래서 검색어에 따라 카드사 칩도 같이 줄어들게 바꿨습니다. 스타벅스를 검색하면 스타벅스 혜택이 있는 카드사만 남고, 각 카드사 옆 숫자도 그 검색 안에서의 장수로 바뀌어요.

실제로 스타벅스를 검색하면 KB국민카드 25장, NH농협카드 14장, 우리카드 14장… 이렇게 나옵니다. 아까 182장으로 제일 많던 신한카드는 목록에서 아예 사라져요. 스타벅스 혜택으로 잡히는 카드가 없다는 뜻입니다.
숫자가 0인 선택지는 아예 안 보여주는 게 낫더라고요.
사라진 카드를 지우지 않기로 했습니다
카드는 계속 바뀝니다. 새 카드가 나오고, 오래된 카드는 발급이 중단돼요. 그래서 15일에 한 번씩 다시 긁어오게 해뒀습니다.
여기서 고민이 하나 생겼어요. 다시 긁었더니 지난번에 있던 카드가 없어졌으면 어떡하나.
제일 간단한 건 그냥 지우는 겁니다. 없어진 카드니까요. 그런데 그러면 문제가 생겨요.
그 카드를 지갑에 담아둔 사람의 화면에서 카드가 증발합니다. 내가 실제로 쓰고 있는 카드인데 목록에서 사라지는 거예요. 발급이 중단된 거지 제 지갑에서 없어진 게 아닌데요.
그래서 이렇게 했습니다.

지우지 않고 "발급중지" 표시를 붙여서 남깁니다. 언제 사라졌는지 날짜도 같이 찍어둬요. 화면에서는 뱃지가 붙고 흐리게 보이고, 새 카드 추천에서는 빠집니다. 이미 갖고 있는 사람은 계속 보이고, 새로 만들 사람에게는 권하지 않는 거죠.
반대 경우도 챙겼습니다. 사라졌던 카드가 다시 나오면 발급중지 표시를 떼고 "변경됨"으로 바꿉니다. 카드가 재출시되는 일이 실제로 있거든요.
정렬도 손봤어요. 발급 중인 카드가 먼저 나오고 발급중지는 뒤로 갑니다. 목록에 남기되 앞자리는 안 주는 겁니다.
무엇을 안 담을지도 정해야 했습니다
모으다 보면 욕심이 생겨요. 데이터가 있으니까 다 넣고 싶어집니다.
두 가지를 덜어냈어요.
첫째, 해외 특별적립을 뺐습니다. 카드 혜택에는 해외 결제 관련 조건이 잔뜩 붙어 있어요. 그런데 이 도구는 "오늘 편의점에서 어느 카드를 낼까"를 답하는 물건입니다. 해외 조건까지 섞으면 순위가 흔들려요. 그래서 국내 기준으로 확정했습니다.
둘째, 카드사가 광고 문구로 적어놓은 것들을 혜택으로 안 셌습니다. "업계 최대 혜택" 같은 건 혜택 줄에 들어 있어도 계산에 쓸 수 없잖아요. 이런 건 참고로 분류해서 순위 계산에서 뺐습니다. 지금 참고로 빠진 게 460줄입니다.
넣는 것보다 안 넣기로 정하는 게 더 어려웠어요. 넣어달라고 하면 다 넣어줍니다. 넣으면 안 되는 이유를 아는 건 사람 쪽이었습니다.
발급사가 틀린 카드가 있었습니다
모아놓고 화면에 띄웠더니 눈에 걸리는 게 있었어요. 발급사가 잘못 붙은 카드가 있었습니다.
카드 혜택 도구에서 발급사가 틀리면 꽤 곤란합니다. 그 카드를 어디서 신청하는지가 틀리는 거니까요. 카드사별로 묶어놓은 화면에서 엉뚱한 칸에 가 있기도 하고요.
이건 데이터를 그대로 믿으면 안 된다는 걸 알려준 대목이었어요. 긁어온 값이라고 다 맞는 게 아니더라고요. 사람이 화면을 훑다가 "이 카드가 왜 여기 있지?" 하고 멈춰야 잡힙니다.

지금 화면
지금은 이렇게 돼 있습니다.
모든 카드 탭에서 1,180장을 카드사별로 볼 수 있고, 신용·체크로 거를 수 있어요. 카드사 칩은 여러 개 동시에 켤 수 있고, 전체 선택 체크박스도 있습니다.
카테고리 추천 탭은 카페·음식점·주유·대중교통 같은 상황을 고르면 그 상황에서 유리한 카드를 순위로 보여줍니다.

내 지갑 탭에는 내가 담아둔 카드만 모입니다. 카드 카드마다 "지갑에 담기" 버튼이 있어요.

화면 어딘가에 혜택 확인 기준일도 적어뒀습니다. 지금은 2026년 7월 22일 기준이에요. 카드 혜택은 바뀌는 물건이라, 언제 확인한 정보인지를 안 적으면 그 자체로 거짓말이 됩니다.
바뀐 카드에 표시를 붙였습니다
사라진 카드만 문제가 아니었어요. 조용히 내용만 바뀌는 카드가 더 많습니다.
카드 이름은 그대로인데 할인율이 내려가거나, 전월실적 조건이 올라가거나, 혜택 하나가 빠지는 일이 있어요. 이건 눈에 안 띕니다. 카드 목록만 보면 어제와 똑같아 보이거든요.
그래서 15일마다 다시 긁을 때 직전에 받아둔 것과 한 장씩 대조하게 해뒀습니다. 내용이 달라진 카드에는 "갱신" 표시를 붙이고 언제 바뀌었는지 날짜를 찍어요. 화면에서는 하늘색 뱃지로 뜹니다. 발급중지는 빨간색이고요.
대조용으로 지난번 결과를 통째로 저장해두는데, 이 파일이 11메가바이트쯤 됩니다. 카드 1,180장의 혜택 설명이 전부 들어 있으니까요. 용량이 좀 아깝긴 한데, 이게 없으면 무엇이 바뀌었는지를 영영 알 수 없어요. 지금 화면 데이터만 보면 그게 원래 그랬던 건지 어제 바뀐 건지 구분이 안 되잖아요.
이 대조 덕분에 알게 된 것도 있습니다. 지금 1,180장 중 879장에 "바뀜" 표시가 붙어 있어요. 4분의 3이 넘습니다. 카드 혜택이 이렇게 자주 손질되는 물건인 줄은 저도 몰랐어요.
사람이 붙잡은 곳
이번 편에서 사람 몫이었던 걸 정리하면 이렇습니다.
첫째, 이름을 묶는 사전. SSM이 마트고 PP가 공항라운지라는 건 데이터에 안 적혀 있어요. 그건 알고 있어야 묶입니다.
둘째, 안 담을 것을 정한 것. 해외 특별적립을 빼고, 광고 문구를 혜택으로 안 세기로 한 판단이요.
셋째, 사라진 카드를 지우지 않기로 한 것. 데이터만 보면 지우는 게 깔끔합니다. 그런데 그 카드를 지갑에 담아둔 사람 입장에서는 자기 카드가 증발하는 거예요. 그건 데이터가 아니라 쓰는 사람 쪽에서 봐야 나오는 결론이었습니다.
넷째, 눈으로 훑다가 이상한 걸 찾은 것. 발급사가 틀린 카드요.
모으는 일 자체는 확실히 빨라졌어요. 3,200번을 두드려서 1,180장을 추리는 건 사람이 손으로 할 수 있는 일이 아닙니다. 그건 기계가 훨씬 잘해요.
그런데 모은 걸 쓸 수 있게 만드는 건 다른 일이더라고요. 이름을 묶고, 뭘 뺄지 정하고, 없어진 걸 어떻게 다룰지 정하는 것. 여기는 아직 사람이 붙어 있어야 했습니다.
카드 혜택은 victor-house.com/cards에서 보실 수 있습니다. 로그인 없이도 쓸 수 있고, 담아둔 카드는 그 기기에 저장됩니다.
다음 편은 더 골치 아픈 이야기입니다. 카드를 모아놨더니 "월 최대 1만원 할인"의 그 1만원이 어디에도 정리돼 있지 않았어요. 약관 원문에만 적혀 있었거든요. 그걸 어떻게 뽑아냈는지 이야기해 보겠습니다.
#카드혜택 #신용카드 #체크카드 #카드추천 #카드비교 #카드고릴라 #연회비 #전월실적 #편의점할인 #카페할인 #주유할인 #대중교통할인 #스타벅스카드 #카드정리 #지갑정리 #카드테크 #짠테크 #생활비절약 #데이터수집 #크롤링 #파이썬 #AI개발 #클로드 #바이브코딩 #비개발자개발 #개인프로젝트 #사이드프로젝트 #도구만들기 #휴먼인더루프 #빅터하우스