Player profiling
Player profiling
Profiling is a systemic description of the player through data, behavior, value and risks to make manageable decisions: personalization of content and offers, re-activation, limits and RG, prioritization of support and marketing. The key is ethics and compliance: PII minimum, transparent policies, explainability.
1) Objectives and application area
Product/UX: personal storefronts, starter scenarios, training, difficulty limits.
Marketing/CRM: welcome/next-best-offer, cross-sell, frequency caps, quiet hours.
Risk/compliance: RG-indicators, anomalies, sanctions/CCS-step-up (without discrimination).
Monetization: Prioritization by expected value (LTV) rather than "raw" conversion.
Operations: SLA queues, VIP service, channel capacity.
2) Data and identities
Events: Visits/Sessions, Clicks, Games/Bets, Deposits/Withdrawals, Campaign Responses
Context: platform/OS/device, geo/TZ, attraction channel, calendar/events.
Antibot/fraud: headless/ASN/proxy signals, device/IP graph.
Identities: user_id ↔ e-mail/phone ↔ device_id ↔ payment tokens; golden record, merge/split stories.
Quality: storage in UTC, event idempotency, schema versions; Point-in-Time for features.
3) Signs and behavioral patterns
RFM: recency/frequency/moneyness in windows 7/30/90.
Sessions: duration, depth, time of day/day of the week, "series" (run-length).
Content: favorite categories/providers, variety/novelty, "sticking."
Finance: deposits/average check, ARPPU/ARPU, spending volatility.
RG signals: abnormal duration/intervals, frequent deposits, nocturnal activity (as guardrails, not as a targeting target).
Reactions: opening/clicking fluffs/letters, unsubscribes, complaints.
Technical: device/IP stability, environment changes.
4) Profiling methods
Rules (rule-based): fast and understandable (for example, "beginner without a second visit of 48h").
RFM grids: freshness × frequency × money matrices (R-buckets, F-buckets, M-buckets).
Clustering: k-means/Gauss/DBSCAN mixes over normalized behavioral metrics.
Embeddings: user/item in shared space (MF/dual-tower networks) + clustering of "interests."
Propensity: probability of the event (deposit, repetition, churn) → decision on the cost of errors.
Uplift approach: probability of an increase from intervention; зоны Persuadables/Sure/Lost/DnD.
5) Profile passports and prioritization
Profile passport (template)
Код: `P_R0-7_F3-9_M50-199_Casino-Mobile`
Definition: RFM buckets + dominant content + platform
Size, refresh rate, average LTV quantile
Risks and exclusions (RG/compliance), owner, version
Recommended actions: policy (channels, creatives, mouthguards, "quiet hours")
Metrics: uplift/ROMI, complaints/unsubscribes, fairness diagnostics
6) Decision tables (sketch)
Hysteresis: the input threshold is higher than the output threshold to eliminate "blinking."
Conflicts - Priorities - Safety (RG/Compliance) → Economics → UX.
7) Pseudo-SQL and recipes
A. RFM buckets
sql
WITH acts AS (
SELECT user_id,
MAX(ts) AS last_act,
COUNT() FILTER (WHERE ts > NOW()-INTERVAL '30 day') AS f_30d
FROM event_activity GROUP BY 1
),
spend AS (
SELECT user_id,
SUM(amount) FILTER (WHERE ts > NOW()-INTERVAL '90 day') AS m_90d
FROM fact_payments GROUP BY 1
)
SELECT a. user_id,
DATE_PART('day', NOW()-a. last_act) AS recency_days,
a. f_30d, s. m_90d,
CASE WHEN DATE_PART('day', NOW()-a. last_act)<=7 THEN 'R0-7'
WHEN DATE_PART('day', NOW()-a. last_act)<=30 THEN 'R8-30' ELSE 'R31+' END AS R_bucket,
CASE WHEN a. f_30d>=10 THEN 'F10+' WHEN a. f_30d>=3 THEN 'F3-9' ELSE 'F0-2' END AS F_bucket,
CASE WHEN s. m_90d>=200 THEN 'M200+' WHEN s. m_90d>=50 THEN 'M50-199' ELSE 'M0-49' END AS M_bucket
FROM acts a LEFT JOIN spend s USING(user_id);
B. Dominant Content Category
sql
SELECT user_id,
category AS top_category
FROM (
SELECT user_id, category,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY COUNT() DESC) AS rn
FROM event_content
WHERE ts > NOW() - INTERVAL '30 day'
GROUP BY 1,2
) t
WHERE rn=1;
C. Profile assembly
sql
SELECT u. user_id,
r. R_bucket, r. F_bucket, r. M_bucket, c. top_category, d. platform
FROM users u
LEFT JOIN rfm r USING(user_id)
LEFT JOIN top_content c USING(user_id)
LEFT JOIN devices d USING(user_id);
8) Personalization and link to value
LTV weighting: rank profiles by expected value (LTV quantiles).
Next-best-action: linking a profile to an action library (content, offers, communications).
Reason codes: show "why we offer it" (explainability for support).
9) Privacy, Ethics and RG
PII minimum: tokenization, RLS/CLS, masking during exports.
Fairness: checking for differences in effects/errors by country/platform; exclusion of unacceptable characteristics (e.g. sensitive attributes).
RG principles: profiles should not encourage harmful behavior; frequency mouthguards and quiet hours are mandatory; the appeal path to the user.
Transparency: signal→profil→resheniye→deystviye→iskhod magazine, policy version.
10) Monitoring and drift
Profile quality: stability of distributions (PSI/KL) by key features; share of "non-profiled."
Effect: uplift/ROMI by actions within profiles; NNT, re-activation conversion, LTV delta.
Risks: complaints/unsubscribes, RG indicators, FPR anti-bots/fraud filters.
SLO: updating profiles to 06:00 lock., latency online classification ≤ 300 ms p95.
Runibooks: a surge in complaints, data degradation (event breakage), a surge in RG risks.
11) Architecture and MLOps
Feature Store: PIT recipes, TTL session features, online/offline parity.
Pipeline: batch profile update + online scoring (propensity/uplift).
Orchestrator: idempotency, DLQ, rate-limit per user/channel, quiet hours.
Documentation: profile/campaign passports, changelog versions, access audit.
Folbacks: safe-default profile (popular-safe), disabling risk content for incidents.
12) Anti-patterns
Profiles "for the sake of beauty" without a measurable increment.
Mixing of units and TZ, absence of PIT → faces and false conclusions.
Ignoring RG/ethics, frequency caps - complaints/risks.
"Mean means" instead of aggregating numerators/denominators.
Absence of hysteresis → "blinking" of actions.
Unexplained profiles (no reason codes) - operational chaos.
13) Profiling start-up checklist
- Objectives described (UX/marketing/risk), KPIs and guardrails
- Event diagrams, PIT features, anti-bots/fraud filters are active
- Collected RFM/behavioural/content traits, embeddings
- Formed profiles (rules/clusters/propensity/uplift) with passports
- Decision tables: hysteresis, cooldowns, priorities, conflict-matrix
- Monitoring: effect (uplift/ROMI), risks (complaints/RG), drift (PSI/KL)
- Orchestrator and channels: rate-limit, quiet hours, DLQ, audit
- Documentation: versions/owners/runibooks; Folback politics is ready
Total
Player profiling is not a shortcut, but a managed system: quality data and PIT features → meaningful profiles (behavior/value/sensitivity) → hysteresis and guardrails action policies → effect and drift monitoring → strict privacy and RG. Such an outline makes the interaction relevant, safe and measurably beneficial.