모두의포트폴리오
PE · FDE 직군을 위한 포트폴리오 밀키트
예전 판입니다 (1판)이 문서는 2026-08-02 에 새 판으로 개정됐습니다. 산출물을 검수 콘솔에서 자연어 질문을 질의 조건으로 바꿔 고객사 커버리지 시트에 실행하는 CLI로 좁히고, 시점을 계약 고객사 애널리스트로 옮겼습니다.최신 판 보기 →
경력링크알파 · Forward Deployed Analyst

AI가 쓴 투자 리서치 메모의 숫자와 인용을 원문 공시와 대조해 근거 없는 주장을 짚어내는 검수 콘솔

링크알파 공고에서 뽑은 세 가지 시그널.

링크알파의 이 애널리스트 포지션은 자본시장 전문성에 기반한 평가 루브릭과 프롬프트를 저작하고, disclosures·financial statements를 오가는 풀사이클 리서치를 QA해 팀이 쓸 인사이트로 바꿉니다. AI 메모 주장을 원문 공시 수치와 대조해 근거 없는 주장을 짚는 이 콘솔은 그 루브릭 저작과 리서치 QA를 정면으로 입증합니다. 링크알파는 buy-side가 신뢰하는 decision-grade 출력을 지향하고 금융 답변에서 출처 귀속이 품질의 필수 요건이라, 주장을 공시 근거에 묶는 이 사슬은 단순한 문서 요약 맥락으로는 그대로 만들 수 없습니다. 다만 자본시장 판단 자체의 전문성은 포트폴리오로 증명되지 않으므로 주장하지 않습니다.

01

리서치 워크플로우 매핑·개선기회 발굴

최종 사용자 관점에서 제품 워크플로우를 훑어 가장 효과가 큰 개선 지점을 찾는 일이 이 포지션의 핵심입니다. 검수 콘솔은 리서치 산출물의 약한 고리를 정량으로 드러내 그 개선 지점을 짚습니다.

Map LinqAlpha's product workflows from the end user's perspective and surface the highest-leverage improvement opportunitiesCombine an analyst's perspective with a product builder's instincttranslate that understanding into a product direction
02

자본시장 평가 루브릭·프롬프트 저작

자본시장 전문성에 기반한 도메인 콘텐츠·프롬프트·평가 루브릭을 직접 만들고 다듬습니다. 이 콘솔의 근거 판정 규칙과 채점 축이 곧 그 평가 루브릭의 실행 형태입니다.

Author and iterate on domain content, prompts, and evaluation rubrics grounded in capital markets expertiseAbility to work through a full-cycle capital markets research process on your own: disclosures, financial statementsData-driven, logical, and evidence-based thinking
03

클라이언트 QA를 인사이트로 환원

클라이언트 리서치·인터뷰·QA에서 정성·정량 피드백을 모아 팀이 바로 움직일 수 있는 인사이트로 바꾸는 일입니다. 콘솔은 검수 결과를 모아 어떤 주장 유형이 반복해서 틀리는지 인사이트로 정리합니다.

Run client research, interviews, and QA to collect qualitative and quantitative feedback and turn it into insight the team can act onDraft product specs for new agents and featuresAct as the communication bridge across research, engineering, and GTM

포트폴리오 요약

AI가 초안을 쓴 투자 리서치 메모에서 뽑은 각 주장(발행사·지표·기간·주장 수치·인용 출처)을 받아, 규칙(원문 공시 수치와의 대조·인용 누락·기간 어긋남·미매핑·결측)으로 근거 여부를 판정하고 어디가 왜 어긋났는지 근거와 함께 검수 카드로 정리합니다. 근거 판정은 공시 사실 테이블과의 대조 규칙이, 설명과 검수 카드 문구는 LLM이 맡습니다. 지표·발행사 표기를 마스터로 정규화합니다. 투자 판단의 옳고 그름이 아니라 메모 주장이 원문 공시에 실제로 근거하는지를 봅니다.

고객 정의

