보험 고객관리 프로그램을 클로드 코워크로 만들었습니다. 처음에는 웹 주소가 나왔는데, 그 구조에서는 만든 사람이 남의 고객 명부를 볼 수 있어서 PC 안에서만 도는 것으로 다시 만들었습니다. 실제 윈도우 11에서 설치해 확인한 결과, 바깥으로 보내는 명령이 0곳, 코드에 적힌 바깥 주소도 0곳이었고 글꼴까지 프로그램 안에 들어 있었습니다. 백업 파일은 AES-256-GCM으로 잠그고 열쇠를 만들 때 60만 번을 되풀이합니다. 화면 잠금은 10분 뒤 자동으로 걸리고 다섯 번 틀리면 30초 동안 막힙니다. 확인에 쓴 파워셸 명령 세 줄을 그대로 실었으니 다른 프로그램에도 쓰시면 됩니다.
보험 영업을 하는 지인에게 줄 고객관리 프로그램을 만들었습니다. 클로드 코워크에 시켰더니 처음에는 웹 주소가 나왔습니다. 잘 돌아갔어요.
그런데 그 구조에는 문제가 하나 있었습니다. 만든 사람인 제가 남의 보험 고객 명부를 들여다볼 수 있다는 것이었어요.
그래서 PC 안에서만 도는 것으로 다시 만들었습니다. 이 글에는 왜 그렇게 정했는지, 무엇이 나왔는지, 그리고 AI가 만들어 준 프로그램이 정말 인터넷으로 안 나가는지 독자가 직접 확인하는 방법을 적었습니다.
클로드를 처음 쓰시는 분이라면 사용량 한도가 어떻게 도는지를 먼저 보시면 되고, 명령줄 쪽이 궁금하시면 클로드 코드 설치와 첫 설정이 따로 있습니다.
웹으로 만들었을 때 걸린 것 — 만든 사람이 보이는 구조
웹 프로그램은 입력한 것이 어딘가의 서버에 쌓입니다. 그 서버는 만든 사람 것이고요. 기능 문제가 아니라 구조가 그렇습니다.
보험 고객 명부에 무엇이 들어가는지 헤아려 보면 이게 왜 걸리는지 바로 보입니다. 이름, 생년월일, 연락처, 집 주소, 직장, 가족 관계, 가입한 보험과 월 보험료. 선물로 주는 건데 받는 사람의 고객 명부를 제가 열어 볼 수 있으면 안 됩니다.
AI에게 무엇을 만들지보다 어디에 저장할지를 먼저 정해야 합니다. 나중에 바꾸면 처음부터 다시 짜는 일이 됩니다.
PC 전용으로 다시 만든 결과 — 화면 셋

처음 열면 이 화면이 뜹니다. 잠금 비밀번호는 안 정해도 그냥 씁니다. 예시 고객 여섯 명을 넣어 두면 어떻게 생겼는지 둘러본 뒤 한 번에 지울 수 있어요.

왼쪽은 고객 현황입니다. 몇 명인지, 상태별로 몇인지, 유지 중인 계약의 월 보험료 합계가 얼마인지가 한 줄로 나옵니다.
오른쪽이 챙길 일정이에요. 연락 약속은 7일, 생일과 상령일은 30일 안쪽을 모아서 디데이로 보여 줍니다. 지난 약속은 위에 빨갛게 뜨고요.

목록에서 이름을 누르면 카드가 열립니다. 가입한 보험이 상품별로 쌓이고, 유지 중인 것만 골라 월 보험료를 더해 줍니다. 상담 이력은 카드를 떠나지 않고 그 자리에서 적어요.
보험나이와 상령일 — 이 프로그램의 심장
보험 쪽 말이라 먼저 풀어 두겠습니다.
보험나이는 만 나이를 기준으로 합니다. 직전 생일에서 6개월이 안 지났으면 만 나이 그대로, 6개월 이상 지났으면 한 살을 더합니다. 상령일은 생일에서 6개월이 되는 날이에요. 1월 1일생이면 7월 1일입니다. 이날부터 보험나이가 한 살 오르고, 그만큼 보험료도 오를 수 있습니다.
그래서 설계사에게는 고객의 상령일이 언제인지가 돈 문제입니다. 하루 차이로 보험료가 달라지니까요.

