← 블로그

전화하고 나면 고객 이름이 만들어져 있습니다

통화를 끊고 「이 사람 뭐라고 저장하지」 고민할 일이 없습니다. 어떤 이름이 붙는지, 그리고 통화 내용을 읽는다는 것이 실제로 어떻게 처리되는지 함께 정리했습니다.

전화를 끊고 나면 늘 같은 고민이 옵니다. 「이 사람 뭐라고 저장하지.」

「김철수」라고 저장해 두면 두 달 뒤에 누군지 모릅니다. 「매수 문의」라고 해 두면 그런 사람이 스무 명이 됩니다. 제대로 적으려면 통화 내용을 되짚어야 하는데, 그럴 시간에 다음 전화가 옵니다.

그래서 대부분 저장을 안 하고 넘어갑니다. 목록에 번호만 쌓입니다.

링커는 통화가 끝나면 이름이 만들어져 있습니다. 사용자가 할 일은 없습니다.

어떤 이름이 붙나요

부동산 중개사라면 이런 식입니다.

우힐 105동 24평 매수 여 7억
목건 3층 전세 4천/300 9월입주
상인동101-1 상가 임대 문의

보험 설계사라면 이렇게 됩니다.

실손 갱신 상담 남
종신 청약 진행중 40대
자동차보험 견적 11월만기

그 사람을 남과 구별할 수 있는 정보가 들어갑니다. 목록에서 스무 명을 훑을 때 「아, 이 사람」이 바로 떠올라야 쓸모가 있으니까요.

「매수 문의」나 「고객」처럼 뭉뚱그린 말은 넣지 않습니다. 그런 이름은 스무 개가 똑같아져서 없는 것과 같습니다.

직군에 맞게 달라집니다

사람을 구별하는 축이 직군마다 다릅니다. 부동산은 단지와 평형이 중요하고, 보험은 상품군과 진행 단계가 중요합니다. 자동차 영업이라면 차종과 신차·중고, 대출이라면 대출 종류와 금액입니다.

그래서 설정에서 영업 직군을 고르는 것 하나가 이름 품질을 크게 좌우합니다. 설치하고 나서 이것만 해 두시면 됩니다.

선택지에 없는 직군이면 직접 적어 두실 수 있습니다.


「그럼 내 통화 내용을 읽는다는 건데, 괜찮은가요」

이 기능을 설명드리면 대부분 여기서 멈춥니다. 당연한 질문이라 정확히 답해 드리겠습니다.

링커가 녹음하지는 않습니다

먼저 오해를 하나 풀어야 합니다. 링커는 통화를 녹음하지 않습니다.

단말 운영체제가 만든 통화 녹음 파일을, 사용자가 이 기능을 켠 경우에만 본인 계정으로 올려서 씁니다. 기본값은 꺼짐입니다. 설정에서 언제든 끄실 수 있고, 끄면 그때부터 올라가지 않습니다.

어디를 거쳐서 처리되나

녹음이 어디를 지나는지 그림으로 먼저 보여 드리겠습니다.

flowchart TD
    A["폰 · OS 가 만든 통화 녹음 파일"] --> B{"업로드를 켰나<br/>(기본 꺼짐)"}
    B -->|아니오| C["아무것도 올라가지 않는다"]
    B -->|예| D["암호화 전송"]
    D --> E["AWS 서울 리전<br/>녹음 파일 저장"]
    E --> F["분석 워커"]
    F --> G["Gemini · 미국<br/>음성을 글로, 이름 생성"]
    G --> H["결과만 우리 DB 로<br/>전사문 · 요약 · 이름"]
    H --> I["내 계정으로만 조회"]

음성을 글로 옮기고 이름을 짓는 일은 구글의 Gemini가 합니다. 그래서 녹음 원본이 미국 소재 구글 인프라로 전송되어 처리됩니다. 이건 숨길 일이 아니라 아셔야 할 일이라 개인정보처리방침에도 그대로 적어 두었습니다.

파일 자체는 AWS 서울 리전에 저장됩니다. 전송 구간과 저장 구간은 암호화됩니다.

이 처리가 마음에 걸리시면 AI 분석에 동의하지 않거나 동의를 철회하시면 됩니다. 그러면 문자와 통화 기록은 그대로 쌓이고 분석만 안 됩니다. 이름도 안 붙습니다. 기능을 통째로 포기하지 않아도 되게, 켜고 끄는 단위를 잘게 나눠 두었습니다.

팔지 않습니다

회사는 이용자 데이터를 제3자에게 판매하지 않고, 광고 목적으로 제공하지 않습니다. 링커의 수익은 AI 분석 사용량에서 나옵니다. 데이터를 파는 구조가 아닙니다.

남의 통화가 내 이름 짓기에 쓰이지 않습니다

이름을 지을 때 참고하는 것은 그 사용자 본인의 통화와 문자뿐입니다. 다른 사용자의 데이터를 섞어서 학습하거나 참고하지 않습니다.

당연해 보이지만 코드에서는 당연하지 않습니다. 대화방 번호는 1, 2, 3처럼 이어지는 숫자라, 조회할 때 「이 대화가 이 사용자의 것인가」를 매번 확인하지 않으면 주소창에서 숫자 하나만 바꿔도 남의 대화가 열립니다.

