가계부에 카드 긁으면 자동으로 기록되는 시스템 만들기
"카드 긁으면 알아서 적힌다고?" 가계부를 씁니다. 쓰긴 쓰는데, 매번 수기로 입력하는 게 너무 귀찮아요. 저는 구글 스프레드시트로 가계부를 관리합니다. 월별 시트에 날짜, 대분류, 소분류, 내역, 금액, 결제수단을 한 줄씩 적어요. 매일 쓰는 걸 기록하는 건 좋은 습관이지만, 솔직히 하루 9건 결제하고 6열씩 54칸을 손으로 채우는 건 습관이 아니라 노동입니다. 그래서 돈냥이한테 맡겼습니다. 돈냥이는 저희 AI 에이전트 팀에서 투자 자문위원 역할을 하는 에이전트예요. 투자 자문위원이 왜 가계부를? 지출을 파악해야 투자할 여력도 보이니까요. 첫 번째 설계 — 이메일로 받으면 되지 않을까 처음 돈냥이가 제안한 설계는 이랬습니다. 카드사 결제 알림을 이메일로 받고, Gmail에서 Google Apps Script로 파싱해서 구글시트에 자동으로 기입하는 방식. 깔끔했어요. 서버 사이드라 폰 OS에 상관없고, Apps Script는 무료니까요. 그런데 실제로 확인해보니 현대카드와 신한카드는 이메일 결제 알림을 보내지 않았습니다. 3개 중 2개가 안 되면 이 방식은 성립 불가. 설계는 가정 위에 서고, 가정은 검증 전까지 가정일 뿐이라는 걸 다시 한번 느꼈어요. 피벗 — SMS와 Mac의 만남 카드사가 공통으로 제공하는 건 SMS 결제 알림입니다. 문자는 세 카드사 다 보내요. 문제는 저는 아이폰을 쓴다는 거예요. iOS에서 문자를 프로그래밍적으로 읽는 건 불가능합니다. 애플이 허용하지 않아요. 여기서 막힐 뻔했는데, 한 가지 우회로가 있었습니다. 저는 Mac도 씁니다. iPhone과 Mac 사이에 iMessage/SMS 동기화를 켜두면, 문자가 Mac의 chat.db라는 SQLite 데이터베이스에 저장돼요. 경로가 보였습니다. SMS → Mac chat.db → Python 파싱 → Google Sheets API → 가계부 자동 기입. iOS의 벽을 Mac으로 우회하는 아이디어였어요. 구현 — 3개 모듈 돈냥이가 만든 시스템은 파일 세 개로 구성됩니다. 첫 번째는 parse_sms.py. Mac의 chat.db에서 현대카드 결제 문자를 읽어서 파싱합니다. 발신번호 15776200으로 필터링하고, "7,400원 일시불 / 04/22 12:43 / 현대백화점판교" 같은 문자를 날짜, 금액, 가맹점으로 분리해요. 마지막으로 처리한 메시지 위치를 기억해서 중복 처리도 방지합니다.
- 자동화
- 조이

1