고객 등록 화면에서 생년월일 칸에 1990-01-01 을 넣어 봤습니다. 바로 아래에 만 36세, 보험나이 37세, 다음 상령일 2027.07.01 이라고 떴어요. 오늘이 7월 1일을 지났으니 이미 한 살 올라간 상태이고, 다음은 내년입니다.
경계에서 어떻게 되는지 따로 확인해 봤습니다. 1990년 1월 1일생 기준입니다.
| 확인한 날 | 보험나이 |
|---|---|
| 2026-06-30 | 36세 |
| 2026-07-01 | 37세 |
| 2026-07-02 | 37세 |
상령일 당일부터 오릅니다. 8월 31일생처럼 상령일이 2월 31일이 되는 사람은 2월 28일로 밀어 주고, 2월 29일생도 안 깨집니다.
⛔ 이 값은 생년월일로 계산한 것입니다. 실제로 어느 날짜를 적용할지는 보험사 약관이 정합니다. 참고용으로 보셔야 해요.
인터넷으로 나가는지 확인하는 방법 — 파워셸 세 줄
여기가 이 글에서 제일 쓸모 있는 대목입니다. AI가 만들어 준 프로그램을 받았을 때 정말 내 정보가 안 나가는지 직접 확인하는 방법이에요. 이 프로그램만이 아니라 어떤 프로그램에도 그대로 씁니다.
따로 설치할 것은 없습니다. 윈도우 10 이나 11 이면 파워셸이 이미 들어 있어요. 시작 단추를 오른쪽 클릭하고 [터미널] 이나 [Windows PowerShell] 을 누르면 검은 창이 뜹니다.
프로그램 폴더가 이렇게 생겼다고 하겠습니다. 압축을 푼 자리예요.
바탕화면\CustomerCard\
├─ SETUP.cmd ← 설치할 때 누르는 것
├─ START.cmd
├─ app\ ← 프로그램 알맹이가 여기 있다
│ ├─ index.html
│ ├─ app.js
│ └─ app.css
└─ tools\
먼저 폴더 자리를 정해 둡니다. 바탕화면에 풀었다면 이 한 줄 그대로예요.
$app = "$env:USERPROFILE\Desktop\CustomerCard\app"
① 바깥으로 보내는 명령 확인
(Select-String -Path "$app\*.js","$app\*.html" `
-Pattern 'fetch\(|XMLHttpRequest|WebSocket|sendBeacon').Count
넷 다 브라우저가 바깥으로 무언가를 보낼 때 쓰는 명령입니다. 하나도 없으면 보낼 방법 자체가 없다는 뜻이에요.
0 이 나오면 됐습니다. 제가 돌렸을 때 0 이었습니다.
② 바깥 주소 확인
(Select-String -Path "$app\*.js","$app\*.html","$app\*.css" `
-Pattern 'https?://').Count
보낼 명령이 없어도 주소가 적혀 있으면 글꼴이나 그림을 남의 서버에서 끌어옵니다. 그것만으로도 누가 언제 이 프로그램을 열었는지가 그쪽에 남아요. 여기도 0 이었습니다. 글꼴까지 프로그램 안에 들어 있어서 그렇습니다.
③ 그 0 이 진짜인지 되짚기
⛔ 여기가 중요합니다. 위에서 나온 0 이 진짜 없어서인지 명령이 헛돌아서인지 가려야 해요. 폴더 자리를 한 글자만 틀려도 0 이 나옵니다.
(Select-String -Path "$app\*.js" -Pattern 'function').Count
반드시 있을 낱말로 같은 명령을 한 번 더 돌리는 겁니다. 제 경우 117 이 나왔어요.
⛔ 폴더 자리를 잘못 잡으면 이렇게 됩니다. 일부러 없는 폴더를 넣어 봤어요.
Select-String : Cannot find path '...없는폴더\app' because it does not exist.
빨간 글씨가 뜨고, 숫자는 0 도 아니고 아예 안 나옵니다. 그러니 ①과 ②에서 0 을 봤다면 그건 진짜 0 이에요. 빨간 글씨가 떴다면 $app 줄부터 다시 보셔야 합니다.
0 을 봤다고 끝이 아닙니다. 있어야 할 것으로 한 번 더 확인해서 그 0 이 진짜인지 봐야 합니다. 헛도는 명령도 똑같이 0 을 줍니다.
잠금과 백업 — 코드에서 확인한 값

