← 목록 · 05-1 · 누구에게 — 나누고, 버린다 · 원문 script.md

05-1: 누구에게 — 나누고, 버린다

공통 조항 assets/contracts/COMMON.md(2026-09-04 개정: 4박자 2·6·15·2·과목 1차시 4·6·13·2 · 시연 상한 총량 역산 · QR 취소). 계약 assets/contracts/05-1.md, 반려 지시 assets/contracts/05-1-rev1.md~rev16.md(누적 CA1~CA8·CB1~CB5·CC1~CC7·CD1~CD8·CE1~CE4·CF1~CF5·CG1~CG5·CH1~CH2·CI1~CI3·CJ1~CJ4·CK1~CK5·CL1~CL4·CM1~CM2·CN1~CN2·CO1~CO3·CP1~CP3) + rev17(계약 파일 없이 오케스트레이터 직접 지시 셋 — 도입 노트 시간·검사 로그 수치 2건·계약 단위 오기 확인) + rev18(계약 파일 없이 — 임계 인구 표시값 재계산·검사 로그 손 계산 수치 재정정) + rev19(계약 파일 없이 — notes 산문의 도구 집계 재서술 금지로 방법 변경) + rev20(계약 파일 없이 — 이력 절 범위 참조 양끝 마커·검사 로그 손기록 2건 제거) + rev21(계약 파일 없이 — 검사 로그를 오케스트레이터 실행 출력으로 교체, 05-1-rev21-output.txt) + rev22(계약 파일 없이 — check_notes 고정점 수정 뒤 검사 로그 재교체, 05-1-rev22-output.txt) + rev23(계약 파일 없이 — 미확인 절 모순 정정·이력 절 rev21~22 보강·머리말 갱신). 소재 assets/market.md. 데이터 실측 author-c/probe-dj/3b/data/card_sales.csv(awk 직접 재현, 아래 「근거」). 틀은 author-a/ep-04-2/.

기본 정보

항목 내용
시간 25~30분 (발화 5,000~7,500자 + 시연 조작 시간 합산, §0.4)
유형 시연 · 과목 1차시(도입 4·이론 6·시연 13·정리 2)
카테고리 05 AI 기반 디지털 마케팅
선수 차시 없음(과목 첫 편)
상태 rev23

학습 목표

구성

구간 활동 목적
도입 4 타겟 정의 + 「안 들어가는 사람」 목록 먼저 보여주기 · 과목이 남기는 것 한 문장 · 인물·소재 30초 · Antigravity 원칙 문장·대안·대처 경로·막히는 장면 오늘의 결과물을 먼저 확인, 과목 1차시 도구 소개(§0.3)
이론 6 STP — 나누고, 고르고, 버린다. 인구통계 축 vs 행동 축, 다른 예 = 헬스장 어디서든 쓰는 일반형을 대전 없이 심는다
시연 13(+조작) AI 페르소나 요청(평균 인물) → 대전 카드매출로 반박(구마다 업종 구성이 다르다) → 행동 축으로 좁히기(전공이 드러나는 곳) → 안 들어가는 사람 목록 → 함정(업종 바꿔도 페르소나가 같다) 대전 소재에 실측 숫자로 적용
정리 2 한 줄(지정) + 다음 차시 갈고리(제목만) + 검정 질문 자막 연결

합계 25~30분. 시연 구간의 무발화 조작 시간은 화면 지시에 단가표 유형(파일열기20·열고르기30·검사실행30·AI응답대기30·표작성20·화면전환8, 초)으로 표기한다(§0.4).

연결


상세 전개

도입 (4분)

[화면: 타겟 정의 카드 한 장 + 「이 타겟에 안 들어가는 사람」 목록, 나란히(재구성 — 촬영 시 실제 완성본 화면으로 교체). · 조작: 화면전환]

(축자)

"오늘은 이 두 장을 만드는 과정을 봅니다 — 왼쪽은 타겟 정의, 오른쪽은 이 타겟에 안 들어가는 사람 목록입니다."

(요점) 05 마케팅 세 편이 남기는 것은 한 문장으로 이어진다 — 누구에게, 무엇을 약속하나, 지켰는지 어떻게 아나. 세 칸이 한 장에 나란히 채워지는 게 이 과목의 결과물이고, 오늘은 그 첫 칸만 다룬다. 나머지 두 칸은 이 첫 칸 위에 올라간다.

(축자)

"이번 차시에서 정하는 것은 「약속 한 장」의 첫 칸, 누구에게입니다."

(요점, 인물·소재 30초) 인물은 대전에서 카페를 열려는 식품영양학과 졸업생이다. 마케팅은 처음이라 가장 먼저 막히는 질문이 「누구에게 팔 것인가」다. 무엇을 약속할지는 다음 편이고, 오늘은 그 약속을 누구에게 할지부터 정한다.

