ieojim

이어짐 — 위기가구 긴급복지 상담 도우미

녹음 한 번으로, 현장 상담을 예비판단부터 상담일지 초안까지 자동으로 이어주는 AI 솔루션. 현장에서 “기억에 의존해 사무실에서 다시 쓰던” 이중기록을 없애고, 상담원이 놓치던 공적 지원 연계를 돕습니다.


1. 팀 기본 정보

1.1 기관 정보

사단법인 인천내일을여는집 — 인천 지역 노숙인·위기가구의 자활과 긴급지원을 돕는 사회복지 기관. 거리 아웃리치, 노숙인 자활쉼터, 쪽방 상담 등 현장 밀착형 복지 서비스를 운영합니다.

1.2 팀 구성원 정보

구분 이름 소속·직책 AI 챌린지 해에서의 담당 역할
팀장 구흥모 사단법인 인천내일을여는집 법인사무국 · 사회복지사 기술 실행 — AI 도구 세팅·운영, 프로토타입 개발·배포
팀원 김선희 사단법인 인천내일을여는집 법인사무국 · 사회복지사 기획 — 무엇을 만들지 결정·검토, 문서·서류양식·발표

현장 실사용·측정은 기관의 거리아웃리치 담당 사회복지사 협력으로 진행했습니다(3.1 참고).


2. AI 솔루션

2.1 문제 정의

거리 아웃리치·쪽방 상담 등 현장 사회복지사는 대상자를 만난 자리에서 종이나 기억에 의존해 상황을 파악하고, 사무실로 돌아와 컴퓨터에 다시 입력합니다. 이 이중기록 때문에:

즉, 현장의 판단·기록·연계를 한 번에 돕는 도구가 없다는 것이 핵심 문제입니다.

2.2 AI 솔루션 소개

솔루션 개요

이어짐은 현장에서 휴대폰으로 상담 상황을 녹음(또는 타이핑) 하면, AI가 그 내용에서 긴급복지 판단에 필요한 항목(위기사유·거주·소득·재산·건강 등)을 자동으로 추출·정리하고, 단계별로 확실한 항목은 자동으로 넘어가며 불확실한 항목만 상담원에게 확인을 요청합니다. 끝까지 진행되면 긴급복지 예비판단 → 지원 연계 안내 → 상담일지 초안(한글 .hwpx) 까지 한 번에 만들어집니다. 상담원의 작업은 사실상 “녹음 버튼 한 번 + 확인”으로 줄어듭니다.

솔루션 사용 링크

구분 링크 또는 안내
솔루션 실행 링크 (제출 시 최신 라이브 링크 입력 — GitHub Pages, 로그인 없이 사용 가능)
소스코드 또는 결과물 원본 본 제출 저장소에 이어짐_v4.html(단일 HTML 파일) 업로드
데모 영상(선택) (선택 — 필요 시 추가)
테스트 계정(선택) 로그인 없이 판단·상담일지 생성 전 기능 사용 가능 (저장·이어하기만 로그인 필요)

설치 및 실행 방법

주요 기능

AI 활용 내용

구분 내용
사용한 AI 도구·모델 OpenAI — 음성 인식(whisper-1, 한국어 강제), 항목 자동추출(gpt-4o, Structured Outputs/JSON Schema), 상담일지 문장 다듬기(gpt-4o-mini)
AI가 담당하는 기능 ①음성→텍스트 변환 ②상담 텍스트에서 판단 항목 자동 추출·정리 ③상담일지 초안 문장화
AI를 활용한 이유 현장에서 사람이 항목을 일일이 입력·재기록하던 것을 “말하면 정리되는” 방식으로 바꿔 이중기록을 없애기 위해
AI가 없었다면 어려웠던 부분 비정형 상담 대화에서 필요한 항목만 뽑아 구조화하는 일 — 규칙 기반으로는 표현이 다양해 한계가 큼

솔루션 내 AI(위 표)와 별개로, 팀이 개발·업무 과정에서 활용한 AI:

