목표와 철학
WHY이 엔진의 존재 이유는 하나다 — 아이를 이해해서, 아이가 '심리스하게' 먹을 줄 아는 식재료·음식의 폭을 넓히는 것. 결핍을 채근하거나 안 먹는 걸 들이미는 게 아니라, 지금 잘 먹는 것에서 자연스럽게 한 발 옮기게 한다.
lib/coachRecos.ts·lib/cookingMatrix.ts)의 한계 진단을 붙인 것이다. 개발은 아직 — 설계 합의용 문서.
이론 지도 — '다리(bridge)'는 어디서 왔나
RESEARCH'잘 먹는 음식에서 닮은 새 음식으로 다리를 놓는다'는 같은 메커니즘이 임상·학회·상업·정부에 걸쳐 독립적으로 나타난다. 우리 엔진은 그 메커니즘의 데이터 조작화다.
🌳 계보 — 같은 다리, 다른 채택 경로
📐 푸드체이닝 4축 — "한 번에 한 축만 바꾼다"
수용 음식 → 목표 음식 사이에서 한 번에 한 속성만 변경한다(둘 이상 바꾸면 novelty 과부하). Fraker 우선순위 = 질감 1순위.
출처: Fishbein·Cox·Fraker 외, Nutrition in Clinical Practice 21(2):182-184 (2006, PMID 16556929) · 단행본 Food Chaining (2007, ISBN 9781600940163) · 임상 4축 = Jenny Friedman / Northern Speech Services(core diet·flavor mapping/masking·transitional flavors).
🪜 노출 위계 (SOS) — "안 먹어도 만지면 전진이다"
Toomey의 SOS Approach. 거부 음식을 견딤→먹음 6단계(아래 32세부)로 천천히. 우리 엔진의 '진척'을 이진(먹었다/안먹었다)이 아니라 단계로 인정하는 근거.
출처: Toomey & Ross, ASHA Perspectives on Swallowing 20(3) (2011) · Schoen et al., Children 12(3):373 (2025, feasibility). ⚠️SOS 32단계 표는 © Toomey — 직접 복제 금지, 한국어 개념 풀이로만 재구성.
🔁 반복 노출 & 🤝 관계(책임 분담)
반복 노출 — "한 번 거부가 끝이 아니다"
새 음식은 친숙해지면 받아들여진다. 하루 1식품 8~10일 노출 시 수용도↑(USDA NESR 2019, Moderate 근거). AAP '10회 이상', 캐나다 '최대 30회'. ⭐핵심: 수용도는 같은 식품군 내로만 전이되고 다른 군으로는 안 넘어간다 — 바로 이게 '닮은 음식 사이' 다리만 작동하는 이유. Tiny Tastes RCT(UCL 200가정): 14일 한 입+스티커 → 선호 61%↑·섭취 3배.
책임 분담 (Satter DOR) — "강요는 역효과"
부모는 무엇을·언제·어디서, 아이는 얼마나·먹을지 결정. 미국 연방(Head Start §1302.44)이 의무화한 표준. 강요먹이기는 섭취량↓·자기조절 손상(Galloway 2006 랜드마크). → 우리 코칭 톤가드(채근 금지·'부모가 먼저')의 학술 근거.
출처: USDA NESR(NBK582166) · Cooke/UCL Tiny Tastes(2013) · Satter, JADA 1986;86(3) · Galloway et al., Appetite 2006(PMID 16626838). neophobia 발달곡선: 약 20개월 발현 → 4세 전후~6세 정점 → 감소(Nutrients 2024).
실증 현황 — 정직하게: 무엇이 탄탄하고 무엇이 논쟁인가
VERIFIED엔진을 '검증된 임상 프로그램'이라 과장하면 신뢰를 잃는다. 근거 강도를 정직하게 구분하고, 마케팅·투자 문서의 톤도 여기에 맞춘다.
| 주제 | 근거 강도 | 핵심 사실 (검증 반영) |
|---|---|---|
| 반복 노출 효과 | 강 | 8~10일 노출 시 수용도↑(USDA NESR, Moderate). 같은 식품군 내만 전이 = 다리 설계의 직접 근거. Tiny Tastes RCT 선호 61%↑·섭취 3배. |
| 강요먹이기 역효과 | 강 | 압박 시 섭취↓·자기조절 손상, 성인기까지 악영향(Galloway 2006 랜드마크). 채근 금지 로직의 학술 뒷받침. |
| 반응형 수유 (Satter DOR) | 강·표준 | 정부·학회 best practice·연방 의무 채택. sDOR.2-6y 측정도구 타당화(2020). ⚠️'FDA 승인'식 강한 인증은 아님 → 'best practice 인정'으로 표기. |
| neophobia 발달곡선 | 강 | 20개월 발현→4~6세 정점→감소. '4세 전후 정점=정상' 안심 멘트의 근거. |
| Food Chaining 효능 | 중·논쟁 | 임상 현장 광범위 사용·이론적 근거 탄탄. 단 단독 효능 RCT 부재. 2024 검토(Breda et al.)는 행동개입을 최강 근거로 보고 체이닝은 '정의'만. → "검증된 임상 프로그램" 단정 금지, "국제 임상 현장에서 쓰이는 접근". |
| SOS Approach 효능 | 약·논쟁 | 효능 RCT 부재. 2025 연구는 feasibility/pilot(n=12)이지 효능 입증 아님. 비교 RCT(Peterson 2016)에서 수정형 SOS는 ABA 대비 표적섭취 증가 실패(단 n=6). → '효능'이 아니라 '충실도·측정도구 검증'으로 표기. |
| 조리법 변형의 효과 | 조건부 | 같은 음식 반복→권태(food jag) 예방엔 유효하나, "조리법 바꾸면 먹는다"는 아이마다 다름(Poelman: 조리법보다 식감/아삭함이 결정). → "한 형태 거부 ≠ 식재료의 끝, 형태 바꿔 재노출" 프레임으로만. |
현행 추천 원리 — 지금은 어떻게 추천되나
coachRecos.ts신규 모듈을 얹기 전에 지금 무엇이 돌고 있는지부터. 핵심 철칙 = "무엇을 추천할지는 코드가 결정론으로 정하고, 문장만 LLM이 쓴다." (괴식·환각 0 실적의 토대)
🔁 파이프라인 — 재료=결정론, 문장=LLM
favIngFreq — 집·거부없음·기관급식 제외 P10) + 영양 거울(식품군별 결핍 신호 green/yellow/red). meal_logs에서 매일 계산.buildIngredientPool(주간 5개 식재료 풀·supply/challenge/mixed 모드) → 일일 회전(최근 5일 제외)으로 오늘의 추천 식재료. buildRecoFacts가 그 식재료의 또래 인기 음식 이름 + 잘 먹는 것과의 궁합/사촌을 테이블에서 뽑아 사실 블록 생성.🎯 거울 추천의 5전략 — pickFoodReco
오늘의 추천 식재료(회전)를 아이의 상태에 따라 5가지 관계 프레임 중 하나로 — 전부 테이블 근거(괴식 0).
cookingMatrix는 일반 조리 안내일 뿐 '이 아이가 익숙한 기법'을 모름). (2) 온도 축 부재. (3) '몇 번째 노출인가' 카운팅 부재 → 8~10회 반복 효과를 못 살린다. (4) 진척이 이진(먹음/안먹음)이라 SOS 단계 전진(만짐·냄새)을 인정 못 한다. (5) 사촌이 수기 175쌍이라 안 늘어난다. → 신규 모듈은 이 다섯을 메운다.
⭐ 신규 모듈 설계 — 푸드체이닝 개인화 모듈
전부 결정론·LLM 0아이의 상태를 벡터로 읽고, 한 번에 한 축만 바꾼 '다음 걸음 후보'를 랭킹한다. 출력은 §5의 두 방식으로 흐른다. 핵심 = 발제의 2축 + 리서치가 짚은 빈 신호 4종.
🧬 ① 아이 상태 벡터 — "아이를 이해한다"
favIngFreq 상위(집·거부없음·기관급식 보정). 다리의 출발점.favMenu top8. 실제로 완식한 음식.methodOf()로 분해 → {볶음·구이·전…}. 이 아이가 편한 조리 형태.🌉 ② 2축 확장 — "한 번에 한 발만"
methodOf(menu) 추출기 하나뿐.🔀 두 트랙 — 결핍 보급(supply) ↔ 다양성 확장(challenge)
추천은 '결핍 직격'만이 아니라 '잘 먹는 것에서 네트워크로 뻗기'도 필요합니다. ②추천엔진은 항상 두 트랙 후보를 함께 생성하고, 주간이 밸런스를, 일간(뇌)이 회전을 정합니다.
buildIngredientPool supply 모드(red 2+).weekly_plans.reco_balance — 영양 심각도로 supply:challenge 비율(예: red 2+ → 0.7:0.3 / 균형 → 0.3:0.7). 일간 회전(전술) = 뇌 decision.recoTrack — 어제와 다른 트랙으로 다양성 보존. ⚠️ 타깃은 유지, 경로만 번갈아(결핍 방치 금지 — 같은 콩류라도 오늘 직접보급/내일 사촌다리). 흐름: ②(두 트랙 후보·태그) → ①뇌(밸런스+어제트랙→오늘 택1) → ⑥손.🍲 ③ 메뉴 단위 추천 — 조리법 대신 '실존 메뉴 이름'
우리는 조리법을 지어내지 않는다(지어내면 괴식). 대신 또래(기관)가 실제로 자주 먹는 실존 메뉴 이름만 권하고, 엄마가 검색·조리한다. 메뉴엔 다른 식재료도 들어 있어 한 메뉴를 먹으면 그 안의 식재료를 자연스럽게 경험 → 폭이 넓어진다.
popularDishesFor — 결핍 식재료의 또래 인기 메뉴 1~2개(이미 편지에 들어감).learned_menus를 웹 식재료 추정으로 분해해 만든 공출현(lift)·kit-dish-matrix cells가 게이트. 우리가 줄 건 검증된 '음식 이름', 조리 상세는 엄마가 검색(도감 보조).🌡️ ④ 신규 신호 4종 — 리서치가 짚은 빈칸 메우기
🛡️ ⑤ 안전 게이트 — 후보가 통과해야 할 하드 바닥
- 연령별 질식 형태(2025 식약처): 2세 이하 떡류 미제공·방울토마토/포도 세로 4등분+껍질·견과 {분말3세·잘게5세·통째6세}·생당근 익히거나 채썰기.
- 8대 알레르겐 프로필 매칭 → 해당 노드 추천 제외/대체. 꿀 만1세 금지(보툴리누스).
- 괴식 차단: 후보는 전부 검증 테이블(
cookingGroups·인기 음식·사촌/궁합) 안에서만 — 목록 밖 조합 생성 금지. 음성 lift(우연 이하) 자동 차단. - 요구 과부하 방지: 2축이 매일 번갈아 나오면 그것도 채근 → 주간 포트폴리오(food 유닛 주에만)·노출 주기(격일) 준수. firstServe 전 압박 금지(Galloway).
출력 전달 — 같은 엔진, 두 갈래
DELIVERY엔진이 뽑은 '오늘의 다음 걸음 후보'는 두 곳으로 흐른다. 둘은 배타적이지 않다 — 편지가 방향을 주고, 도감이 상세를 펼친다.
ⓐ 코칭 편지 산입
bridgeFacts를 C(익숙기법) 필터로 정밀화.ⓑ 편지 → 도감 맞춤 레시피
cookingGroups[애호박]을 C(익숙기법) 우선 정렬 → "오이로 익숙한 전부터" 맨 위. 노출 진척·SOS 단계·안전 형태(잘게/익혀) 표시.데이터 자산 — 이미 가진 것 vs 만들 것
8할 보유신규 수집은 거의 없다. 엔진의 8할은 이미 있는 데이터를 연결만 하면 된다.
| 필요한 것 | 상태 | 가진 것 / 만들 것 |
|---|---|---|
| 잘 먹는 식재료/메뉴 판단 (F·M) | 보유 | 크론 favIngFreq·favMenu (기관급식 제외 P10 보정) |
| 식재료 사촌 / 궁합 (bridge·pair) | 보유 | food-graph.json bridge 175(수기) + pair 362(레시피 4,727 동시출현) · strongPairsOf/verifiedCousinsOf |
| 식재료 × 조리기법 | 보유 | cookingMatrix(한식 실측 + 양/중/일 cuisine 그룹) — 도감 노출 중 |
| 익숙 조리기법 집합 (C) | 신규·소형 | methodOf(menu) 추출기 — 메뉴명 접미 결정론 파싱(구이·볶음·찜·전·조림·국/탕·무침, 튀김 제외). learned_menus 9,988로 검증 |
| 노출 카운터 (X) | 보유→집계 | (자녀×식재료) 시도 횟수 — meal_logs에 이미 있는 신호를 카운팅만 |
| SOS 단계 (S) / 거부 원인 | 보유→분류 | 거부 boolean → 원인 4분류(맛/식감/환경/양) + 노출 행동 라벨 |
| 사촌 자동 확장 (수기→데이터) | 로드맵 | 영양 코사인(nutrient-map 226) + 감각 7축 라벨 → 후보 자동, 사람은 검수만 (data-arch Tier2) |
| 온도 축 | 신규 | 식재료별 '찬/실온/데움' 변형 가능 플래그(소형 표 정규화) |
| 안전 가드 | 보유 | 질식 prep·매운 제외·괴식 차단·8대 알레르겐 — 연령 컷만 보강 |
methodOf(menu) 추출기 + 2축 후보 함수 + 온도 플래그 표 정도. 나머지는 이미 쌓인 1차 신호를 버리지 말고 연결하는 일이다(data-arch §6 '즉시' 로드맵과 동일).구현 로드맵 — 전부 additive, 단계별 검증
PHASED기존 코칭 v2/도감을 깨지 않고 얹는다. 작은 코어부터, 라이브 영향 없는 순서로.
methodOf(menu) 추출기(결정론·learned_menus 검증) + 2축 후보 함수 expandCandidates(F,M,C) + 테스트. 순수 함수 — 라이브 무영향.cookingGroups를 C 우선 정렬 + 노출 진척 표시. PersonalBridge 확장.bridgeFacts에 C 필터 + 노출 진척 멘트. v2/v3 카나리아 안정 후(변수 줄이기). 아린 카나리아 → 모니터 → 전자녀.리스크·금지선
GUARDRAIL- 근거 어조 — "검증된 임상 프로그램" 단정 금지(효능 RCT 부재). "국제 임상 현장에서 쓰이는 접근" 수준. "5→20.5개" 수치 영구 금지(날조).
- 조리법 만능 금지 — "바꾸면 먹어요"(X) → "한 형태 거부가 그 식재료의 끝이 아니에요"(O). 효과는 조건부(Poelman).
- 진단/처방 분리 — ARFID/PFD 임상 정의와 명확히 분리. 위험신호 시 소아과 상담 게이트. ICFQ/7문항은 '진단 아닌 점검 신호'로만.
- 괴식·질식 — 후보는 전부 검증 테이블 안에서만. 연령 컷(2세 이하 목록) 필수.
- 요구 과부하 — 2축 매일 번갈이도 채근. 주간 포트폴리오·노출 주기(격일·권태 방지) 준수.
- 저작권 — Satter sDOR는 무수정 한국어 재배포 가능(수정 금지). SOS 32단계 표는 © Toomey 복제 금지 → 한국어 개념 풀이로만 재구성.
- 푸드브릿지 ≠ 푸드체이닝 — 한국 푸드브릿지(집단 단계노출 교육)와 Fraker 체이닝(개별 유사음식 연쇄)은 별개. 인용 시 혼용 금지.
부록 — 푸드체이닝 실용 적용문서 모음
검증 URL실제 적용 가능한 워크시트·핸드아웃·근거 논문. 웹 정독·적대 검증을 거친 것 위주(미검증은 표시).
| 문서/툴 | 유형 | 무엇을 주는가 | 밀프레드 적용 | URL |
|---|---|---|---|---|
| Food Chaining for ARFID (BCH 4p 워크시트) | 워크시트 | 좋아하는 음식 10개·질감/맛 선택·나만의 체인 4칸·미각 1~10 점수·10~20회 노출 | '나만의 푸드체인 만들기' 기능 직접 청사진. 미각 점수를 로깅 필드로 | youngwomenshealth.org |
| How To Use Food Chaining (Your Kids Table 3p) | 부모 핸드아웃 | 부모용 3단계 실행법 + 실제 체인 예시 | 코칭편지 '잘 먹는 것에 결핍 섞기' 카피 골격 | yourkidstable.com |
| Satter DOR (sDOR) 2025 | 임상 가이드 | 연령별 부모/아이 역할 분담 · '반복적 중립 노출'. 무료 복제·수정 금지 | 코칭 톤가드 표준 근거. 무수정 한국어 핸드아웃 재배포 가능 | ellynsatterinstitute.org |
| Food Chaining (NHS Somerset 2p) | 임상 가이드 | 감자튀김→매시드 8단계 체인 + 시각 차트 + '강제 아님·1개씩·10~20회' | '제시 방법만 살짝 바꾸기' 마이크로 스텝을 '오늘의 작은 행동' 카드로 | patientwebinars.co.uk |
| SOS 부모용 소개 (32단계) | 임상 가이드 | 6단계×32세부 위계·'범위가 양을 견인'·또래 모델링. © 표 복제 금지 | 진척을 6단계 위계로 매핑(비이진). 표 복제 말고 개념 재구성 | sosapproachtofeeding.com |
| Tiny Tastes (RCT 근거) | 연구 | 14일 한 입+스티커 RCT(선호 61%↑·섭취 3배). 실물 팩은 유료 | '오늘의 한 입' 챌린지 + 14일 트래커 + 비음식 보상 | ucl.ac.uk |
| 10 Tips for Picky Eaters (AAP) | 부모 핸드아웃 | 'food bridges' 공식 용어 · '10회 이상 맛보기' · 압박 금지 | 추천엔진 학술 백킹. 'food bridges=미국 학회 공식 용어' 정통성 | healthychildren.org |
| Repeated Exposure SR (USDA NESR) | 연구 | 8~10일 노출 수용도↑(Moderate)·같은 식품군 내만 전이 | 사촌/푸드그래프 엣지 설계 정당화 · 노출 임계(8~10+) 근거 | ncbi.nlm.nih.gov/NBK582166 |
| Finish your soup (강요 역효과) | 연구 | 압박 시 섭취↓·자기조절 손상(Galloway, Appetite 2006) | '채근 금지·firstServe 전 압박 금지'의 학술 뒷받침 | pubmed · 16626838 |
| ASD 식품선택성 개입 검토 (Breda 2024) | 연구 | 행동개입=강·food chaining 정의만·SysD 근거 부재 | 투자/효능 문서에서 '체이닝 단독 RCT 제한적' 정직 인용 | doi.org/10.1017/S0954422424000052 |
| SOS Feasibility Study (Schoen 2025) | 연구 | 충실도 도구·32단계 코딩·VAS/PSI(RCT 아님·feasibility) | '효능'이 아니라 '충실도·측정도구 검증'으로 정확 표기. 진척 측정 설계 참고 | pmc · PMC11940901 |
| 친해지자 채소야 (푸드브릿지 4단계) | 연구(KCI) | 14종 채소×4단계(놀이I·II/요리I·II) 활동·효과(저연령·편식군 유의) | 키트 '식재료 1종→4단계 활동' 콘텐츠 골격 | kjcn.or.kr |
| USDA Two-Bite Club | 부모 핸드아웃 | '두 입씩' 그림책 + 인증서 + MyPlate 색칠(무료) | '한 입 챌린지' 인증서·스티커 형식 차용 | fns.usda.gov |
| Feeding Matters ICFQ (6문항) | 스크리너(©) | 0-36개월 6문항 정상 편식 vs PFD 구분 | 온보딩 '점검 신호'(진단 아님). 한국어 번역 라이선스 협의 가치 | feedingmatters.org |
| Solid Starts | 웹/DB | 400+ 음식 자르는 법·질식/알러지/연령 안전 DB | 도감 영유아 안전 스크린(질식 prep·꿀/반숙 금지) 벤치마크 | solidstarts.com |
| BetterBites (Kids Eat in Color) | 웹(유료) | Bridging 기반 프로그램·감각 특성별 음식 목록 | 콘텐츠 구조·도감 필터(질감/색/맛) UX 벤치마크 | kidseatincolor.com |
| 어린이급식관리지원센터 포털 | 정부 | 교육자료·카드뉴스·식단/운영 지침서 | 도감/코칭 가이드의 '식약처 공식 근거' 출처표기 | dietary4u.mfds.go.kr |