(요점, 도구 소개) 이 과정을 Antigravity라는 에이전트 화면에서 만드는 과정으로 보여준다. 채팅창에 묻고 답을 받는 방식이라, 화면에 뜨는 대화를 그대로 따라가면 된다.

(축자, 지정)

"도구가 중요한 게 아니라, 이런 에이전트를 제대로 부리는 역량이 중요합니다."

(요점) 같은 방식은 오픈코드나 커서 CLI에서도 된다. 어느 도구를 쓰든 오늘 배우는 건 도구 사용법이 아니라 에이전트에게 무엇을 묻고 그 답을 어떻게 의심할지다. 이 「의심하는 법」은 잠시 뒤 시연에서 실제로 쓴다 — 에이전트가 첫 답으로 내놓는 타겟을 그대로 믿지 않고, 갖고 있는 대전 자료로 반박하는 장면이다. 프리뷰 무료 도구라 막히는 순간이 있다. 그때 쓰는 대처 경로 셋 — 질문을 나눠서 다시 묻기, 다른 도구로 옮기기, 결과를 텍스트로 정리해 붙이기 — 을 여기서 짚는다.

[화면: 응답이 멈춘 채로 몇 초간 그대로 떠 있다(재구성 — 촬영 시 실제 막힘 장면으로 교체, 숫자는 넣지 않는다). · 조작: 화면전환]

(요점) 막히면 화면을 오래 보지 않고, 방금 말한 세 경로 중 하나로 바로 넘어간다는 것만 보여준다. 몇 초 걸렸는지, 몇 번 만에 됐는지는 말하지 않는다. 오늘 시연에서도 이 사람은 에이전트가 준 답을 한 번에 믿지 않는다 — 막힘과 마찬가지로, 그럴듯한 답이 나와도 바로 쓰지 않고 확인하는 순서를 거친다.

이론 (6분)

(요점, 도입) 광고 문구를 쓰기 전에 누구에게 보여줄지부터 정해야 한다. 안 정하고 쓰면 문구는 아무한테나 하는 말이 되고, 아무한테나 하는 말은 결국 아무도 안 듣는다. 이때 쓰는 방법을 이 과정에서는 STP라고 부른다.

(축자, 핵심 정의)

"STP는 나누고, 고르고, 버리는 세 단계입니다. 나누고 — 시장을 몇 개의 무리로 쪼갭니다. 고르고 — 그중 하나를 타겟으로 정합니다. 버린다 — 나머지 무리는 이번엔 상대하지 않는다고 정하는 것입니다."

(요점) 나누는 일은 설문이나 구매 기록 같은 자료를 하나의 기준으로 줄 세워 무리를 짓는 것이다. 이 기준을 축이라고 부르는데, 축은 여러 개다. 나이·성별·거주지 같은 인구통계 축은 가장 쉽게 구해지고 가장 많이 쓰인다. 이미 있는 회원가입 정보만 봐도 나온다. 반면 행동 축 — 무엇을 하려고 왔는가, 언제 필요한가, 무엇을 아까워하는가 — 은 직접 묻거나 기록을 따로 봐야 나오는 값이라 구하기 어렵다. 두 축은 서로 다른 걸 갈라놓는다 — 인구통계 축은 「누구인가」를 가르고, 행동 축은 「지금 무엇이 필요한가」를 가른다. 광고 문구가 실제로 맞아떨어지는 쪽은 후자다.

(축자)

"쉽게 구해지는 축일수록 이미 다 써서 효과가 옅고, 행동 축은 가장 쓸모 있는데 가장 덜 쓰입니다."

(요점) 효과가 옅어지는 이유는 단순하다. 나이·성별로 나눈 광고는 경쟁하는 다른 가게도 똑같이 쓰고 있어서, 그 축으로 골라 봐야 남들과 같은 사람을 놓고 다투게 된다. 행동 축은 손이 더 가지만, 그만큼 다른 가게가 안 쓴 자리를 찾을 확률이 높다. 손이 더 간다는 건 설문을 새로 돌리거나, 손님이 언제 무엇을 사 가는지 직접 기록해야 한다는 뜻이다. 그래서 급할 때는 인구통계 축부터 쓰고, 시간이 있으면 행동 축을 더한다.

(축자, 다른 예)

"헬스장에 오는 사람을 나이로 나누면 다 30대입니다. 「살 빼려는 사람」과 「재활 중인 사람」으로 나누면, 광고 문구도 시간대도 가격도 전부 달라집니다."

(요점) 이 둘은 나이·성별로는 안 갈린다. 무엇을 하러 왔는지, 행동 축으로만 갈린다. 살 빼려는 사람에게는 아침 시간대 저강도 프로그램과 회비 할인이 문구가 되고, 재활 중인 사람에게는 물리치료사 상주 시간과 1:1 예약이 문구가 된다. 같은 30대인데 같은 문구로는 둘 다 놓친다. 두 무리에게 같은 전단을 뿌리면, 둘 다 자기 얘기가 아니라고 여기고 지나친다.