(선택) AI 성능 개선 시도

  1. 음성 인식 한국어 고정 — gpt-4o 계열은 language 파라미터가 “힌트”로만 작동해 한국어 음성에 영어가 섞이는 문제가 있어, 디코더 단계에서 언어를 실제로 강제하는 whisper-1로 교체해 안정화.
  2. 항목 추출에 Structured Outputs(JSON Schema strict) 적용 — 단순 프롬프트로는 소득·재산 등 필드가 누락되곤 해서, 스키마로 응답 형식을 강제해 필드 누락 자체를 시스템 차원에서 차단. 불확실한 값은 반드시 null로 응답하도록 규정.
  3. 무음·짧은 입력 방어 — 녹음 무음 구간에서 Whisper가 같은 문장을 반복 출력하는 환각을 필터링하고, 너무 짧은 입력은 추출 API를 호출하지 않도록 처리.

2.3 이용자용 가이드

이용 전 준비: 스마트폰/PC 브라우저, 인터넷. 설치·로그인 불필요. 이용 방법:

  1. 링크를 연다 → 대상자 유형(거리 노숙인·쪽방 주민·가정폭력 피해자 등)을 고른다.
  2. 상황을 🎤 녹음하거나 입력창에 적는다. (녹음 없이 바로 진행도 가능)
  3. 화면 안내대로 이전/다음으로 단계를 확인·수정한다.
  4. 예비판단 결과 → 지원 연계 안내 → 상담일지 초안이 자동 생성된다.
  5. 상담일지(.hwpx)를 저장한다.

유의사항:

2.4 관리자용 가이드

작동 구조: 단일 HTML(프론트) + Supabase(백엔드).

사용 기술·외부 서비스: HTML/JS(무프레임워크), Supabase(Auth·Postgres·Edge Functions·서울 리전), OpenAI API, GitHub Pages(정적 호스팅).

개발 과정(요약): 챗봇형 UI → 실제 판정엔진 통합 → 로그인·상담 저장 → 사유서/상담일지 hwpx 양식 확정 → 단계형(페이지 넘김) UI → 녹음 STT → AI 자동 항목 추출 원샷(v4). 상세 개발 과정은 저장소의 이어짐_발표대본_개발과정.md 참고.

운영 전 준비: Supabase 프로젝트(서울 리전) + Edge Function에 OpenAI 키 설정(대시보드 Secrets), RLS 활성화. 키는 반드시 서버 환경변수로만 보관하고 저장소에 넣지 않습니다. 운영 중 유의: 개인정보는 가명 입력 원칙, 민감 스냅샷은 암호화 저장(pgcrypto), 상담원별 접근은 RLS로 본인 것만.


3. 임팩트 계획서

3.1 현장 적용 결과

적용 개요: 거리 아웃리치 담당 사회복지사가 실제 현장 상담에 이어짐을 사용(비로그인 모바일). 도입 전 현재 업무를 baseline으로 측정한 뒤, 도입 후 같은 지표를 재측정해 비교.

도입 전(baseline, 측정 완료):

도입 후(측정 진행 중):

⚠️ 현장 실사용 데이터 수집 중 — 확보되는 대로 아래를 채웁니다.

3.2 시행착오와 개선

3.3 향후 계획 및 임팩트 확산


4. 제출 전 최종 점검

4.1 외부 지원 범위

참여자 직접 수행하거나 지원한 내용
문제 정의·기획, 판정 기준·서류양식 확정, 현장 실사용·측정, 발표·문서 작성
코치 데이터·보안 방향(Supabase 서울리전·RLS·암호화·해시토큰화), UI(페이지 넘김)·STT 안정화, 협업(기능명세·QA) 자문
외부 전문가·개발자 코드 구현은 AI 코딩 도구(Claude)를 활용해 팀이 진행
기타 AI 도구 사용료 지원(대회 지원 범위 내)

4.2 외부 자료 및 오픈소스 사용 내역

자료·프로그램명 사용 목적 출처 라이선스
Supabase (JS 클라이언트/플랫폼) 인증·DB·Edge Function 백엔드 supabase.com Apache-2.0(클라이언트) / 서비스
OpenAI API (whisper-1, gpt-4o, gpt-4o-mini) 음성인식·항목추출·문장화 openai.com 상용 API(약관 준수, 데이터 미학습 옵션)
GitHub Pages 정적 호스팅 github.com 서비스

