← 포트폴리오 목록

기부자 뉴스 수집 & AI 판별 대시보드

재단 기부자 900명을 대상으로 매일 뉴스를 자동 수집하고, LLM 기반 동명이인 판별·요약, 기부 제안 타이밍 점수화를 통합한 내부 CRM 대시보드를 설계·구현합니다.

서비스 타입Web
업종모니터링
기간약 2개월
기술 스택
React 18TypeScriptRechartsReact QueryPython 3.11FastAPICeleryRedisPostgreSQL 15Claude APINaver Search APIDocker Compose
주요 기능
  • 통합 모니터링 대시보드
  • 기부자 뉴스 수집 & LLM 판별
  • 골든 타이밍 점수화 & 알림
  • 데이터 정합성 검증 & 로그

프로젝트 개요

기간: 약 2개월범위: 개발, 디자인, 기획

재단 기부자 900명을 대상으로 매일 뉴스를 자동 수집하고, LLM 기반 동명이인 판별·요약, 기부 제안 타이밍 점수화를 통합한 내부 CRM 대시보드를 설계·구현합니다. 담당자 10명이 효율적으로 기부자 접근 시점을 파악할 수 있도록 전체 파이프라인을 단일 UI로 통합합니다.

작업 범위

  • 통합 모니터링 대시보드: 수집된 뉴스 건수, 판별 대기 건수, 오늘의 골든 타이밍 기부자 현황을 한눈에 파악할 수 있는 메인 화면입니다
  • 기부자 뉴스 수집 & LLM 판별: 기부자별로 수집된 뉴스 목록과 LLM이 판별한 동명이인 여부, 기사 요약을 확인하고 담당자가 검토·승인할 수 있는 화면입니다
  • 골든 타이밍 점수화 & 알림: 기부자별 최근 뉴스 감성·빈도·이슈 유형을 종합해 기부 제안 적합 시점 점수를 산출하고, 고점수 기부자를 우선 노출합니다
  • 데이터 정합성 검증 & 로그: 내부 DB 기부자 레코드와 수집 뉴스 매핑 오류, 중복 항목, LLM 판별 실패 건을 추적하고 관리자가 수동 수정할 수 있는 화면입니다

주요 업무

  • 통합 모니터링 대시보드 화면: React + Recharts로 실시간 집계 위젯, 타이밍 점수 분포 차트, 최근 수집 뉴스 피드를 구성하며
  • 기부자 뉴스 수집 & LLM 판별 화면: Python Celery Beat로 매일 정해진 시각에 Naver/Google News API 크롤링을 실행하고
  • 골든 타이밍 점수화 & 알림 화면: 수집 뉴스의 감성 분류(긍정/중립/부정), 이슈 유형(수상·임명·경영 성과 등)
  • 데이터 정합성 검증 & 로그 화면: 수집·판별 각 단계별 처리 결과를 audit_log 테이블에 기록하고, 이상 건(매핑 실패·API 오류·중복 감지)을 별도 큐로 분리해 관리자
기부자 뉴스 수집 & AI 판별 대시보드
요구사항 정의

프로젝트 핵심 과제

프로젝트 진행 시 해결한 핵심 기술 과제입니다.

동일 인물 확인

LLM 호출 비용과 판별 정확도 사이의 균형을 맞추는 구조화 프롬프트 설계

900명 기부자 대상 매일 정기 크롤링 시 API 요청 한도·속도 제한 내에서 안정적 수집 파이프라인 유지

내부 DB 기부자 레코드와 뉴스 수집 결과 간 매핑 오류를 자동 감지하고 담당자 검토 큐로 분리하는 데이터 정합성 워크플로 설계

구현 내용

핵심 기능 상세

핵심 기능 1

통합 모니터링 대시보드

수집된 뉴스 건수, 판별 대기 건수, 오늘의 골든 타이밍 기부자 현황을 한눈에 파악할 수 있는 메인 화면입니다.

  • React 18 + TypeScript 컴포넌트 기반 위젯 레이아웃
  • Recharts 도넛·바 차트로 타이밍 점수 분포 시각화
  • FastAPI WebSocket / 폴링으로 실시간 수집 상태 반영

FastAPI 비동기 엔드포인트와 React Query를 결합해 30초 주기 자동 갱신을 구현하고, 대규모 기부자 집계 데이터를 서버 사이드 집계 후 전달하는 구조를 설계합니다.

통합 모니터링 대시보드
핵심 기능 2

기부자 뉴스 수집 & LLM 판별

기부자별로 수집된 뉴스 목록과 LLM이 판별한 동명이인 여부, 기사 요약을 확인하고 담당자가 검토·승인할 수 있는 화면입니다.

  • Celery Beat + Redis로 매일 정기 크롤링 스케줄 관리
  • Claude API (claude-3-haiku) 프롬프트로 동명이인 판별 + 요약 생성
  • PostgreSQL JSONB 컬럼으로 LLM 응답 원본 보존 및 재처리 지원