그래서 그 확인을 화면 쪽이 아니라 서비스 안쪽에 두었습니다.

fun getEvents(userId: Long, conversationId: Long)
        : List<ConversationEventResult> {
    val conversation = getById(conversationId)
    if (conversation.userId != userId) {
        throw InvalidDataException("소유권 불일치")
    }
    ...
}

화면 쪽에 두면 나중에 다른 경로가 생겼을 때 빠집니다. 대화를 읽는 길이 몇 개가 되든 같은 문을 지나가게 만들어야 합니다.

사람이 지은 것과 AI가 지은 것을 구분해 둡니다

이름 자리에는 세 종류가 들어옵니다. 폰 주소록에서 가져온 실명, 직접 입력하신 이름, 그리고 AI가 지은 이름입니다.

셋을 구분해 저장합니다. 그래서 「AI가 채운 것만 골라서 지우기」가 가능합니다.

// 「사용자가 고쳤나」와 「AI 가 만들었나」는 다른 질문이다.
// 수정 시각만 보고 지우면 손수 입력한 이름도,
// 폰북에서 가져온 실명도 함께 지워진다.
if (rawSource == ContactRawSource.AUTO
    && nameEditedAt == null) name = null

「수정한 적 없다」는 「AI가 만들었다」가 아닙니다. 직접 입력한 연락처도, 주소록에서 가져온 실명도 수정한 적은 없으니까요. 출처를 함께 봐야 사람이 지은 이름이 살아남습니다.

되돌릴 수 있다는 것 자체가 안전장치입니다. 자동으로 채워지는 기능은 지우는 방법이 함께 있어야 마음 놓고 켤 수 있습니다.

그만두면 지워집니다

앱에서 설정 → 계정 삭제로 직접 지우실 수 있습니다. 요청하면 계정이 즉시 비활성화되고, 30일이 지나면 서버와 클라우드 저장소의 데이터·녹음 파일까지 영구히 파기됩니다.

계정을 지우지 않고 기능별 동의만 철회할 수도 있습니다.

자세한 내용은 개인정보처리방침에 위탁업체와 국외 이전까지 적어 두었습니다.


내가 지은 이름은 건드리지 않습니다

이름이 이미 있으면 손대지 않습니다. 폰 주소록에서 가져온 실명도, 직접 입력하신 이름도 그대로 둡니다.

fun applyAutoNameIfBlank(autoName: String) {
    if (nameEditedAt != null) return   // 고친 적 있으면 물러난다
    val current = name?.trim()
    val isBlank = current.isNullOrBlank()
    val isPhoneItself = current != null
        && current.filter { it.isDigit() }
            == phoneNumber.filter { it.isDigit() }
    // 사람이 지은 이름이면 물러난다
    if (!isBlank && !isPhoneItself) return
    name = autoName.trim()
        .takeIf { it.isNotBlank() } ?: return
}

채우는 자리는 둘뿐입니다. 이름이 비어 있거나, 이름 자리에 번호가 들어가 있을 때. 주소록에서 이름 없이 가져온 연락처는 번호 문자열이 이름 자리를 메우고 있는데, 그건 사람이 지은 이름이 아니라 빈자리입니다.

자동으로 붙은 이름이 마음에 안 들면 고치시면 됩니다. 한 번 고치면 그 뒤로는 AI가 다시 건드리지 않습니다.

나중에 그 번호를 주소록에 실명으로 저장하시면 실명이 이깁니다. 사람이 정한 것이 늘 우선입니다.

관계 없는 전화에는 안 붙습니다

배달, 택배, 스팸 전화에는 이름을 붙이지 않습니다. 그런 통화로 없던 연락처가 생기지도 않습니다.

업무 관계가 확인된 상대에게만 붙습니다. 안 그러면 며칠 만에 목록이 배달 기사와 텔레마케터로 가득 찹니다.

다시 만들 수 있습니다

연락처 화면에서 관계 초기화를 누르면 AI가 채운 것이 지워집니다. 이름도 함께 지워지고, 다음 통화 때 새로 만들어집니다.

통화가 몇 번 더 쌓이면 그만큼 정확해지므로, 초기에 어색한 이름이 붙었다면 초기화해 두시는 것도 방법입니다.

어떻게 켜나요

따로 켤 것은 없습니다. 통화 녹음 업로드가 켜져 있으면 자동으로 동작합니다.

  1. 설정에서 영업 직군을 고릅니다
  2. 통화 녹음 업로드를 켭니다

그다음부터는 전화를 받고 끊기만 하면 됩니다.

저장을 안 해도 되는 게 핵심입니다

이 기능의 값어치는 이름이 예쁘게 지어지는 데 있지 않습니다. 저장하지 않아도 나중에 찾을 수 있다는 데 있습니다.

지금까지는 저장할 시간이 없어서 놓친 고객이 있었습니다. 통화는 했는데 기록이 없으니 몇 달 뒤에는 그런 사람이 있었다는 것도 모릅니다.

이제는 전화만 받으면 남습니다.

기능 전체 목록은 링커로 할 수 있는 일 전부에 정리해 두었습니다.