4.3 체크리스트

4.4 개인정보 및 보안 확인

4.5 개인정보·AI 윤리 항목

아래 개인정보·AI 윤리 5개 항목에 대한 답변을 작성해 주세요.

1) 어떤 개인정보를 모으고, 어디에 쓰고, 어디로 보내는지 설명해 주세요. (예: 이름·연락처·이용 기록 등 수집 항목, AI 모델·외부 API로 전송하는 경우 포함)

상담 내용(음성/텍스트)에서 위기사유·거주지·가구원수·소득/재산·건강상태 등 긴급복지 예비판단에 필요한 항목을 다룹니다. 녹음 파일은 서버(Supabase Edge Function)를 거쳐 OpenAI Whisper(STT)로 전송만 되고 서버에 저장되지 않으며, 변환된 텍스트는 OpenAI(gpt-4o 계열)로 전송해 항목 추출·상담일지 문장 다듬기에 사용합니다. 로그인 시에만 이메일·표시 이름·소속 기관을 Supabase Auth·DB에 저장하며, 로그인 없이도 판단·상담일지 생성 기능은 100% 동일하게 동작합니다(저장·이어하기만 로그인 필요). 대상자 이름은 가명·이니셜 입력을 원칙으로 안내하고, 그럼에도 이메일·주민번호·카드번호·전화번호처럼 형식이 뚜렷한 개인식별정보 4종은 서버 전송 전 브라우저 안에서 자동으로 제거되며, 이름·지명 등 자유 형식 정보는 상담원이 “가명화 도우미”에서 직접 가릴 수 있습니다. 다만 음성 녹음 자체는 텍스트로 변환되기 전에 전송되므로 위 자동 마스킹이 적용되지 않는 사각지대가 있습니다 — 이를 정직하게 인지하고, 녹음 화면에 “대상자의 실명·주민번호·주소·연락처는 말로 하지 마세요(이름은 ‘어르신’·’A씨’로)”라는 안내를 눈에 띄게 띄워 현장에서 먼저 줄이고 있으며, 국내·온디바이스 STT 도입을 다음 단계 과제로 두고 있습니다. 저장이 필요한 경우(로그인 시 이어하기)에도 상담 스냅샷은 서버키로 암호화(pgcrypto)해 보관하고, RLS(행 수준 보안)로 본인 상담원만 열람할 수 있게 접근을 제한합니다.

2) 개인정보를 수집·활용했다면, 이용자의 동의를 받았는지 또는 동의 없이 써도 되는 근거가 무엇인지 설명해 주세요. (예: 회원가입 시 동의 받음/ 별도 동의 없이 공개된 정보만 사용함 등)

별도의 동의 체크박스는 받지 않습니다. 개인정보보호법상 “계약 이행을 위한 처리위탁” 근거로, 사전에 상시 공개된 개인정보 처리방침에 국외이전(OpenAI 전송) 사실·목적·방법·보유기간을 명확히 고지하면 별도 동의 없이도 적법하다는 점을 확인하고 이에 따라 구현했습니다. 서비스 화면에는 “🔒 개인정보 처리방침” 버튼이 항상 노출되고 최초 1회는 자동으로 안내가 뜨며, 대상자 본인에게는 상담원이 상담 시작 전 구두로 녹음·AI 처리 사실을 안내하도록 처리방침에 안내 문구를 포함했습니다.

3) 개인정보를 어떻게 처리하는지, 그리고 AI를 사용한다는 사실을 이용자에게 어떻게 알리는지 설명해 주세요. (예: 서비스 화면에 “AI가 생성한 답변입니다” 표시, 개인정보처리방침 페이지 등)

위 2)의 개인정보 처리방침(국외이전 안내 포함)을 서비스 내 상시 접근 가능하게 배치했습니다. 화면 자체도 “AI 인식 결과 확인”, “AI 초안 만들기”처럼 AI가 처리한 단계임을 화면 이름 그대로 드러내는 구조로 설계했습니다 — 녹음 직후 사람이 변환된 텍스트를 직접 확인해야만 다음 단계(AI 항목 추출)로 넘어가고, AI 인식이 끝나면 무엇을 인식했고 무엇을 못 했는지 별도 확인 화면에서 보여줍니다. 예비판단 결과 화면 최상단에는 “⚠ 이 판단은 예비판단이며, 최종 지원 여부는 담당 기관의 공식 심사를 따릅니다”라는 문구를 항상 표시합니다.

