add LLM channel logic

This commit is contained in:
Francis Cao
2026-05-11 10:31:04 -07:00
parent 216cf6c448
commit 21b56d2922
6 changed files with 26 additions and 2 deletions
+1
View File
@@ -180,6 +180,7 @@
"links": "Links", "links": "Links",
"location": "Location", "location": "Location",
"login": "Login", "login": "Login",
"llm": "LLM",
"logout": "Logout", "logout": "Logout",
"manage": "Manage", "manage": "Manage",
"manager": "Manager", "manager": "Manager",
+1
View File
@@ -307,6 +307,7 @@ export const labels: Record<string, string> = {
affiliate: 'label.affiliate', affiliate: 'label.affiliate',
email: 'label.email', email: 'label.email',
sms: 'label.sms', sms: 'label.sms',
llm: 'label.llm',
organicSearch: 'label.organic-search', organicSearch: 'label.organic-search',
organicSocial: 'label.organic-social', organicSocial: 'label.organic-social',
organicShopping: 'label.organic-shopping', organicShopping: 'label.organic-shopping',
+9 -2
View File
@@ -326,16 +326,23 @@ export const SOCIAL_DOMAINS = [
export const SEARCH_DOMAINS = [ export const SEARCH_DOMAINS = [
'baidu.com', 'baidu.com',
'bing.com', 'bing.com',
'chatgpt.com',
'duckduckgo.com', 'duckduckgo.com',
'ecosia.org', 'ecosia.org',
'google.', 'google.',
'msn.com', 'msn.com',
'perplexity.ai',
'search.brave.com', 'search.brave.com',
'yandex.', 'yandex.',
]; ];
export const LLM_DOMAINS = [
'chatgpt.com',
'claude.ai',
'copilot.microsoft.com',
'gemini.google.com',
'meta.ai',
'perplexity.ai',
];
export const SHOPPING_DOMAINS = [ export const SHOPPING_DOMAINS = [
'alibaba.com', 'alibaba.com',
'aliexpress.com', 'aliexpress.com',
@@ -1,6 +1,7 @@
import clickhouse from '@/lib/clickhouse'; import clickhouse from '@/lib/clickhouse';
import { import {
EMAIL_DOMAINS, EMAIL_DOMAINS,
LLM_DOMAINS,
PAID_AD_PARAMS, PAID_AD_PARAMS,
SEARCH_DOMAINS, SEARCH_DOMAINS,
SHOPPING_DOMAINS, SHOPPING_DOMAINS,
@@ -88,6 +89,7 @@ async function relationalQuery(
when ${toPostgresPositionClause('utm_medium', ['referral', 'app', 'link'])} then 'referral' when ${toPostgresPositionClause('utm_medium', ['referral', 'app', 'link'])} then 'referral'
when utm_medium ilike '%affiliate%' then 'affiliate' when utm_medium ilike '%affiliate%' then 'affiliate'
when utm_medium ilike '%sms%' or utm_source ilike '%sms%' then 'sms' when utm_medium ilike '%sms%' or utm_source ilike '%sms%' then 'sms'
when ${toPostgresPositionClause('referrer_domain', LLM_DOMAINS)} then 'llm'
when ${toPostgresPositionClause('referrer_domain', SEARCH_DOMAINS)} or utm_medium ilike '%organic%' then concat(prefix, 'Search') when ${toPostgresPositionClause('referrer_domain', SEARCH_DOMAINS)} or utm_medium ilike '%organic%' then concat(prefix, 'Search')
when ${toPostgresPositionClause('referrer_domain', SOCIAL_DOMAINS)} then concat(prefix, 'Social') when ${toPostgresPositionClause('referrer_domain', SOCIAL_DOMAINS)} then concat(prefix, 'Social')
when ${toPostgresPositionClause('referrer_domain', EMAIL_DOMAINS)} or utm_medium ilike '%mail%' then 'email' when ${toPostgresPositionClause('referrer_domain', EMAIL_DOMAINS)} or utm_medium ilike '%mail%' then 'email'
@@ -149,6 +151,9 @@ async function clickhouseQuery(
when multiSearchAny(lower(utm_medium), ['referral', 'app','link']) != 0 then 'referral' when multiSearchAny(lower(utm_medium), ['referral', 'app','link']) != 0 then 'referral'
when position(lower(utm_medium), 'affiliate') > 0 then 'affiliate' when position(lower(utm_medium), 'affiliate') > 0 then 'affiliate'
when position(lower(utm_medium), 'sms') > 0 or position(lower(utm_source), 'sms') > 0 then 'sms' when position(lower(utm_medium), 'sms') > 0 or position(lower(utm_source), 'sms') > 0 then 'sms'
when multiSearchAny(lower(referrer_domain), [${toClickHouseStringArray(
LLM_DOMAINS,
)}]) != 0 then 'llm'
when multiSearchAny(lower(referrer_domain), [${toClickHouseStringArray( when multiSearchAny(lower(referrer_domain), [${toClickHouseStringArray(
SEARCH_DOMAINS, SEARCH_DOMAINS,
)}]) != 0 or position(lower(utm_medium), 'organic') > 0 then concat(prefix, 'Search') )}]) != 0 or position(lower(utm_medium), 'organic') > 0 then concat(prefix, 'Search')
+5
View File
@@ -1,6 +1,7 @@
import clickhouse from '@/lib/clickhouse'; import clickhouse from '@/lib/clickhouse';
import { import {
EMAIL_DOMAINS, EMAIL_DOMAINS,
LLM_DOMAINS,
PAID_AD_PARAMS, PAID_AD_PARAMS,
SEARCH_DOMAINS, SEARCH_DOMAINS,
SHOPPING_DOMAINS, SHOPPING_DOMAINS,
@@ -57,6 +58,7 @@ async function relationalQuery(websiteId: string, filters: QueryFilters) {
when ${toPostgresLikeClause('utm_medium', ['referral', 'app', 'link'])} then 'referral' when ${toPostgresLikeClause('utm_medium', ['referral', 'app', 'link'])} then 'referral'
when utm_medium ilike '%affiliate%' then 'affiliate' when utm_medium ilike '%affiliate%' then 'affiliate'
when utm_medium ilike '%sms%' or utm_source ilike '%sms%' then 'sms' when utm_medium ilike '%sms%' or utm_source ilike '%sms%' then 'sms'
when ${toPostgresLikeClause('referrer_domain', LLM_DOMAINS)} then 'llm'
when ${toPostgresLikeClause('referrer_domain', SEARCH_DOMAINS)} or utm_medium ilike '%organic%' then concat(prefix, 'Search') when ${toPostgresLikeClause('referrer_domain', SEARCH_DOMAINS)} or utm_medium ilike '%organic%' then concat(prefix, 'Search')
when ${toPostgresLikeClause('referrer_domain', SOCIAL_DOMAINS)} then concat(prefix, 'Social') when ${toPostgresLikeClause('referrer_domain', SOCIAL_DOMAINS)} then concat(prefix, 'Social')
when ${toPostgresLikeClause('referrer_domain', EMAIL_DOMAINS)} or utm_medium ilike '%mail%' then 'email' when ${toPostgresLikeClause('referrer_domain', EMAIL_DOMAINS)} or utm_medium ilike '%mail%' then 'email'
@@ -102,6 +104,9 @@ async function clickhouseQuery(
when multiSearchAny(lower(utm_medium), ['referral', 'app','link']) != 0 then 'referral' when multiSearchAny(lower(utm_medium), ['referral', 'app','link']) != 0 then 'referral'
when position(lower(utm_medium), 'affiliate') > 0 then 'affiliate' when position(lower(utm_medium), 'affiliate') > 0 then 'affiliate'
when position(lower(utm_medium), 'sms') > 0 or position(lower(utm_source), 'sms') > 0 then 'sms' when position(lower(utm_medium), 'sms') > 0 or position(lower(utm_source), 'sms') > 0 then 'sms'
when multiSearchAny(lower(referrer_domain), [${toClickHouseStringArray(
LLM_DOMAINS,
)}]) != 0 then 'llm'
when multiSearchAny(lower(referrer_domain), [${toClickHouseStringArray( when multiSearchAny(lower(referrer_domain), [${toClickHouseStringArray(
SEARCH_DOMAINS, SEARCH_DOMAINS,
)}]) != 0 or position(lower(utm_medium), 'organic') > 0 then concat(prefix, 'Search') )}]) != 0 or position(lower(utm_medium), 'organic') > 0 then concat(prefix, 'Search')
@@ -1,6 +1,7 @@
import clickhouse from '@/lib/clickhouse'; import clickhouse from '@/lib/clickhouse';
import { import {
EMAIL_DOMAINS, EMAIL_DOMAINS,
LLM_DOMAINS,
PAID_AD_PARAMS, PAID_AD_PARAMS,
SEARCH_DOMAINS, SEARCH_DOMAINS,
SHOPPING_DOMAINS, SHOPPING_DOMAINS,
@@ -210,6 +211,7 @@ async function relationalQuery(
when ${toPostgresLikeClause('utm_medium', ['referral', 'app', 'link'])} then 'referral' when ${toPostgresLikeClause('utm_medium', ['referral', 'app', 'link'])} then 'referral'
when utm_medium ilike '%affiliate%' then 'affiliate' when utm_medium ilike '%affiliate%' then 'affiliate'
when utm_medium ilike '%sms%' or utm_source ilike '%sms%' then 'sms' when utm_medium ilike '%sms%' or utm_source ilike '%sms%' then 'sms'
when ${toPostgresLikeClause('referrer_domain', LLM_DOMAINS)} then 'llm'
when ${toPostgresLikeClause('referrer_domain', SEARCH_DOMAINS)} or utm_medium ilike '%organic%' then concat(prefix, 'Search') when ${toPostgresLikeClause('referrer_domain', SEARCH_DOMAINS)} or utm_medium ilike '%organic%' then concat(prefix, 'Search')
when ${toPostgresLikeClause('referrer_domain', SOCIAL_DOMAINS)} then concat(prefix, 'Social') when ${toPostgresLikeClause('referrer_domain', SOCIAL_DOMAINS)} then concat(prefix, 'Social')
when ${toPostgresLikeClause('referrer_domain', EMAIL_DOMAINS)} or utm_medium ilike '%mail%' then 'email' when ${toPostgresLikeClause('referrer_domain', EMAIL_DOMAINS)} or utm_medium ilike '%mail%' then 'email'
@@ -402,6 +404,9 @@ async function clickhouseQuery(
when multiSearchAny(lower(utm_medium), ['referral', 'app','link']) != 0 then 'referral' when multiSearchAny(lower(utm_medium), ['referral', 'app','link']) != 0 then 'referral'
when position(lower(utm_medium), 'affiliate') > 0 then 'affiliate' when position(lower(utm_medium), 'affiliate') > 0 then 'affiliate'
when position(lower(utm_medium), 'sms') > 0 or position(lower(utm_source), 'sms') > 0 then 'sms' when position(lower(utm_medium), 'sms') > 0 or position(lower(utm_source), 'sms') > 0 then 'sms'
when multiSearchAny(lower(referrer_domain), [${toClickHouseStringArray(
LLM_DOMAINS,
)}]) != 0 then 'llm'
when multiSearchAny(lower(referrer_domain), [${toClickHouseStringArray( when multiSearchAny(lower(referrer_domain), [${toClickHouseStringArray(
SEARCH_DOMAINS, SEARCH_DOMAINS,
)}]) != 0 or position(lower(utm_medium), 'organic') > 0 then concat(prefix, 'Search') )}]) != 0 or position(lower(utm_medium), 'organic') > 0 then concat(prefix, 'Search')