링크알파 리서치 메모를 buy-side 고객에게 보내기 전 검수하는 애널리스트입니다. AI 초안의 매출성장률·영업이익률을 공시 원문과 스프레드시트로 하나씩 대조하며 인용이 맞는지 확인하던 일을, 한 콘솔에서 근거가 어긋난 주장과 그 근거를 함께 보고 싶은 사람입니다.

고민 지점

메모 주장과 공시 사실을 한 스키마로 묶고 지표·발행사 마스터를 붙이면, (a) 숫자 불일치·인용 누락·기간 어긋남을 규칙으로 잡고, (b) 어느 주장이 왜 근거가 없는지 LLM이 원문 수치를 들어 설명하며, (c) 많은 메모의 주장을 끊김 없이 검수 카드로 정리합니다.

주차별 일정

1주차여기까지로 완성

메모 주장 추출 + 공시 대조 규칙 + 검수 카드

AI 메모 주장 세트와 공시 사실 테이블을 받아 근거 없는 주장을 규칙으로 잡고 근거 카드로 보여주는 동작하는 콘솔입니다. 데이터는 메모 주장과 공시를 가정한 더미로 시작합니다.

  1. 1일 · 메모 주장과 공시 사실을 한 표준 표로 정리발행사·기간·지표·주장 수치·인용 출처 스키마 + 지표·발행사 표기 정규화
  2. 2-3일 · 주장을 공시와 대조하는 규칙 적용Python 파서 + SQL 조인 + 수치 불일치·인용 누락·기간 어긋남·미매핑·결측 규칙
  3. 4-5일 · 판정 근거를 LLM이 풀게 하기프롬프트 v1(판정 + 원문 공시 수치 인용 + 투자 판단 단정 금지) + JSON Schema로 출력 형식 검증
  4. 6일 · 메모 검수 콘솔 화면메모별 주장 목록 + 판정 배지 + 검수 카드 + 주장 수치와 공시 수치 나란히 보기
  5. 7일 · 7일치 시연 영상 + 심은 정답과 비교한 기준선여기까지가 1주차 완성품입니다
2주차선택 성장

판정이 맞았는지 확인