4) AI가 틀리거나 부적절한 답을 했을 때, 사람이 확인하고 고칠 수 있는 절차가 있는지 설명해 주세요. (예: 관리자 검수 화면, 신고 기능, 응답 로그 모니터링 등)

소득·재산 등 예비판단 자격을 좌우하는 법적 핵심 항목 4개는 AI가 전부 자동으로 채워도 절대 자동으로 다음 단계로 넘어가지 않고, 상담원이 화면을 직접 보고 확인 버튼을 눌러야만 진행되도록 강제했습니다. 위기사유·거주지·건강상태 등도 AI가 불확실하다고 판단한 항목이 하나라도 있으면 그 화면에서 멈추고 사람이 직접 입력·확인하게 되어 있어, 전체 항목이 AI 판단만으로 자동 확정되는 경로가 없습니다. AI가 정리한 상담일지 초안 문장도 상담원이 화면에서 자유롭게 고쳐 쓸 수 있는 입력창에 담기며, 다운로드 전 항상 사람이 열람·수정합니다. (한계) 여러 상담원의 AI 응답을 모아 보는 별도 관리자 검수 화면이나 신고 기능은 아직 없고, 현재는 담당 상담원 본인이 매 건 직접 확인하는 구조입니다 — 다음 단계 과제로 남겨두었습니다.

5) AI 사용으로 이용자가 실제로 피해를 볼 수 있는 상황을 어떻게 막고 있는지 설명해 주세요. (예: 잘못된 의료·법률 정보 제공 방지, 생성형AI서비스 학습데이터로 사용되지 않도록 설정 등)

AI가 의료·법률적 확정 판단을 하지 않도록 “예비판단”이라는 표현과 면책 문구를 결과 화면에 항상 노출합니다(실제 지원 여부는 담당 공무원·기관의 별도 심사). 음성 인식 환각(할루시네이션) 방지를 위해, Whisper가 무음·저신뢰 구간에서 “시청해주셔서 감사합니다” 같은 엉뚱한 문장을 만들어내는 사고가 실제로 있었고 이를 정규식 패턴과 신뢰도 점수(no_speech_prob, avg_logprob) 기준으로 걸러내는 안전장치를 서버에 적용했습니다. 소득·재산 값을 AI가 근거 없이 “0원”으로 지어내는 문제에도, 원문에 “없다/없음” 같은 명시적 표현이 없는데 4개 항목이 전부 0으로 나오면 지어낸 값으로 보고 미확인 상태로 되돌리는 로직을 추가했습니다. OpenAI API로 전송하는 데이터는 OpenAI의 API 데이터 정책상 기본적으로 모델 재학습에 사용되지 않습니다(별도 옵트인 없이는 API 호출 데이터를 학습에 쓰지 않는다는 것이 OpenAI의 공개 정책입니다). 아울러 현재 STT·AI 기능 호출에 로그인 여부와 무관하게 횟수 제한이 없어 키가 유출되면 무제한 호출이 가능한 상태임을 자체 점검(적대적 리뷰)으로 발견했고, 로그인 세션 토큰 우선 사용(완료) + 시간당 호출 횟수 제한(대시보드 적용 진행 중)으로 대응하고 있습니다. 또한 사용자·상담 텍스트가 화면에 표시되는 경로 전반에 대해 XSS(교차 사이트 스크립팅) 취약점 감사를 직접 수행해 악용 가능한 스크립트 주입 경로가 없음을 확인했고, 입력값 이스케이프를 한 단계 더 강화하는 심층 방어까지 적용했습니다. 이처럼 완성된 상태를 주장하기보다, 팀이 스스로 공격자 관점에서 점검(적대적 리뷰·보안 감사)하고 발견한 항목을 해결했거나 로드맵으로 공개하는 과정 자체를 안전성의 근거로 두고 있습니다.