LLM 호출 비용을 최소화하기 위해 기부자 프로필(생년월일·직함·소속)을 컨텍스트로 주입하는 구조화 프롬프트를 설계하고, 판별 신뢰도 점수를 함께 반환해 담당자 검토 우선순위를 자동 정렬합니다.

기부자 뉴스 수집 & LLM 판별
핵심 기능 3

골든 타이밍 점수화 & 알림

기부자별 최근 뉴스 감성·빈도·이슈 유형을 종합해 기부 제안 적합 시점 점수를 산출하고, 고점수 기부자를 우선 노출합니다.

  • Python 규칙 엔진 + LLM 감성 분류 결합으로 스코어 산출 파이프라인 구현
  • Jinja2 템플릿 + Claude API로 기부자별 맞춤 접촉 메일 초안 자동 생성
  • FastAPI Background Task로 스코어 갱신을 메인 요청과 비동기 분리

감성 분류·이슈 유형·접촉 이력을 가중 합산하는 스코어 산출 규칙을 YAML 설정 파일로 외부화하여, 담당자가 코드 수정 없이 가중치를 조정할 수 있는 구조를 설계합니다.

골든 타이밍 점수화 & 알림
핵심 기능 4

데이터 정합성 검증 & 로그

내부 DB 기부자 레코드와 수집 뉴스 매핑 오류, 중복 항목, LLM 판별 실패 건을 추적하고 관리자가 수동 수정할 수 있는 화면입니다.

  • PostgreSQL audit_log 테이블 + 트리거로 모든 수집·판별 이력 자동 기록
  • React 필터 테이블로 오류 유형·날짜·기부자별 로그 빠른 조회 구현
  • 중복 기부자 감지 알고리즘(이름+소속 유사도) Python difflib 기반 구현

모든 LLM 판별 요청·응답을 JSON으로 audit_log에 보존하여, 판별 오류 발생 시 프롬프트 재설계 없이 기존 데이터로 재처리할 수 있는 멱등 파이프라인을 설계합니다.

데이터 정합성 검증 & 로그
구현 과정

프로젝트 진행 단계

STEP 1

데이터 수집 파이프라인 구축 · 2026.04

Celery Beat + Redis로 정기 크롤링 스케줄러 구성, Naver/Google News API 연동, 기부자 900명 ID 매핑 테이블 설계

STEP 2

LLM 판별 모듈 구현 · 2026.04

Claude API 구조화 프롬프트 설계, 동명이인 판별 신뢰도 점수 반환, JSONB audit_log 저장 파이프라인 완성

STEP 3

스코어링 엔진 개발 · 2026.04

감성 분류·이슈 유형·접촉 이력 가중 합산 알고리즘 구현, YAML 설정 외부화, 알림 메일 초안 자동 생성

STEP 4

React 대시보드 구현 · 2026.04

4개 화면 컴포넌트 구현, Recharts 차트 통합, React Query 폴링 설정, 데이터 검증 로그 테이블 완성

개발 결과

LLM 동명이인 판별 파이프라인 설계기부자 프로필(직함·소속·생년월일)을 컨텍스트로 주입하는 구조화 프롬프트를 설계하고, 판별 신뢰도 점수와 판별 근거를 JSON으로 반환해 담당자 검토 우선순위 자동 정렬 구조를 구축합니다.
골든 타이밍 스코어 산출 엔진 구현뉴스 감성·이슈 유형·접촉 이력을 YAML 가중치 기반으로 합산하는 스코어 엔진을 구현하고, 고점수 기부자 대상 맞춤 접촉 메일 초안을 Claude API로 자동 생성하는 워크플로를 설계합니다.
멱등 감사 로그 파이프라인 설계모든 수집·LLM 판별 요청과 응답을 PostgreSQL JSONB audit_log에 보존하여 오류 발생 시 데이터 재처리가 가능한 멱등 파이프라인 구조를 구현합니다.
Celery Beat 정기 크롤링 스케줄러 구현Redis 브로커 기반 Celery Beat로 기부자 900명 대상 매일 정해진 시각에 뉴스 API 크롤링을 실행하고, 소스별 요청 속도 제한을 고려한 배치 분산 수집 구조를 설계합니다.

기술적 주안점

  • FastAPI 비동기 엔드포인트와 React Query를 결합해 30초 주기 자동 갱신을 구현하고, 대규모 기부자 집계 데이터를 서버 사이드 집계 후 전달하는 구조를 설계합니다
  • LLM 호출 비용을 최소화하기 위해 기부자 프로필(생년월일·직함·소속)을 컨텍스트로 주입하는 구조화 프롬프트를 설계하고, 판별 신뢰도 점수를 함께 반환해 담당자 검토 우선순위를 자동 정렬합니다
  • 감성 분류·이슈 유형·접촉 이력을 가중 합산하는 스코어 산출 규칙을 YAML 설정 파일로 외부화하여, 담당자가 코드 수정 없이 가중치를 조정할 수 있는 구조를 설계합니다

유사한 프로젝트를 기획하고 계신가요?

필요한 기능과 일정을 알려주시면 개발 범위를 함께 정리하겠습니다.

프로젝트 문의