(요점, 다른 예 하나 더) 온라인 쇼핑몰도 같다. 장바구니에 담아만 두고 사흘째 결제를 안 한 사람과, 들어오자마자 바로 사는 사람은 나이·성별로는 안 갈리지만 행동으로는 갈린다. 담아만 둔 사람에게는 가격 할인 알림이 통하고, 바로 사는 사람에게는 배송 빠르다는 문구가 통한다. 같은 문구를 둘 다에게 보내면 한쪽은 필요 없는 알림으로 지운다.

(요점) 고르는 것은 동시에 버리는 것이다. 하나를 고르면 나머지 무리에게는 이번엔 말을 걸지 않겠다고 정한 것이다. 이 버리는 결정을 안 하면, 광고는 모두에게 하는 말이 되고, 모두에게 하는 말은 누구에게도 정확히 가닿지 않는다. 버릴 무리를 먼저 적어야 남는 무리가 분명해지는 것도 이 때문이다. 이제 이 순서 그대로 — 나누고, 행동 축으로 고르고, 안 들어가는 무리를 적어 버리는 순서로 — 실제 자료를 놓고 해 본다.

시연 (13분 + 조작)

[화면: AI 채팅창. "카페를 열려는 대전 30대 여성 타겟을 페르소나로 만들어줘"라고 입력한다(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: AI응답대기]

(요점) 이 사람이 먼저 하는 것은 AI에게 타겟을 물어보는 것이다. 이론에서 배운 「나눈다」를 이 사람도 제일 쉬운 축부터 써 본 것이다. 에이전트는 곧바로 페르소나를 내놓는다.

(재구성 — AI 출력 예시, 촬영 시 실제 출력으로 교체)
타겟: 30대 1인 가구 여성. 오전 시간대 1인 방문, 노트북 사용, 디저트보다 커피 위주 소비.

(요점) 화면에 뜬 문장은 그럴듯하다. 그런데 이 문장이 어디서 왔는지를 먼저 물어야 한다.

(축자)

"1인 가구 데이터는 저희에게 없습니다. 이 숫자는 AI가 학습 데이터의 평균에서 뽑아낸 것이지, 대전을 본 게 아닙니다."

(요점) 실제로 1인 가구 비중이나 가구 구성을 담은 데이터는 이번 자료 안에 없다. 없는데 있는 척 숫자를 지어내면, 그 위에 세운 타겟도 지어낸 것이 된다. 지어내지 않고, 있는 데이터로 반박하는 쪽으로 넘어간다.

[화면: 2020년 3~7월 자치구×업종 카드매출 표가 열린다(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 파일열기]

(요점) 대전시 다섯 자치구의 2019·2020년 3~7월 신용카드(KB) 매출 자료다. 이 사람이 보는 2020년 기준으로 업종은 전체로 37종이 있지만, 구 하나에 다 있는 게 아니라 구마다 28개에서 34개만 잡힌다. 나이·성별은 없고, 구별 업종 매출만 있다. 이 사람은 그중 2020년 값을 쓴다 — 구마다 업종별 매출을 전부 더해 그 구 총매출을 구하고, 업종 하나가 그중 몇 퍼센트를 차지하는지를 본다.

(축자)

"한 카드사 자료라 전체 매출은 아닙니다. 그래도 구끼리 비교하는 데는 씁니다."

(축자)

"2019년으로 재면 서구 33.8퍼센트와 중구 32.6퍼센트가 비슷합니다. 2020년과 다른 그림이라, 연도를 밝히고 2020년 값을 씁니다."

(요점) 같은 다섯 자치구 안에서도 업종 구성비가 다르다. 2020년 신용카드(KB) 매출 기준으로 일반음식점 비중이 유성구 40퍼센트, 중구 32.7퍼센트, 그다음 서구·동구가 29~30퍼센트대로 묶여 있고, 대덕구 25퍼센트다. 같은 업종인데 구마다 15퍼센트포인트 가까이 벌어진다.

(요점) 다섯 구를 놓고 보니, 「대전 30대 여성」 한 문장으로는 어느 줄도 안 맞는다. 구 하나씩 짚어 본다.

[화면: 유성구 막대가 강조된다(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 화면전환]

(축자)

"유성구는 일반음식점 비중이 40퍼센트로 다섯 구 중 가장 높습니다."

[화면: 중구 막대가 강조된다(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 화면전환]

(요점) 중구는 신용카드(KB) 매출 기준 32.7퍼센트다. 이 숫자는 중구에 있는 업종을 전부 더한 분모로 낸 값이다.

(축자)

"분모가 바뀌면 숫자가 바뀝니다. 다섯 구가 공통으로 가진 26개 업종만으로 분모를 다시 잡으면, 중구는 36.0퍼센트가 됩니다."

(요점) 대형유통이라는 업종이 2020년에 중구에만 있어서 생기는 차이다.

[화면: 서구 막대가 강조된다(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 화면전환]

(요점) 서구는 다르다. 일반음식점 30퍼센트 옆에 의료기관/제약 23퍼센트가 붙는다 — 다섯 구 중 가장 높은 비중이다. 병원·약국이 몰려 있다는 뜻이고, 이 동네에서 카페를 열면 병원 대기 손님을 겨냥한 자리도 함께 봐야 한다는 뜻이다.

[화면: 대덕구 막대가 강조된다(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 화면전환]

(요점) 대덕구는 자동차정비/유지 비중이 10퍼센트다. 나머지 네 구 어디에서도 상위 세 업종 안에 들지 않는 업종이 대덕구에서는 세 번째로 크다. 정비소·부품점이 모여 있는 동네라는 뜻이다.

(축자)

"같은 「대전 30대 여성」이 유성구와 대덕구에서 같은 사람일 리 없습니다."

(요점) 페르소나가 준 나이·성별·1인 가구는 다섯 구 어디를 가도 똑같이 적용되는 문장이다. 매출 구성은 구마다 다른데, 나이·성별 축으로는 이 차이가 안 잡힌다. 이 사람이 대전 어느 구에서 가게를 열든 같은 광고 문구를 쓰게 된다는 뜻이다.

[화면: 정제된 상가업소 자료에서 구별 음식·소매 업소 밀도(인구 만 명당)가 표로 뜬다(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 파일열기]

(요점) 카드매출 말고 다른 자료도 같은 얘기를 하는지 본다. 정제된 상가업소 자료로 구마다 인구 만 명당 음식점·소매 업소 수를 센다. 음식점 밀도는 중구가 175.7로 앞서는 편이고, 유성구·대덕구가 그다음 묶음(167.6·165.4, 차이 1.3퍼센트라 순서를 가르지 않는다)이다.

(축자)

"유성구는 카드매출로 보면 일반음식점 비중이 가장 높고, 음식점 밀도로도 중구 다음 묶음에 있습니다. 소매는 인구 만 명당으로 다섯 구 중 가장 낮습니다."

(요점) 아까 배운 대로, 분모를 바꿔서 같은 검사를 한 번 더 한다 — 인구가 아니라 그 구 전체 업소 수를 분모로 놓으면, 소매 비중은 유성구와 서구가 아래쪽 묶음이다(23.4퍼센트·22.6퍼센트, 차이 3.4퍼센트라 둘을 가르지 않는다). 어느 분모를 쓰든 방향은 같다 — 먹으러 오는 사람에 비해 사러 오는 사람이 적다.

(축자, 시점)

"업소는 6월, 인구는 7월 값입니다. 한 달 차이지만 아까 본 얇은 마진(소매 밀도 0.37%)은 대덕구 인구의 0.37%면 뒤집힙니다."

(요점) 두 자료를 같이 보면 다른 질문이 남는다 — 먹으러 오는 사람은 많은데 사러 오는 사람은 왜 적은가.

[화면: 타겟 문장이 다시 쓰인다(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 표작성]

(요점, 전공이 드러나는 곳) 좁히는 기준은 나이가 아니라 행동이다. 유성구는 음식점 쪽은 카드매출도 밀도도 둘 다 높은데, 소매 밀도만 유독 낮다 — 먹으러 오는 사람은 많고 사러 오는 사람은 적다는 뜻이다. 유성구에는 연구단지가 있고, 점심시간 도시락 수요라는 행동 축을 잡을 수 있다.

(축자)

"점심 12시, 유성구 연구단지 주변에서 도시락을 사 가는 사람 — 이라고 봅니다."

(요점) 이 문장 끝에 "이라고 봅니다"를 붙인 이유가 있다 — 이건 매출 표에서 바로 나오는 숫자가 아니라, 매출 구성과 연구단지라는 동네 성격을 붙여서 이 사람이 내린 해석이다. 숫자와 해석을 같은 말투로 섞어 말하면, 나중에 어디까지가 확인된 것이고 어디부터가 짐작인지 스스로도 헷갈린다. 식단·알레르기·영양 표시를 읽을 줄 아는 사람만 이 축을 알아본다. 도시락 포장에 알레르기 표시를 넣을지, 저염 메뉴를 따로 뺄지는 전공이 없으면 안 보인다. 마케팅을 몰라도, 이 부분만큼은 이 사람이 에이전트보다 더 잘 안다.

[화면: AI 채팅창. 이번엔 "빵집을 열려는 대전 30대 여성 타겟을 페르소나로 만들어줘"라고 입력한다(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: AI응답대기]

(요점, 함정) 업종만 바꿔서 다시 물어본다. 나오는 페르소나는 거의 그대로다.

(재구성 — AI 출력 예시, 촬영 시 실제 출력으로 교체)
타겟: 30대 1인 가구 여성. 오전 시간대 1인 방문, SNS 사진 공유 성향.

(축자)

"업종을 바꿔도 나이와 성별은 그대로입니다. AI 페르소나는 학습 데이터의 평균 인물이지, 이 업종만의 사람이 아닙니다."

(요점) 카페든 빵집이든 물으면 비슷한 사람이 나온다는 것이 이 함정이다. 평균은 누구에게도 정확히 맞지 않는다. 앞서 본 카드매출 표는 업종이 바뀌면 구마다 숫자가 확 달라졌는데, 에이전트가 준 페르소나는 업종을 바꿔도 거의 그대로였다 — 이 둘을 나란히 놓고 보는 것이 오늘 시연의 핵심이다. 에이전트가 틀린 게 아니다. 물어본 질문이 "대전 30대 여성"까지만이었고, 어느 구에서 무엇을 하는 사람인지는 묻지 않았다. 질문을 좁히지 않으면 답도 좁혀지지 않는다.

(요점) 좁힌 타겟 문장과 안 들어가는 사람 목록, 이 둘이 오늘 도입에서 먼저 보여준 두 장이다. 페르소나가 준 답을 그대로 안 쓰고 자료로 반박한 다음에야 이 두 장이 나왔다는 순서를 놓치지 않는다.

[화면: 「이 타겟에 안 들어가는 사람」 목록이 채워진다(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 표작성]

(요점, 결과물) 좁힌 타겟 옆에 안 들어가는 사람 목록을 만든다. 저녁에만 오는 사람 — 점심 도시락 축은 낮 시간을 겨냥한 것이라 저녁 손님에게는 안 통한다. 배달만 시키는 사람 — 포장·배달 위주라 매장에서 도시락을 사 가는 행동과는 다른 문제다. 다른 구에서 넘어와 한 번 들르는 사람 — 유성구 연구단지 근처를 반복해서 오가는 사람이 아니라 매출로 잡히지 않는 뜨내기 손님이다. 이 셋은 나이·성별로 보면 오늘 잡은 타겟과 똑같아 보이지만, 행동으로 보면 다르다. 안 들어가는 사람을 적어야 남는 사람이 분명해진다.

정리 (2분)

[화면: 타겟 정의와 안 들어가는 사람 목록, 도입에서 봤던 두 화면이 완성된 채로 다시 뜬다(재구성 — 촬영 시 실제 완성본 화면으로 교체). · 조작: 화면전환]

(축자, 지정)

"타겟은 고르는 것이 아니라 버리는 것입니다."

(요점) 오늘 만든 목록이 왜 남는지 정리한다. 페르소나는 도구가 몇 초 만에 내놓지만, 안 들어가는 사람 목록은 이 사람이 직접 데이터를 보고 적은 것이다. AI가 준 「30대 1인 가구 여성」은 업종을 바꿔도 그대로였고, 대전 카드매출은 구마다 15퍼센트포인트 가까이 벌어졌다 — 둘 중 어느 쪽이 이 사람의 카페에 실제로 맞는 타겟인지는 오늘 만든 목록이 답한다. 이론에서 배운 나누고·고르고·버린다 세 단계 중, 오늘 실제로 해 본 것은 고르는 것과 버리는 것 두 가지였다. 이 목록을 적어 두면, 다음 편에서 무엇을 약속할지 정할 때 누구를 향한 문장인지 흔들리지 않는다.

(요점, 갈고리) 다음 편은 「무엇을 약속하나 — 근거가 없으면 광고가 아니다」다. 누구에게가 정해졌으니, 다음은 그 사람에게 무엇을 말할 차례다.

(요점) 다음 편으로 넘어가기 전에 이 목록을 저장해 둔다 — 「약속 한 장」 첫 칸이 이걸로 채워진다.

[자막: 이 타겟에 안 들어가는 사람은 누구입니까?]


근거

카드매출 수치는 신규 웹 조사가 아니라 author-c/probe-dj/3b/data/card_sales.csv(CP949 원본, UTF-8 사본 card_sales_utf8.csv, 헤더 제외 307행, 2019년(155행)+2020년(152행) × 자치구 5 × 업종 × 3~7월, 완전교차 아님)를 집필자가 awk로 직접 재현했다. 업종 종수는 발화가 쓰는 2020년 단독 스코프로 통일한다 — 2020년 전체 37종(2019년 고유 「학교」 1종 제외), 구별 28~34종(대덕28·동구30·유성30·중구30·서구34). 2019년 단독은 38종·29~33종, 2019+2020 합집합은 38종·30~34종으로 각각 다르다 — 세 스코프를 섞지 않는다(rev14 CN1).

awk -F, 'NR>1 && $1=="2020년"{gu=$2; cat=$3; sum=$4+$5+$6+$7+$8; tot[gu]+=sum; cat_sum[gu"|"cat]+=sum}
END{for(k in cat_sum){split(k,p,"|"); printf "%s|%s|%.4f%%\n", p[1],p[2], cat_sum[k]/tot[p[1]]*100}}' card_sales_utf8.csv

결과(2020년 3~7월 매출 합, 구 전체 대비 업종 비중): 일반음식점 — 유성구 40.13%·중구 32.72%·서구 29.93%·동구 28.92%·대덕구 25.31%. 서구 의료기관/제약 22.92%. 대덕구 자동차정비/유지 10.26%.

결측(rev4 CD8). 307행 중 43행에 빈 셀 105개(6.8%) — 핵심 5업종(일반음식점·의료기관/제약·자동차정비/유지·소매·대형유통) 열엔 0건, 합계 계산은 빈 셀을 0으로 읽는다(awk 특성). 이 편이 인용하는 숫자는 전부 핵심 업종이라 결측의 영향을 받지 않는다.

중구 분모 함정(rev1 CA4). 5개 구가 2020년에 공통으로 가진 업종은 26종(python으로 집합 교집합 재확인). 이 26종만으로 분모를 다시 잡으면 중구 일반음식점은 32.72%→35.95%(반올림 36.0%)로 움직이고, 나머지 네 구는 ±0.4%p 안에서만 움직인다. 원인은 「대형유통」 업종이 2020년에 중구에만 존재하기 때문(중구 총매출의 8.15%, 369.8억원/4,539.2억원) — 다른 4개 구는 대형유통 매출 0.

연도 차이(rev1 CA4, rev15 CO2로 순위 단정→묶음 정정). 2019년 3~7월 값으로 같은 계산을 하면 서구 33.80%·중구 32.61%로 마진 3.55%(표시값 33.8/32.6 기준 3.55%, 근거 표기값 33.80/32.61 기준 3.52% — 둘 다 4% 미만이라 §0.18-a 문턱 미달, 「서구가 중구를 앞질렀다」로 순위를 단정하지 않고 비슷한 수준(묶음)으로 서술한다). 2020년은 중구 32.72% > 서구 29.93%로 마진 8.53%(≥6%, 순위 단정 가능) — 두 해의 그림 자체가 다르다는 것이 이 대조의 요점이지, 「순서가 뒤집힌다」는 단정이 요점이 아니다. 그래서 대본에서 「2020년 값을 쓴다」를 명시하고, 표·슬라이드도 2020년 기준으로만 정렬한다.

업종 소멸·신규(README 일치 확인). (구,업종) 쌍 기준 2019년 155개·2020년 152개, 2019에만 있는 쌍 7개(소멸)·2020에만 있는 쌍 4개(신규), 순증감 −3 — README 「2019→2020 소멸 7행·신규 4행, 순증감 −3」과 일치.

대덕구 자동차정비/유지가 「다른 구 상위 3에 없다」는 문장은 구별 업종 매출 상위 3을 전부 뽑아 확인했다 — 동구·중구·서구·유성구 네 곳 모두 상위 3은 일반음식점·소매·의료기관/제약(또는 소매) 조합이었고, 자동차정비/유지는 대덕구 상위 3(일반음식점·소매·자동차정비/유지)에만 있었다.

상가업소 밀도(rev2 CB1·CB2 — 원표 분모로 재계산). assets/data/daejeon/shops_2026-06_clean_gu_category.csv(04-3 정제 후, 2026-06 단일 시점)의 「음식」·「소매」 업소수를, assets/data/daejeon/README.md 04-3 절의 원표 인구(대전광역시 통계 「대전의 통계」, 서구464,428·유성371,855·중구224,034·동구218,050·대덕163,823, 합 1,442,190)로 나눠 만 명당 밀도를 냈다. rev1에서는 market.md §6의 「구별 비율×총인구」 근사값(서구464,385·유성372,085 등)을 썼는데, README가 04-3 rev1 검증 도중 원표 인구로 갱신됐고 그 사실이 이 편에 전달되지 않아 근사값 그대로 갔던 것 — 이번에 원표로 다시 잰다. 음식점 밀도(원표): 중구175.7(앞서는 편, 유성과 마진 4.61% — 4~6% 구간이라 헤지) > 유성167.6·대덕165.4(같은 묶음, 마진 1.31%) > 서구158.2·동구154.6(같은 묶음, 마진 2.28%)(중구 값은 README 04-3 절 「음식/만명」과 소수점까지 일치, 재확인 완료. 대덕-서구 사이 마진은 4.35%로 역시 4~6% 구간 — 경계도 뚜렷하진 않다). 소매 밀도(이 편에서 신규 계산, 원표 인구 기준): 중구170.7>동구155.5>대덕구·서구(거의 같다, 아래 참조)>유성119.2(최저). 유성구는 음식 업소 수(6,231, 전체 18,949 중 소매 4,433과 별개)로도 서구 다음 2위(README 04-3 절, 두 값의 차이가 1,118로 커서 마진 문제 없음) — 「가게가 적다」가 아니라 「소매만 적다」가 정확한 사실이다.

소매 밀도, 분모를 바꿔 재검사(rev4 CD3, rev10 CJ1로 표시값 1자리 통일). 인구 대신 그 구 전체 업소 수를 분모로 놓으면(=그 구 업소 구성비 중 소매 비중이 얼마인가), 순위가 달라진다: 동구28.9%>중구28.6%>대덕구26.2%>유성구23.4%·서구22.6%(아래쪽 묶음, 마진 3.42%)(python, shops_2026-06_clean_gu_category.csv의 전체·소매 업소수로 재계산 후 발화·slides와 같은 1자리로 반올림). 인구 분모로는 유성이 최저, 업소 구성비 분모로는 유성·서구가 함께 맨 아래다 — 분모가 바뀌면 순위 자체가 바뀐다는 것을 이 편이 이론에서 가르친 그대로 자기 결론에도 적용한 사례. 두 분모 모두에서 유성구는 하위권이라 「먹으러 오는 사람에 비해 사러 오는 사람이 적다」는 방향은 같다.

소매 밀도 임계 인구(rev18, 표시값 기준 통일). L154 축자 「대덕구 인구의 0.37%면 뒤집힙니다」의 산출 근거 — 대덕 소매 밀도(표시값 134.2)로부터 역산한 업소 수 134.2×163,823/10,000=2,198.5, 이 업소 수가 서구 표시값(133.7)과 같아지는 인구 = 2,198.5/133.7×10,000=164,435 → 원표 인구 163,823 대비 +612명(=163,823의 0.37%). 마진 0.37%(표시값 134.2/133.7 기준)와 임계 인구 0.37% 둘 다 같은 표시값 잣대로 재서 일치시켰다 — rev14 CN2(정밀값 기준 687명)·rev16 CP1(값은 그대로 두고 비율 표기만 0.40%로 오기)에서 두 번 어긋났던 자리.

§0.18-a 감사 범위 = 화면·발화에 오르는 몫 지표 전부(rev5 CE1, rev6 CF1·CF2로 문턱·범위 정정, rev10 CJ1로 계산 기준 정정). 마진 정의: (큰 값 − 작은 값) ÷ 큰 값 — 화면·발화·근거에 실제로 적힌 표시값(반올림값)으로 계산한다, 원본 CSV의 무한정밀 값이 아니다(예: 음식 밀도 중구-유성은 8.167÷175.732=4.65%가 아니라, 표시값 8.1÷175.7=4.61%). 표시값이 양 끝 다 있는 지표는 4종·16쌍(카드매출 일반음식점(원 분모)·음식 밀도·소매 밀도·소매 구성비, 각 4쌍) — 이 16쌍은 전부 표시값으로 다시 쟀다 — 계산한 마진%를 소수 2자리 기준으로 정밀값(무한정밀 원본)과 비교하면 16/16이 다르다, 소수 1자리 기준으로는 8/16이 다르다(반올림 자리가 성길수록 표시값과 정밀값의 차이가 자리 안에 묻힌다 — 마진은 표시값 원값에서 목표 자리로 한 번만 반올림해 비교한다, 이미 2자리로 반올림한 마진을 다시 1자리로 반올림하면 이중 반올림이 되어 어긋난다). 나머지 20쌍(공통26업종 분모·자동차정비/유지·의료기관/제약·카드매출소매·음식 구성비 — 5개 지표는 값이 하나 이하만 표시돼 있어 표시값 쌍 계산이 안 된다)은 그대로 정밀 계산. 문턱은 4% 미만 = 묶음(순서 단정 금지), 4~6% = 헤지(앞선다는 말은 하되 「뚜렷하다」류 단정은 안 함), 6% 이상 = 그대로(rev5의 「4% 이상은 그대로」는 근거 절 오기였다). 이 편에서 화면·발화·근거에 오르는 몫 지표는 10종(카드매출 4종: 일반음식점(원 분모)·의료기관/제약·자동차정비/유지·소매, 카드매출 1종 추가: 일반음식점(5구 공통 26업종 분모, rev6 CF2), 카드매출 1종 추가: 일반음식점(2019년 대조군, rev15 CO2) — 발화 L111·근거 L219·slides L74가 2019년 값도 인용하므로 대조군도 감사 대상이다(§0.18-a 「대본·슬라이드에 등장하는 모든 몫 수치」) / 상가업소 4종: 음식 밀도·소매 밀도·음식 구성비·소매 구성비), 구 5개 → 인접 쌍 각 4개 = 40쌍. 전수 재계산(python), 미달(4% 미만) 11쌍: | 지표 | 미달 쌍 | 마진 | 처리 | |---|---|---|---| | 카드매출 일반음식점(원 분모) | 서구–동구 | 3.33%(표시값 30–29÷30) | 표·발화 순서 나열을 묶음 표시(순위 번호 미사용) | | 카드매출 일반음식점(공통 26업종 분모, CF2) | 서구–동구 | 3.79% | 원 분모와 같은 자리 — L127 축자는 중구 값만 말해 순위 단정이 없다, 감사만 | | 카드매출 자동차정비/유지 | 서구–중구 | 1.27% | 순위 미언급(대덕구 10%만 발화) — 감사만 | | 음식 밀도 | 유성–대덕 | 1.31%(167.6–165.4÷167.6) | 「유성·대덕 같은 묶음」(rev4에서 이미 반영) | | 음식 밀도 | 서구–동구 | 2.28%(158.2–154.6÷158.2) | 「서구·동구 같은 묶음」(rev4에서 이미 반영) | | 소매 밀도 | 대덕–서구 | 0.37%(134.2–133.7÷134.2) | 「거의 같다」(rev3에서 이미 헤지) | | 소매 구성비 | 동구–중구 | 1.04%(28.9–28.6÷28.9) | 순위 미언급 — 감사만 | | 소매 구성비 | 유성–서구 | 3.42%(23.4–22.6÷23.4) | rev4 FAIL② — 「유성 4위, 서구가 가장 낮다」이중 단정을 「유성·서구가 아래쪽 묶음」으로 정정(위 문단) | | 음식 구성비 | 유성–대덕 | 1.91% | 이 편 어디에도 발화·표시되지 않는 지표 — 감사만 | | 음식 구성비 | 중구–동구 | 2.36% | 이 편 어디에도 발화·표시되지 않는 지표 — 감사만 | | 카드매출 일반음식점(2019년 대조군, rev15 CO2) | 서구–중구 | 3.55%(표시값 33.8–32.6÷33.8, 근거 표기값 33.80–32.61÷33.80 기준 3.52%, 정밀값 3.54% — 셋 다 4% 미만) | FAIL② — script L111 「서구가...중구를...앞질러 순서가 바뀝니다」 이중 단정을 「서구·중구가 비슷한 수준」으로 정정(위 근거 「연도 차이」 문단·slides L74), 판정표 범위에 2019 대조군이 빠져 있던 것이 원인 |

헤지(4~6%) 4쌍: 음식 밀도 중구–유성 4.61%(표시값 8.1÷175.7, script L146 「가장 높고」→「앞서는 편이고」, slides demo3 「(1위)」 삭제 — rev6 CF1) · 음식 밀도 대덕–서구 4.35%(표시값 7.2÷165.4, 근거 「두 묶음은 서로 구분된다」→「경계도 뚜렷하진 않다」로 정정 — rev6 CF1) · 카드매출 소매 유성–중구 5.74%(정밀값 — 표시값 없음)(자체 재확인, 이 편 어디에도 소매의 카드매출 비중을 발화·표시한 적이 없어 — 감사만, 고칠 자리 없음) · 카드매출 일반음식점(2019) 중구–동구 4.08%(정밀값)(자체 재확인, 발화에 순위 단정 없음 — 감사만, 고칠 자리 없음).

나머지 25쌍(6% 이상)은 순위·묶음 서술 없이 그대로 둔다(2019 대조군의 유성–서구 21.58%·동구–대덕 8.49% 포함).

유성구 「연구단지」 근거(rev1 CA6, rev3 CC3 상호명·건수 정정). 외부 URL 대신 저장소 상호명 실물로 뒷받침한다 — assets/data/daejeon/shops_2026-06_full.csv에서 유성구·상호명에 「연구원」이 들어간 행 40건(python csv 파서, quote-aware — 「연구」로 넓게 찾으면 연구소·연구원이 섞인 146건이라, 국가 연구기관을 가리키는 「연구원」으로 좁혔다). 행정동 전체 분포: 신성동20·온천1동7·전민동5·온천2동3·구즉동2·관평동1·노은3동1·학하동1. 업종대분류는 음식11·과학·기술11·소매9·교육6·수리·개인1·보건의료1·부동산1 — 음식만 있는 게 아니다. 상호명 실물 그대로 셋: 「한국전자통신연구원신용협동조하」(원본 오타, 「조합」이 아니라 「조하」로 끝난다) · 「후니드한국화학연구원카페」 · 「아라마크한국원자력연구원2」(전부 업종대분류 「음식」) — 국가 연구기관 구내에 입점한 실제 음식업소가 있어, 「유성구 연구단지·점심시간 도시락 수요」 프레임을 뒷받침한다.

계약 04-2의 원칙 문장("허용값은 데이터에서 뽑지 않습니다")과 같은 자리에서, 이 편은 좌표·허용값 대신 「1인 가구 데이터가 없다」는 결여를 그대로 남겼다 — market.md §3, assets/data/daejeon/README.md, author-c/probe-dj/3b/data/ 어디에도 가구원 수·1인 가구 비중 열은 없다(파일 헤더 전수 확인). 지어내지 않고 결여로 남긴다(§0.18).

Antigravity 원칙 문장·대처 경로 셋은 assets/contracts/COMMON.md §0.3 문구 그대로.

업종은 계약 05-1.md가 지정한 「카페/제과 계열 하나」 중 카페를 집필자가 골랐다 — 계약이 열어 둔 선택지 안에서 정한 것이라 §0.16 미확인으로 두지 않았다(상세는 notes.md).