판정을 심은 정답과 검토자 2명 라벨에 비교해 정밀도·재현율과 일치도를 보여주는 화면입니다.

  1. 8-9일 · 검토자 2명이 판정 라벨링심은 정답 대비 정밀도·재현율 + 검토 가이드
  2. 10-11일 · 판정 신뢰도 보강일치도 측정(Cohen's κ: 두 사람 답이 우연 이상으로 일치하는 정도, 0~1) + 오탐 사례 정리
  3. 12일 · 투자 판단 과장 자동 차단수치 매칭 + 별도 LLM 검사 + 5% 사람 점검
3주차선택 성장

메모 전반의 약한 고리 인사이트 리포트

여러 메모의 판정을 모아 어떤 주장 유형(인용 누락·기간 재활용 등)이 반복해서 틀리는지 집계해 개선 우선순위로 보여주는 리포트입니다.

  1. 15-17일 · 메모 전반의 약한 고리 리포트주장 유형별 오류율·발행사별 인용 누락 분포 집계
  2. 18-21일 · 두 번째 메모 세트 적용 + 통합 시연 영상실제 도입 계획(실 공시·실 검토자 교체) 포함

데모 · 측정 지표

01

메모 주장 세트 15종을 넣으면, 각 주장의 판정(근거일치·숫자불일치·인용누락·기간재활용·미매핑·대조불가)과 근거 카드가 몇 초 안에 나오는 걸 시연합니다

02

일부러 만든 악성·결측 입력 30종(주장 수치 null·미등록 지표·지표 표기 흔들림·인용 출처 null·기간 어긋남)을 넣어도 출력 형식(스키마)이 한 번도 안 깨집니다

03

더미에 심은 정답 60건 중 판정이 일치한 게 54건(약 90%)입니다. 단, 정답·데이터를 모두 작성자가 만든 합성 기준이라 '성능 검증'이 아니라 '데모 조건에서의 동작'임을 명시합니다

정직 경계선

진짜 성능 검증은 여기서 멈춥니다. 위 수치는 전부 작성자가 만든 더미데이터 자가채점이며, 실제 정밀도·재현율은 링크알파의 실 리서치 메모와 실 공시, 실 검토자가 있어야 측정 가능합니다. 이 콘솔은 그 검증을 바로 돌릴 수 있는 상태까지 만듭니다

미리 알아둬야 할 것들

이건 고객·실데이터 없이 혼자 만든 포트폴리오입니다. 모든 수치는 합성 데이터 자가채점이라 성능 증명이 아닙니다. 면접에서는 데모 동작과 실검증 준비 상태로 솔직히 설명하는 게 오히려 신뢰를 줍니다

정답을 작성자가 만들었으니 잘 맞는 게 당연합니다. 그래서 인용 출처 누락·미등록 지표·기간 어긋남·경계값 같은 결측·경계 케이스를 더미에 일부러 섞어, 쉬운 대조만 잡는 게 아님을 보여줍니다

이 콘솔이 보는 것은 주장이 원문 공시 수치에 근거하는지이지 그 투자 논리가 옳은지가 아닙니다. 숫자가 맞아도 결론이 타당하다는 뜻은 아니므로 '근거 대조'와 '투자 판단'을 카드에서 분리해 표시하고, 자본시장 판단 전문성은 포트폴리오로 증명되지 않으므로 주장하지 않습니다

지표·발행사 표기가 제각각입니다(영업이익률·OPM 등). 정규화로 같은 지표로 묶고, 못 묶은 건 추측하지 말고 '미매핑'으로 알립니다

실제 도입 시 공시 원문은 표가 아니라 비정형 문서라 주장 추출·기간 매칭이 더미보다 어렵습니다. 규칙 임계와 인용 파싱을 실공시·실검토자에 다시 맞춰야 하므로 도입 단계 과제로 분리합니다

더미 데이터

① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.

memo_claimsTABLE· 12 rows

AI 초안 메모에서 뽑은 개별 주장 로그. 대조 규칙·검수 카드가 가장 먼저 질의하는 테이블입니다. 주장 수치 결측·미등록 지표·지표 표기 흔들림·인용 출처 null·기간 어긋남을 일부러 섞고, label로 정답 판정을 심어 자가채점합니다.

② memo_claims.seed.json 다운로드
① 인라인 샘플 (프리뷰 5 / 12)
claim_idmemo_idissuermetric_rawmetric_idperiodclaimed_valueunitcited_sourcelabel
mc_001memo_A삼성전자매출성장률rev_yoy2025Q412pct삼성전자 사업보고서 2025Q4supported
mc_002memo_A삼성전자영업이익률op_margin2025Q417pct삼성전자 사업보고서 2025Q4number_mismatch
mc_003memo_ASK하이닉스OPMop_margin2025Q441.2pctSK하이닉스 분기보고서 2025Q4supported
mc_004memo_B네이버매출성장rev_yoy2025Q48pct—no_citation
mc_005memo_B삼성전자영업이익op_income2025Q49,800krw_bn삼성전자 사업보고서 2025Q4supported
③ 증강 프롬프트 (본인 LLM 에 붙여서 N 배 늘리기)
아래 JSON Schema에 맞는 AI 메모 주장 60행 JSON 배열로 생성합니다. 발행사 4~6개, 지표(rev_yoy/op_margin/op_income/per)·기간(2025Q4/2026Q1/2026Q2) 분포, 근거일치 위주에 오류를 섞습니다. label은 disclosure_facts와의 대조로 정합니다. 규칙: cited_source가 null이면 no_citation, metric_id가 null이거나 마스터에 없으면 unmapped_source, claimed_value가 null이면 unverifiable, 주장 기간에 해당 사실이 없고 이전 기간 사실을 인용했으면 stale_period, 주장 수치가 사실 수치와 허용오차(pct는 0.2p, 그 외 1% 이내) 밖이면 number_mismatch, 나머지는 supported.

{"type":"object","properties":{"claim_id":{"type":"string"},"memo_id":{"type":"string"},"issuer":{"type":"string"},"metric_raw":{"type":"string"},"metric_id":{"type":["string","null"]},"period":{"type":"string"},"claimed_value":{"type":["number","null"]},"unit":{"type":"string","enum":["pct","krw_bn","usd_mn","x","none"]},"cited_source":{"type":["string","null"]},"label":{"type":"string","enum":["supported","number_mismatch","stale_period","no_citation","unmapped_source","unverifiable"]}},"required":["claim_id","memo_id","issuer","metric_raw","period","unit","label"]}

쉬운 데이터만 만들지 말 것. 다음 하드 케이스를 의도적으로 섞어라(쉬운 대조만 잡는 함정 회피): (1) 같은 지표의 표기 별칭('영업이익률'/'OPM', '매출성장률'/'매출성장'처럼 metric_id로 정규화돼야 함) 4건 이상, (2) 미등록 지표(metric_id=null) 2건, (3) 결측: claimed_value 또는 cited_source가 null인 행 각 2~3건, (4) 경계값 0.0%·음수 영업이익 각 1~2건, (5) 옛 분기 숫자를 이번 분기 주장으로 재활용한 stale_period 2~3건. label은 위 규칙대로 정직하게. JSON 배열만.
schema (3 층의 단일 출처)
{"type":"object","properties":{"claim_id":{"type":"string"},"memo_id":{"type":"string"},"issuer":{"type":"string"},"metric_raw":{"type":"string"},"metric_id":{"type":["string","null"]},"period":{"type":"string"},"claimed_value":{"type":["number","null"]},"unit":{"type":"string","enum":["pct","krw_bn","usd_mn","x","none"]},"cited_source":{"type":["string","null"]},"label":{"type":"string","enum":["supported","number_mismatch","stale_period","no_citation","unmapped_source","unverifiable"]}},"required":["claim_id","memo_id","issuer","metric_raw","period","unit","label"]}
disclosure_factsTABLE· 11 rows

주장을 대조할 원문 공시 사실(진실원). 발행사·기간·지표 키로 memo_claims와 조인되며, 여기 없는 지표를 주장이 참조하면 미매핑으로 알립니다. 표기 정규화된 metric_id를 진실 키로 둡니다.

② disclosure_facts.seed.json 다운로드
① 인라인 샘플 (프리뷰 5 / 11)
fact_idissuerperiodmetric_idvalueunitsource_doc
df_001삼성전자2025Q4rev_yoy12pct사업보고서
df_002삼성전자2025Q4op_margin15.5pct사업보고서
df_003삼성전자2025Q4op_income9,800krw_bn사업보고서
df_004SK하이닉스2025Q4rev_yoy34pct분기보고서
df_005SK하이닉스2025Q4op_margin41.2pct분기보고서
③ 증강 프롬프트 (본인 LLM 에 붙여서 N 배 늘리기)
아래 JSON Schema에 맞는 원문 공시 사실 40행 JSON 배열로 생성합니다. memo_claims의 발행사·기간·지표와 조인되도록 같은 키 공간을 씁니다. metric_id는 정규화된 표준 키(rev_yoy·op_margin·op_income·per 등)만 씁니다.

{"type":"object","properties":{"fact_id":{"type":"string"},"issuer":{"type":"string"},"period":{"type":"string"},"metric_id":{"type":"string"},"value":{"type":"number"},"unit":{"type":"string","enum":["pct","krw_bn","usd_mn","x"]},"source_doc":{"type":"string"}},"required":["fact_id","issuer","period","metric_id","value","unit","source_doc"]}

쉬운 데이터만 만들지 말 것. 다음 하드 케이스를 의도적으로 섞어라: (1) 0.0% 성장·음수 영업이익 같은 경계값 각 1~2건, (2) 특정 발행사·기간에는 일부 지표 사실이 아예 없어(memo_claims가 참조하면 미매핑이 되게) 빈 조합을 남길 것, (3) 같은 발행사의 인접 분기(2025Q4/2026Q1) 사실을 함께 두어 stale_period 대조가 가능하게 할 것. JSON 배열만.
schema (3 층의 단일 출처)
{"type":"object","properties":{"fact_id":{"type":"string"},"issuer":{"type":"string"},"period":{"type":"string"},"metric_id":{"type":"string"},"value":{"type":"number"},"unit":{"type":"string","enum":["pct","krw_bn","usd_mn","x"]},"source_doc":{"type":"string"}},"required":["fact_id","issuer","period","metric_id","value","unit","source_doc"]}

기술 상세 · 아키텍처·운영·출력 스키마

기술 스택 매핑
Python주장 파서·공시 대조 규칙 엔진·루브릭 채점·검수 카드 생성의 구현 언어입니다
Go여러 메모의 주장 수천 건을 공시 사실과 동시에 대조하는 배치 검증 워커를 구현합니다
SQL발행사·기간·지표로 공시 사실 테이블을 질의해 주장 수치와 조인하는 대조의 뼈대입니다
LLM판정 결과를 원문 수치를 인용한 검수 카드 문구로 풀어 쓰는 설명 계층입니다
Claude주장 설명 생성과 과장 표현 검출 judge에 쓰는 모델입니다
LLM 선택
model
Claude Sonnet (주장 판정 설명·검수 카드 생성) + GPT-4o-mini (LLM-as-judge 과장 검출)
prompt
few-shot 3 예시 + JSON Schema 강제 + 원문 공시 수치 인용 강제 + 투자 판단 단정 차단 + 후행 judge
rationale
근거 판정은 공시 대조 규칙이 결정하고 LLM은 설명만 맡아 잘못된 합격 판정을 막습니다. 설명 정확성에 Sonnet을, 과장 검출 judge는 비용·속도 우선으로 mini를 씁니다. 공시 사실이 구조화 테이블이라 대조는 SQL 조인으로 충분하고, 비정형 원문 문단까지 인용을 넓힐 때만 RAG가 필요합니다.
결정 게이트
1주차 끝콘솔이 메모 주장과 공시를 받아 근거 없는 주장을 규칙으로 잡고 근거 카드를 띄우는가. 여기까지가 그 자체로 제출 가능한 완성품입니다.

✓ pass → 그대로 멈춰도 완결입니다. 더 키우려면 2주차(판정이 맞았는지 확인)로 진행합니다.

2주차 끝판정이 심은 정답·검토자 라벨로 맞다고 확인되고 정밀도·재현율과 일치도가 붙는가.

✓ pass → 여기서 멈춰도 완결입니다. 더 키우면 3주차(메모 전반의 약한 고리 리포트)로 진행합니다.

재사용 레이어 · 코어 70% / 도메인 30%
core (재사용 가능)
  • 주장 파서 + JSON Schema 형식 검증 파이프라인
  • 원문 대조 규칙 엔진(수치 불일치·인용 누락·기간 어긋남·미매핑·결측)
  • 발행사·지표 표기 정규화 마스터 매칭
  • 투자 판단 단정 차단 가드 + LLM-as-judge 수치 매칭
  • 검수 카드·약한 고리 리포트 봇
  • 5% 사람 spot-check 샘플러
domain (교체 대상)
  • 공시 사실 테이블과 지표·발행사 마스터
  • 검토자 페르소나·근거 라벨 가이드
  • 판정 유형 enum(인용 누락·기간 재활용 등)은 도메인별로 갈아끼웁니다
출력 스키마 · claim_review

메모 주장 1건의 근거 검수 카드. 판정·매칭 사실·루브릭 점수·근거를 한 스키마로 담아 콘솔 카드에 씁니다. 투자 판단의 옳고 그름이 아니라 원문 공시 근거 여부를 봅니다.

schema (JSON Schema)
{"type":"object","properties":{"claim_id":{"type":"string"},"verdict":{"type":"string","enum":["supported","number_mismatch","stale_period","no_citation","unmapped_source","unverifiable"]},"matched_fact_id":{"type":["string","null"]},"rubric":{"type":"object","properties":{"grounding":{"type":"integer","minimum":0,"maximum":3},"accuracy":{"type":"integer","minimum":0,"maximum":3},"specificity":{"type":"integer","minimum":0,"maximum":3}},"required":["grounding","accuracy","specificity"]},"reason":{"type":"string","minLength":20},"evidence":{"type":"string","minLength":8},"hedge":{"type":["string","null"]}},"required":["claim_id","verdict","matched_fact_id","rubric","reason","evidence"]}
모범 출력 (4)
[
  {
    "input_ref": "mc_002 (삼성전자 영업이익률 주장 수치 불일치)",
    "output": {
      "claim_id": "mc_002",
      "verdict": "number_mismatch",
      "matched_fact_id": "df_002",
      "rubric": {
        "grounding": 3,
        "accuracy": 1,
        "specificity": 2
      },
      "reason": "메모가 삼성전자 2025Q4 영업이익률을 17.0%로 적었으나 사업보고서 사실은 15.5%라 1.5%p 어긋납니다. 인용 출처는 맞지만 수치가 원문과 달라 고객 전달 전 수정이 필요합니다.",
      "evidence": "claimed_value=17.0, df_002.value=15.5, period=2025Q4",
      "hedge": null
    }
  },
  {
    "input_ref": "mc_004 (네이버 매출성장 인용 누락)",
    "output": {
      "claim_id": "mc_004",
      "verdict": "no_citation",
      "matched_fact_id": "df_006",
      "rubric": {
        "grounding": 0,
        "accuracy": 3,
        "specificity": 2
      },
      "reason": "메모의 네이버 2025Q4 매출성장 8.0%는 공시 사실과 값은 같으나 인용 출처가 비어 있습니다. 값이 맞아도 근거가 없으면 buy-side 검수를 통과하지 못하므로 출처를 달아야 합니다.",
      "evidence": "cited_source=null, df_006.value=8.0",
      "hedge": "값은 일치하나 인용 누락이라 supported로 올리지 않습니다"
    }
  },
  {
    "input_ref": "mc_007 (삼성전자 옛 분기 숫자 재활용)",
    "output": {
      "claim_id": "mc_007",
      "verdict": "stale_period",
      "matched_fact_id": "df_010",
      "rubric": {
        "grounding": 2,
        "accuracy": 1,
        "specificity": 1
      },
      "reason": "메모가 2026Q2 매출성장률을 5.0%로 적었지만 이는 2026Q1 사실을 그대로 옮긴 값이고 2026Q2 공시 사실은 없습니다. 옛 분기 숫자 재활용으로 보이므로 최신 분기 확인이 필요합니다.",
      "evidence": "claim.period=2026Q2, cited=2026Q1, df_010.value=5.0",
      "hedge": "2026Q2 사실이 없어 최신 수치는 단정하지 않습니다"
    }
  },
  {
    "input_ref": "mc_006 (미등록 지표 참조)",
    "output": {
      "claim_id": "mc_006",
      "verdict": "unmapped_source",
      "matched_fact_id": null,
      "rubric": {
        "grounding": 0,
        "accuracy": 0,
        "specificity": 1
      },
      "reason": "메모가 든 '혁신지수'는 공시 사실 마스터에 없는 지표라 원문 대조가 불가능합니다. 근거를 단정하지 않고 지표 등록 또는 출처 교체를 요청해야 합니다.",
      "evidence": "metric_id=null, cited_source=내부 추정",
      "hedge": "마스터 미등록 지표라 판정 등급은 추정하지 않습니다"
    }
  }
]
검증 노트 (자동 vs 수동)

[자동 검증] 1. JSON Schema parse로 출력 형식(필드·enum·정수 범위)이 스키마를 통과하는지 확인합니다. 2. verdict가 대조 규칙(수치 허용오차·인용 null·기간 매칭·마스터 조인·값 결측)과 일치하는지 봅니다. 3. verdict를 심은 정답 label과 비교해 정밀도·재현율을 계산합니다. 4. matched_fact_id가 null인데 verdict가 supported로 나오면 차단하고, 투자 판단 단정 표현을 거릅니다. [수동 검증] 1. 검토자 2명이 비동기로 판정을 라벨링해 정밀도·재현율과 bootstrap Cohen's κ(두 사람 일치가 우연 이상인 정도, 0~1) 하한 0.6 이상을 봅니다. 2. 전체의 5%를 사람이 직접 원문 공시와 대조해 점검합니다.