백업 파일은 비밀번호로 잠급니다. 코드를 열어 보니 AES-256-GCM 이었고, 비밀번호에서 열쇠를 만들 때 60만 번을 되풀이합니다. 이 숫자가 클수록 비밀번호를 하나씩 대입해 보는 공격이 느려져요. 60만은 요즘 권장하는 값입니다.

화면 잠금은 10분 동안 손대지 않으면 저절로 걸립니다. 일부러 다섯 번 틀려 봤더니 사진처럼 30초 동안 막혔어요.
⛔ 이건 옆자리 사람을 막는 정도입니다. 윈도우 로그인 비밀번호를 따로 걸어 두셔야 해요. 그게 본래 자물쇠입니다.
⛔ 잠금 비밀번호와 백업 비밀번호는 잊으면 되찾을 수 없습니다. 되찾아 주는 곳이 없어야 남도 못 여는 구조라 그렇습니다.
잠금 화면에 「비밀번호를 잊었어요」가 있기는 합니다. 다만 이건 비밀번호를 찾아 주는 게 아니라 고객 정보를 모두 지우고 새로 시작하는 것이에요. 백업 파일이 있으면 그 뒤에 되살릴 수 있고, 그러려면 백업 비밀번호는 알고 있어야 합니다.
돌려 보면서 찾은 것 셋
받은 그대로 믿지 않고 실제 윈도우 11 에서 설치해 썼습니다. 세 가지가 나왔어요.
하나. 압축을 안 풀었을 때의 거부
zip 안에서 바로 SETUP.cmd 를 눌러도 안 됩니다. 안 되는 게 아니라 스스로 알아보고 안내창을 띄웁니다. 이런 조건이 들어 있어요.
$temp = [System.IO.Path]::GetTempPath()
if ($Root.StartsWith($temp, ...)) {
Show-Message "압축 파일 안에서 바로 실행하고 있습니다."
return $false
}
윈도우가 zip 을 열어 줄 때 임시 폴더에 풀어 놓기 때문에, 임시 폴더에서 돌고 있으면 압축을 안 푼 것으로 봅니다. 알아 두면 헤맬 일이 없어요.
둘. 한 박자 늦는 전화번호 하이픈
치는 동안에는 숫자 그대로입니다. 다른 칸으로 넘어가야 하이픈이 들어가요.
치는 중 01098765432
Tab 을 누른 뒤 010-9876-5432
고장이 아니라 그렇게 만든 것입니다. 치는 중에 하이픈이 끼어들면 지우기가 번거로워지니까요. 다만 안 들어간다고 놀라실 수 있어서 적어 둡니다.
셋. 설치 끝에 뜨는 안내창
SETUP.cmd 는 바로가기를 만들고 안내창을 띄운 채 기다립니다. 확인을 눌러야 넘어가요. 멈춘 것이 아니라 기다리는 겁니다.
AI가 만들어 준 것은 돌려 보고 코드를 열어 봐야 압니다. 설명만 읽으면 하이픈이 언제 들어가는지 같은 것은 안 나옵니다.
설치 방법 — 네 단계
프로그램은 깃허브에 열어 두었습니다. 내려받는 곳과 화면 사진, 쓰는 방법이 거기 다 있습니다.
⛔ 이 블로그에는 파일을 올려 두지 않았습니다. 서명을 받지 않은 실행 파일이라 내려받는 자리는 한 곳으로 모으는 편이 낫습니다. 무엇이 바뀌었는지도 거기서 보입니다.
설치는 따로 할 것이 없습니다. 압축을 풀고 한 번 눌러 주면 끝이에요.
- 받은 zip 을 오른쪽 클릭 → [속성] → [차단 해제]에 체크합니다. 인터넷에서 받은 파일이라 윈도우가 걸어 둔 표시를 풀어 주는 겁니다
- 압축 풀기.
CustomerCard폴더가 생깁니다 - 폴더 안의
SETUP.cmd를 두 번 누릅니다. 바탕화면과 시작 메뉴에 아이콘이 생겨요 - 첫 화면에서 잠금 비밀번호를 정하고, 예시 고객을 넣을지 고릅니다
⛔ 3번에서 파란 경고창이 뜰 수 있습니다. [추가 정보] 를 누르면 [실행] 단추가 나와요. 서명을 받지 않은 파일이라 그렇습니다. 서명은 돈을 내고 사는 것이라 개인이 만든 것에는 대개 없습니다.
다음부터는 바탕화면 아이콘으로 엽니다. 폴더를 옮겼다면 SETUP.cmd 를 한 번 더 눌러 주셔야 해요.
필요한 것은 윈도우 10 이나 11 과 엣지 또는 크롬입니다. 받는 zip 파일은 7MB 가 안 됩니다. 푼 뒤에는 조금 늘어요.
쓰기 전에 알아 둘 것
못 하는 것을 먼저 적어 둡니다. 쓰다가 알면 곤란한 것들이에요.
- 폰과 연동되지 않습니다. PC 끼리도 저절로 맞춰지지 않아요. PC 를 옮길 때는 백업 파일을 씁니다
- 엑셀 가져오기와 내보내기, 인쇄, 문자와 전화 연동이 없습니다
- 일정 알림은 프로그램을 열었을 때만 보입니다. 안 열면 안 알려 줘요
- 주민등록번호, 계좌와 카드번호, 건강 관련 자세한 내용은 넣지 않는 편이 낫습니다
- 회사 PC 라면 회사 보안 규정을 먼저 확인하셔야 합니다
그리고 한 가지 더. 고객 정보를 이 PC 에 두기로 한 이상 관리 책임도 쓰는 사람에게 있습니다. 백업을 안 해 두면 PC 가 고장났을 때 되살릴 곳이 없어요. 7일 넘게 백업을 안 하면 프로그램이 알려 주기는 합니다.
이 글에서 가져갈 것 셋
하나. AI 에게 프로그램을 시킬 때는 무엇을 만들지보다 어디에 저장할지를 먼저 정합니다. 나중에 바꾸면 처음부터 다시 짜는 일이 됩니다.
둘. 받은 프로그램이 인터넷으로 나가는지는 파워셸 세 줄로 확인합니다. 보내는 명령이 있나, 바깥 주소가 있나, 그리고 그 명령이 진짜 돌고 있나.
셋. 0 이 나왔다고 끝내지 않습니다. 있어야 할 낱말로 한 번 더 돌려서 그 0 이 진짜인지 봅니다.
프로그램은 깃허브에 있습니다. 쓰실 분은 거기서 받으시면 되고, 코드도 열려 있으니 위에서 적은 파워셸 세 줄을 받기 전에 돌려 보셔도 됩니다.
여기까지가 윈도우 11 과 엣지, 파워셸 5.1 환경에서 직접 확인한 것입니다. 설치부터 잠금까지 실제로 돌려 봤고, 코드도 열어서 읽었습니다. 보험나이와 상령일 값은 실제 적용 기준과 다를 수 있으니 보험사 약관을 함께 보셔야 합니다.
자주 묻는 질문
AI가 만든 프로그램이 내 정보를 밖으로 보내는지 어떻게 확인하나요?
윈도우 파워셸에서 프로그램 폴더를 뒤져 보면 됩니다. 따로 설치할 것은 없습니다. fetch, XMLHttpRequest, WebSocket, sendBeacon 네 낱말을 찾아 몇 곳인지 세고, https 로 시작하는 바깥 주소도 셉니다. 둘 다 0 이면 보낼 방법도 보낼 곳도 없다는 뜻입니다. 다만 0 이 나왔다고 끝내지 말고, function 처럼 반드시 있을 낱말로 같은 명령을 한 번 더 돌려 보세요. 거기서도 0 이 나오면 폴더 자리를 잘못 잡은 것입니다.
보험나이와 상령일이 정확히 무엇인가요?
보험나이는 만 나이를 기준으로 합니다. 직전 생일에서 6개월이 안 지났으면 만 나이 그대로이고, 6개월 이상 지났으면 한 살을 더합니다. 상령일은 생일에서 6개월이 되는 날입니다. 1월 1일생이면 매년 7월 1일이고, 그날부터 보험나이가 한 살 올라 보험료가 오를 수 있습니다. 설계사에게는 고객의 상령일 전에 연락하는 것이 중요해서, 이 프로그램은 30일 안쪽 상령일을 디데이로 모아 보여 줍니다.
설치할 때 파란 경고창이 뜨는데 괜찮은가요?
서명을 받지 않은 실행 파일이라 윈도우가 띄우는 경고입니다. 서명은 돈을 내고 사는 것이라 개인이 만든 프로그램에는 대개 없습니다. [추가 정보] 를 누르면 [실행] 단추가 나옵니다. 다만 경고를 그냥 넘기는 습관은 위험하니, 누가 만들었는지 모르는 파일이라면 먼저 tools 폴더 안의 ps1 파일들을 메모장으로 열어 읽어 보세요. 글자로 되어 있어서 무엇을 하는지 읽힙니다. SETUP.cmd 안에는 알아볼 수 없는 긴 문자열이 한 줄 보이는데, 그건 파일이 빠졌을 때 띄우는 한글 안내창 문구를 윈도우가 따옴표 문제 없이 넘기려고 바꿔 둔 것입니다.
다른 PC 나 폰에서도 같은 고객 정보를 볼 수 있나요?
없습니다. 정보가 그 PC 안에만 있어서 폰과 연동되지 않고 PC 끼리도 저절로 맞춰지지 않습니다. 이것이 불편한 점이자 동시에 이 프로그램의 목적입니다. PC 를 옮길 때는 설정에서 백업 파일을 만들어 새 PC 에서 불러오면 됩니다. 백업 파일은 비밀번호로 잠기고, 그 비밀번호는 잊으면 되찾을 수 없습니다.
이 프로그램은 어디서 받나요?
깃허브에 열어 두었습니다. 주소는 github.com/defazr/insurance-customer-card 입니다. 블로그에는 파일을 올려 두지 않았습니다. 서명을 받지 않은 실행 파일이라 내려받는 자리를 한 곳으로 모으는 편이 낫고, 깃허브에서는 무엇이 바뀌었는지도 함께 보입니다. 받기 전에 코드를 먼저 읽어 보실 수도 있습니다. 이 글에 적은 파워셸 명령을 받은 뒤에 돌려 보셔도 되고요.
보험설계사가 아니어도 쓸 수 있나요?
쓸 수 있습니다. 보험 칸을 비운 채 고객 하나를 넣어 봤더니 고객 명부와 상담 기록 프로그램으로 그대로 돌아갔습니다. ⛔ 다만 보험 칸이 사라지지는 않습니다. 보험나이와 다음 상령일 자리에 줄표가 남고, 화면 위쪽 이름도 「보험 고객 명부」로 고정입니다. 그게 거슬리지 않으면 쓸 만합니다. 방문 영업, 자동차 영업, 부동산 중개, 프리랜서 상담처럼 사람 이름과 연락 이력을 챙겨야 하는 일이면 맞습니다. 연락 예정일과 생일을 디데이로 모아 주는 부분은 업종과 상관없이 그대로 쓸 수 있습니다.

