상승 중인 상위 기여자들을 어떻게 식별하고 계신가요?
계정 목록과 기여 빈도를 조회하여 상위 기여자 목록을 추론하는 것은 비교적 쉽지만, 상위 기여자로 나아가는 추세에 있는 계정을 식별하는 방법이 있을까요?
이런 계정들을 더 잘 "육성"하고 싶습니다. 예를 들어, 이모지 반응이나 "좋은 답변이네요"라는 답글을 달아 그들의 기여를 인정해 주는 것과 같은 간단한 조치들을 말입니다.
상승 중인 상위 기여자들을 어떻게 식별하고 계신가요?
계정 목록과 기여 빈도를 조회하여 상위 기여자 목록을 추론하는 것은 비교적 쉽지만, 상위 기여자로 나아가는 추세에 있는 계정을 식별하는 방법이 있을까요?
이런 계정들을 더 잘 "육성"하고 싶습니다. 예를 들어, 이모지 반응이나 "좋은 답변이네요"라는 답글을 달아 그들의 기여를 인정해 주는 것과 같은 간단한 조치들을 말입니다.
데이터 탐색기를 사용하면 많은 정보를 추출할 수 있다고 생각합니다. 최상위 기여자를 분류하는 기준에 따라 달라지겠지만, 예를 들어 TL3 등급에 근접한 사용자를 확인하려면 다음과 같은 쿼리를 사용할 수 있습니다: Find the users which are more likely to become TL3 - #19 by ganncamp
참고로 Claude(저는 3.5 Sonnet을 사용 중입니다)를 사용하면 꽤 복잡한 쿼리를 만들 수 있습니다. 제가 제공한 매우 구체적인 기준에 따라 사용자에게 점수를 매기는 쿼리를 만들었는데, 원하는 수준까지 만들기 위해 상당한 시행착오가 필요했지만, 결국 결과에 매우 만족하고 있습니다. 가장 어려운 부분은 사용할 기준을 정하는 것이었습니다.
이 작업에 OpenAI와 Gemini도 시도해 봤는데, Claude가 압도적으로 우수했습니다.
우리가 처음 시도한 것은 리더보드였지만, 이는 순수한 양(예: “수정됐어? 수정됐어? 수정됐어? 여보세요?”)을 품질보다 더 높게 평가하는 경향이 있습니다. 네, "품질"을 알고리즘으로 측정하는 것은 어렵지만 명확하게 개선할 수 있는 부분들이 있습니다.
우리가 진정으로 도움이 되는 사용자를 식별하기 위해 시작한 작업은 다음과 같습니다.
-- Goal: Find topics where first non-OP reply is a non-SonarSourcer
WITH
SonarSourcers AS (
SELECT u.id AS user_id
FROM groups g
INNER JOIN group_users gu ON g.id=gu.group_id
INNER JOIN users u ON u.id = gu.user_id
WHERE g.name='sonarsourcers'
),
tagged_topics AS (
SELECT tt.topic_id
FROM topic_tags tt
JOIN tags t on t.id=tt.tag_id
WHERE name = 'me-too'
),
-- find 'regular' topics created by normal users
topic_user AS (
SELECT id as topic_id, user_id, created_at
FROM topics
LEFT JOIN SonarSourcers ss USING(user_id)
LEFT JOIN tagged_topics tt on topics.id = tt.topic_id
WHERE ss.user_id IS NULL -- omit topics started by SonarSourcers
AND tt.topic_id IS NULL -- omit topics tagged with me-too
AND user_id > 0 -- omit DiscoBot's 'Welcome' PM/tutorial threads
AND visible = TRUE
AND archived = FALSE
AND archetype='regular'
AND created_at::DATE > '2023-07-01'
),
-- find first non-OP reply to user topics
min_response AS (
SELECT p.topic_id, tu.created_at, MIN(post_number) as post_number
FROM posts p
JOIN topic_user tu USING(topic_id)
WHERE p.post_type = 1
AND p.user_id != tu.user_id
AND p.post_number > 1
AND p.hidden = false
AND p.deleted_at IS NULL
GROUP BY topic_id, tu.created_at
)
SELECT p.topic_id, p.user_id, mr.created_at::DATE as thread_date
FROM posts p
JOIN min_response mr ON p.topic_id = mr.topic_id AND p.post_number=mr.post_number
LEFT JOIN SonarSourcers ss ON p.user_id=ss.user_id
LEFT JOIN user_badges ub on p.id = ub.post_id and ub.badge_id=110
WHERE ss.user_id IS NULL -- eliminate topics where SonarSourcer is first to respond
AND ub.user_id IS NULL -- eliminate topics where a badge has already been granted
ORDER BY mr.created_at DESC
해당 스레드를 식별한 후에는 사용자 답변을 평가하고, 답변한 사용자에게 “사용자가 사용자를 돕다” 배지를 수여하거나 스레드에 (스태프가 아닌 사용자에게는 보이지 않는) “me-too” 태그를 붙입니다. (참고로, 이 사용자 응답 보고서는 클라우드 서비스에서 발생한 문제를 빠르게 발견하는 부수적인 장점이 있습니다.
)
그 이후에는 도움이 되는 사용자에게 추가 보상을 제공하고, 이를 통해 해당 사용자를 식별하여 지속적인 관리(nurturing)를 할 수 있게 됩니다.
지금까지의 답변들이 정말 마음에 들어요 ![]()
가장 어려운 부분은 '최고 기여자’의 정의를 내리는 것, 그리고 정량적 데이터가 아닌 정성적 데이터를 측정하는 속성을 설정하는 것인 것 같아요.
예를 들어, 50번 답변하고 그중 90%가 해결책으로 표시된 멤버와 100번 답변하고 10%만 해결책으로 표시된 멤버 중 누가 더 '최고 기여자’라고 할 수 있을까요?
현재로서는 커뮤니티에서 가장 자주 보는 분들이라 최고 기여자를 식별하기가 꽤 쉽습니다. 하지만 더 구체적인 기준이 필요할 것 같아요. 그래야 최고 기여자에 근접하거나 그 경로를 밟고 있는 사람들을 식별할 수 있을 테니까요.
자체 호스팅을 하거나 해당 플러그인을 지원하는 플랜을 사용하고 있다면, 게임화 플러그인을 고려해 보셨나요?
네. 리더보드는 더 활발하게 활동하는 사용자를 확인하는 데 아주 좋은 방법입니다. 예를 들어, 대부분의 포럼에서 최상위 10위에는 가장 많이 게시한 사용자들이 자리 잡고 있습니다. 이 상위 10위권은 높은 활동량 덕분에 순위를 높게 올리고 승급된 사용자들, 즉 일반 회원(Regulars)과 리더(Leaders)로 구성되어 있습니다.
사실 리더보드에서 스태프가 제외되는지만 확인하면 됩니다. ![]()
정말 핵심을 찌르는 말씀이네요. 이건 대부분 정량적인 문제라기보다 정성적인 문제입니다.
한 달에 몇 개의 게시글만 올려도 정말 유용한 기여자가 있었고, 일주일에 수십 개를 올려도 쓸모없는 기여자도 있었거든요. 리더보드는 밀과 쭉정을 가르는 데 좋은 출발점이 되지만, 결국 커뮤니티 매니저인 여러분의 판단에 달렸습니다 ![]()
보통 정량적 데이터 포인트 세 가지를 확인합니다:
그리고 정성적 측면 세 가지: