PageSourceSearch

https://synerise.com/assets/rfm-analysis-mukSb07_.js

js synerise.com collected 2026-10-03 21:57:07 UTC 35,563 bytes, 1 lines download raw bytes

1import{r as x,j as e}from"./vendor-react-Cmi0Jrom.js";import{f as V,a as P,b as L,S as M,g as W,B as h,N as D}from"./index-ZUsWNU6z.js";import{FooterSection as U}from"./footer-section-wdK9-jql.js";import{L as v}from"./vendor-router-xf9UbNSr.js";import{d as F}from"./demo-prefill-D0C2VuhP.js";import{m as r}from"./vendor-motion-OaAG8utH.js";import{k as T,L as E,U as j,A as k,i as I,aM as N,o as _,T as S,n as A,h as R,ae as w,aN as H,y as z,a as $}from"./vendor-icons-B50paM-Q.js";import"./vendor-query-HImUUcVP.js";import"./vendor-radix-toast-LTka-d4j.js";import"./vendor-radix-primitive-BvNKvj7K.js";import"./vendor-radix-slot-f_qNkOMa.js";import"./vendor-radix-compose-refs-0p3tndNK.js";import"./vendor-radix-collection-C2ADOcGb.js";import"./vendor-radix-context-CZA76pzV.js";import"./vendor-radix-dismissable-layer-DVO7zjMy.js";import"./vendor-radix-use-callback-ref-DNSMTU4D.js";import"./vendor-radix-use-escape-keydown-CIZfUBKX.js";import"./vendor-radix-portal-lgfuWWlX.js";import"./vendor-radix-use-layout-effect-BVlAuFcq.js";import"./vendor-radix-presence-CVpwEzH2.js";import"./vendor-radix-use-controllable-state-DQPsvzY-.js";import"./vendor-radix-visually-hidden-BUU9ShfC.js";import"./vendor-radix-tooltip-DC8ZRS9i.js";import"./vendor-radix-popper-DhClme89.js";import"./vendor-radix-arrow-DCOqILDI.js";import"./vendor-radix-use-size-BbzWdhnQ.js";function q({target:t,suffix:s="",prefix:o="",decimals:c=0}){const[n,d]=x.useState(0);return x.useEffect(()=>{let g,m=null;const p=1800,y=u=>{m||(m=u);const a=Math.min((u-m)/p,1),i=1-Math.pow(1-a,3);d(i*t),a<1&&(g=requestAnimationFrame(y))};return g=requestAnimationFrame(y),()=>cancelAnimationFrame(g)},[t]),e.jsxs(e.Fragment,{children:[o,c>0?n.toFixed(c):Math.round(n).toLocaleString(),s]})}function O(){const t=[15,18,22,20,25,28,26,30,32,35,33,38,40,42,41,45,48,50,52,55],s=Math.max(...t),o=t.map((c,n)=>`${n/(t.length-1)*120},${40-c/s*36}`).join(" ");return e.jsxs(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},className:"bg-gray-50 dark:bg-gray-900 border border-gray-100 dark:border-gray-800 rounded-[0.6rem] p-5 max-w-sm","data-testid":"widget-hero-kpi",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[e.jsx(A,{className:"w-3.5 h-3.5 text-gray-500",strokeWidth:1.5}),e.jsx("span",{className:"text-xs font-medium text-gray-500",children:"RFM Segmentation"}),e.jsxs(r.div,{animate:{opacity:[1,.4,1]},transition:{duration:2,repeat:1/0},className:"ml-auto flex items-center gap-1",children:[e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-[var(--hp-green)]"}),e.jsx("span",{className:"text-[8px] text-gray-400",children:"Live"})]})]}),e.jsx("div",{className:"grid grid-cols-2 gap-3 mb-4",children:[{l:"Segments",v:"8",trend:"Active"},{l:"Top Customers",v:"12.4%",trend:"of base"},{l:"Churn Risk",v:"18.7%",trend:"+1.2pp"},{l:"Retention Score",v:"76.2",trend:"+3.4"}].map((c,n)=>e.jsxs(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5,delay:.6},children:[e.jsx("div",{className:"text-[7px] text-gray-400 mb-1",children:c.l}),e.jsx("div",{className:"text-sm font-semibold text-gray-900 dark:text-gray-100 tabular-nums",children:c.v}),e.jsx("div",{className:"text-[8px] tabular-nums text-gray-500",children:c.trend})]}))}),e.jsxs("div",{className:"bg-white dark:bg-gray-950 border border-gray-100 dark:border-gray-800 rounded-lg p-3",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("span",{className:"text-[8px] text-gray-400",children:"Retention Score (12mo)"}),e.jsx("span",{className:"text-[8px] text-gray-500",children:"+3.4"})]}),e.jsxs("svg",{viewBox:"0 0 120 40",className:"w-full h-8",children:[e.jsx("polyline",{points:o,fill:"none",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",className:"stroke-gray-300 dark:stroke-gray-700"}),e.jsx(r.polyline,{points:o,fill:"none",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",initial:{pathLength:0},animate:{pathLength:1},transition:{duration:2,delay:.8},className:"stroke-gray-900 dark:stroke-gray-200"})]})]})]})}const B=[{label:"Total Segments",value:8,suffix:"",prefix:"",icon:I,trend:"Active",trendUp:!0,description:"Number of RFM segments defined for the loyalty customer base"},{label:"Top Customer Share",value:12.4,suffix:"%",prefix:"",icon:j,trend:"of base",trendUp:!0,description:"Percentage of customers in the highest-value RFM segments"},{label:"Churn Risk",value:18.7,suffix:"%",prefix:"",icon:N,trend:"+1.2pp",trendUp:!1,description:"Percentage of customers flagged as at-risk of churning based on RFM scoring"},{label:"Retention Score",value:76.2,suffix:"",prefix:"",icon:_,trend:"+3.4",trendUp:!0,description:"Composite retention health score based on RFM segment distribution"}],K=[{icon:A,title:"Recency Scoring",description:"Measure how recently each customer made their last purchase. Identify customers whose recency is declining and target them before they churn.",metrics:["Days since last transaction per 
1customer","Recency score distribution across base","Recency decay detection and alerting","Recency-based segment migration tracking"]},{icon:R,title:"Frequency Scoring",description:"Track purchase frequency across the customer base. Identify high-frequency buyers, occasional shoppers, and one-time purchasers for differentiated treatment.",metrics:["Transaction count per customer per period","Frequency score distribution chart","Frequency trend over rolling periods","Purchase interval analysis"]},{icon:S,title:"Monetary Scoring",description:"Analyze total spend and average order value per customer. Identify high-value customers and those with growth potential for targeted campaigns.",metrics:["Total spend per customer in period","Monetary score distribution breakdown","AOV comparison across segments","Spend growth rate per segment"]},{icon:j,title:"Segment Distribution",description:"Visualize the distribution of customers across RFM segments. Track segment size changes over time and identify migration patterns between segments.",metrics:["Segment size and percentage of total base","Segment migration flow analysis","Period-over-period segment changes","Cross-segment value comparison"]}],G=["RFM score distribution tracking over rolling periods","Segment size and value trend analysis","Customer migration patterns between segments","Segment-level purchase behavior comparison","Churn rate by RFM segment with historical benchmarks"],J=["Churn probability scoring per customer within segments","Segment migration prediction (next quarter)","Revenue uplift forecasting by segment targeting","Lifetime value prediction per RFM segment","Next-best-action recommendation per segment"];function Q(){const t=[{name:"Champions",pct:12.4,color:"bg-gray-900 dark:bg-gray-100"},{name:"Loyal",pct:18.2,color:"bg-gray-700 dark:bg-gray-300"},{name:"Potential Loyal",pct:14.6,color:"bg-gray-600 dark:bg-gray-400"},{name:"New Customers",pct:8.8,color:"bg-gray-500"},{name:"Promising",pct:11.2,color:"bg-gray-400 dark:bg-gray-500"},{name:"Need Attention",pct:15.4,color:"bg-gray-300 dark:bg-gray-600"},{name:"At Risk",pct:12.2,color:"bg-gray-200 dark:bg-gray-700"},{name:"Hibernating",pct:7.2,color:"bg-gray-100 dark:bg-gray-800"}];return e.jsxs("div",{className:"bg-gray-50 dark:bg-gray-900 rounded-[0.6rem] p-5 border border-gray-100 dark:border-gray-800 overflow-hidden","data-testid":"widget-segment-distribution",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(I,{className:"w-3.5 h-3.5 text-gray-500",strokeWidth:1.5}),e.jsx("span",{className:"text-xs font-semibold text-gray-700 dark:text-gray-300",children:"Segment Distribution"}),e.jsxs(r.div,{animate:{opacity:[1,.4,1]},transition:{duration:2,repeat:1/0},className:"ml-auto flex items-center gap-1",children:[e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-[var(--hp-green)]"}),e.jsx("span",{className:"text-[8px] text-gray-400",children:"Live"})]})]}),e.jsx("div",{className:"grid grid-cols-4 gap-1 mb-3",children:t.map((s,o)=>e.jsx(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5,delay:.1},children:e.jsxs("span",{className:"text-[7px] font-medium text-white dark:text-gray-900 tabular-nums",children:[s.pct,"%"]})}))}),e.jsx("div",{className:"grid grid-cols-4 gap-1",children:t.map(s=>e.jsx("div",{className:"text-center",children:e.jsx("span",{className:"text-[6px] text-gray-400 leading-none",children:s.name})},s.name))})]})}function X(){const t=[{dim:"Recency",scores:[15,22,28,20,15]},{dim:"Frequency",scores:[10,18,32,25,15]},{dim:"Monetary",scores:[12,20,25,28,15]}],s=["1","2","3","4","5"];return e.jsxs("div",{className:"bg-gray-50 dark:bg-gray-900 rounded-[0.6rem] p-5 border border-gray-100 dark:border-gray-800 overflow-hidden","data-testid":"widget-scoring-distribution",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(R,{className:"w-3.5 h-3.5 text-gray-500",strokeWidth:1.5}),e.jsx("span",{className:"text-xs font-semibold text-gray-700 dark:text-gray-300",children:"Scoring Distribution"}),e.jsx("span",{className:"ml-auto text-[8px] text-gray-400",children:"Per dimension"})]}),e.jsx("div",{className:"space-y-3",children:t.map((o,c)=>e.jsxs(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5,delay:.1},children:[e.jsx("div",{className:"text-[8px] font-medium text-gray-600 dark:text-gray-400 mb-1",children:o.dim}),e.jsx("div",{className:"flex gap-0.5 h-4",children:o.scores.map((n,d)=>e.jsx(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5,delay:d*.1},className:`flex-1 ${d>=3?"bg-gray-600 dark:bg-gray-400":d>=2?"bg-gray-400 dark:bg-gray-500":"bg-gray-200 dark:bg-gray-700"} rounded-sm h-full flex items-center justify-center`,children:e.jsxs("span",{className:"text-[6px] font-medium text-white dark:text-gray-900 tabular-nums",children:[n,"%"]})},d))}),e.jsx("div",{className:"flex justify-between mt-0.5",children:s.map(n=>e.jsx("span",{className:"text-[6px] text-gray-400 tabular-nums",children:n},n))})]}))})]})}function Y(){const t=[{from:"Loyal",to:"Champions",count:"2.4K",direction:"up"},{from:"Need Attention",to:"At Risk",count:"1.8K",direction:"down"},{from:"New Customers",to:"Promising",count:"3.1K",direction:"up"},{from:"Promising",to:"Loyal",count:"1.2K",direction:"up"}];return e.jsxs("div",{className:"bg-gray-50 dark:bg-gray-900 rounded-[0.6rem] p-5 border border-gray-100 dark:border-gray-800 overflow-hidden","data-testid":"widget-segment-migration",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(j,{className:"w-3.5 h-3.5 text-gray-500",strokeWidth:1.5}),e.jsx("span",{className:"text-xs font-semibold text-gray-700 dark:text-gray-300",children:"Segment Migration"}),e.jsx("span",{className:"ml-auto text-[8px] text-gray-400",children:"Last 90 days"})]}),e.jsx("div",{className:"space-y-2",children:t.map((s,o)=>e.jsx(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5,delay:.1},children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-[8px] text-gray-500 w-24",children:s.from}),e.jsx(k,{className:"w-3 h-3 text-gray-400"}),e.jsx("span",{className:"text-[8px] font-medium text-gray-700 dark:text-gray-300 w-24",children:s.to}),e.jsx("span",{className:"ml-auto text-[9px] font-semibold text-gray-900 dark:text-gray-100 tabular-nums",children:s.count}),s.direction==="up"?e.jsx(S,{className:"w-3 h-3 text-gray-500"}):e.jsx(N,{className:"w-3 h-3 text-gray-400"})]})}))})]})}function Z(){const t=[{name:"Champions",customers:"12.4%",revenue:"38.2%",aov:"EUR 124"},{name:"Loyal",customers:"18.2%",revenue:"28.6%",aov:"EUR 98"},{name:"At Risk",customers:"12.2%",revenue:"8.4%",aov:"EUR 52"},{name:"Hibernating",customers:"7.2%",revenue:"2.1%",aov:"EUR 28"}];return e.jsxs("div",{className:"bg-gray-50 dark:bg-gray-900 rounded-[0.6rem] p-5 border border-gray-100 dark:border-gray-800 overflow-hidden","data-testid":"widget-segment-value",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5 text-gray-500",strokeWidth:1.5}),e.jsx("span",{className:"text-xs font-semibold text-gray-700 dark:text-gray-300",children:"Segment Value"}
1),e.jsxs(r.div,{animate:{opacity:[1,.4,1]},transition:{duration:2,repeat:1/0},className:"ml-auto flex items-center gap-1",children:[e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-[var(--hp-green)]"}),e.jsx("span",{className:"text-[8px] text-gray-400",children:"Live"})]})]}),e.jsx("div",{className:"space-y-2",children:t.map((s,o)=>e.jsxs(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5,delay:.1},children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsx("span",{className:"text-[9px] font-medium text-gray-700 dark:text-gray-300",children:s.name}),e.jsxs("span",{className:"text-[8px] text-gray-400",children:[s.customers," of base"]})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"flex-1 bg-gray-900 dark:bg-gray-100 rounded-sm h-3 flex items-center justify-center",style:{width:`${parseFloat(s.revenue)*2}%`},children:e.jsxs("span",{className:"text-[7px] font-medium text-white dark:text-gray-900 tabular-nums",children:[s.revenue," rev"]})}),e.jsxs("span",{className:"text-[7px] text-gray-500 tabular-nums w-16 text-right",children:["AOV: ",s.aov]})]})]}))})]})}const ee=[{title:"Segment Distribution",description:"Visualize how your customer base is distributed across RFM segments. Track segment sizes, identify the most valuable groups, and monitor shifts in distribution over time.",details:["Treemap visualization of 8 RFM segments","Segment size as percentage of total base","Period-over-period size change tracking","Revenue concentration per segment"],Widget:Q},{title:"Scoring Distribution",description:"See how customers are distributed across R, F, and M scoring dimensions. Identify where the customer base concentrates and which dimensions drive the most differentiation.",details:["Score distribution bars per dimension (R/F/M)","Cross-dimension correlation analysis","Score threshold configuration","Dimension weighting comparison"],Widget:X},{title:"Segment Migration",description:"Track how customers move between RFM segments over time. Identify positive migrations (upgrades) and negative migrations (downgrades) to target intervention campaigns.",details:["Customer flow between segments (90-day view)","Upgrade vs downgrade migration balance","Migration velocity measurement","Intervention campaign targeting"],Widget:Y},{title:"Segment Value Comparison",description:"Compare the revenue contribution, AOV, and customer concentration across segments. Understand which segments drive the most value and where growth opportunities exist.",details:["Revenue share per segment","AOV comparison across segments","Customer concentration vs revenue concentration","Growth opportunity identification"],Widget:Z}],te=[{metric:"Total Segments",definition:"Number of active RFM segments defined for the customer base",approach:"Historical",audience:"Marketing, Analytics"},{metric:"Recency Score Distribution",definition:"Distribution of customers across recency score buckets (1-5)",approach:"Historical",audience:"Analytics, Marketing"},{metric:"Frequency Score Distribution",definition:"Distribution of customers across frequency score buckets (1-5)",approach:"Historical",audience:"Analytics, Marketing"},{metric:"Monetary Score Distribution",definition:"Distribution of customers across monetary score buckets (1-5)",approach:"Historical",audience:"Analytics, Finance"},{metric:"Champions Share",definition:"Percentage of customers in the highest RFM segment (Champions)",approach:"Historical",audience:"Executive, Marketing"},{metric:"Churn Risk Percentage",definition:"Percentage of customers in At Risk or Hibernating segments",approach:"Both",audience:"Marketing, Retention"},{metric:"Segment Migration Rate",definition:"Percentage of customers who changed RFM segments in the period",approach:"Historical",audience:"Analytics, Marketing"},{metric:"Upgrade Migration",definition:"Count of customers who moved to a higher-value segment",approach:"Historical",audience:"Marketing, Executive"},{metric:"Downgrade Migration",definition:"Count of customers who moved to a lower-value segment",approach:"Historical",audience:"Marketing, Retention"},{metric:"Revenue per Segment",definition:"Total revenue generated by customers in each RFM segment",approach:"Historical",audience:"Executive, Finance"},{metric:"AOV per Segment",definition:"Average order value for customers in each RFM segment",approach:"Historical",audience:"Marketing, Finance"},{metric:"Retention Score",definition:"Composite score measuring overall customer retention health",approach:"Both",audie
1nce:"Executive, Analytics"},{metric:"Segment Revenue Concentration",definition:"Percentage of total revenue contributed by each segment",approach:"Historical",audience:"Executive, Finance"},{metric:"Churn Probability Score",definition:"AI-predicted probability of a customer churning within 90 days",approach:"Predictive",audience:"Marketing, AI/ML"},{metric:"Migration Prediction",definition:"AI-predicted segment a customer will be in next quarter",approach:"Predictive",audience:"Analytics, Marketing"},{metric:"LTV per Segment",definition:"Predicted lifetime value for customers in each RFM segment",approach:"Predictive",audience:"Executive, Finance"},{metric:"Uplift Forecast",definition:"Predicted revenue increase from targeting specific RFM segments",approach:"Predictive",audience:"Marketing, Executive"},{metric:"Next-Best-Action Score",definition:"AI-recommended action per segment for maximum retention impact",approach:"Predictive",audience:"Marketing, AI/ML"}];function Fe(){V({pageId:"solutions/rfm-analysis"});const{t}=P(),s=L(),[o,c]=x.useState(()=>{try{return sessionStorage.getItem("performUnlocked")==="true"}catch{return!1}}),[n,d]=x.useState(""),[g,m]=x.useState(null),[p,y]=x.useState(!1),u=async a=>{if(a.preventDefault(),!!n.trim()){y(!0),m(null);try{const l=await(await fetch("/api/unlock-results",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:n.trim()})})).json();if(l.success){c(!0);try{sessionStorage.setItem("performUnlocked","true")}catch{}d("")}else m(l.error||"Invalid access code")}catch{m("Something went wrong. Please try again.")}finally{y(!1)}}};return o?e.jsxs("div",{className:"min-h-screen bg-white dark:bg-gray-950",children:[e.jsx(M,{title:t("rfm.seo_title","RFM Analysis - Synerise"),description:t("rfm.seo_desc","RFM segmentation of loyalty customers. Segment distribution, scoring analysis, migration tracking, and value comparison."),path:"/solutions/rfm-analysis"}),e.jsx(D,{}),e.jsxs("section",{className:"pt-32 pb-20 md:pt-40 md:pb-28 relative","data-testid":"section-rfm-hero",children:[e.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[e.jsx("div",{className:"absolute top-20 left-1/4 w-96 h-96 bg-gray-400/5 rounded-full blur-[120px]"}),e.jsx("div",{className:"absolute bottom-20 right-1/4 w-80 h-80 bg-gray-500/5 rounded-full blur-[100px]"})]}),e.jsx("div",{className:"relative z-10 max-w-7xl mx-auto px-6 lg:px-8",children:e.jsxs("div",{className:"grid md:grid-cols-2 gap-12 items-center",children:[e.jsxs(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-1.5 rounded-full border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900 mb-6",children:[e.jsx(j,{className:"w-3.5 h-3.5 text-gray-900 dark:text-gray-100",strokeWidth:1.5}),e.jsx("span",{className:"text-xs font-medium text-gray-500 tracking-wide",children:t("rfm.badge","RFM Analysis")})]}),e.jsxs("h1",{className:"text-4xl md:text-6xl lg:text-7xl font-medium text-gray-900 dark:text-gray-100 mb-6 leading-tight tracking-tight","data-testid":"text-rfm-title",children:[t("rfm.hero_title_1","Know your customers."),e.jsx("br",{}),t("rfm.hero_title_2","Segment by value.")]}),e.jsx("p",{className:"text-lg md:text-xl text-gray-500 max-w-lg leading-relaxed mb-10","data-testid":"text-rfm-subtitle",children:t("rfm.hero_subtitle","Recency, frequency, monetary segmentation — with migration tracking, scoring distribution, and AI-powered predictions.")}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsx(v,{href:F(s,"rfm-analysis"),children:e.jsxs(h,{size:"lg",className:"bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-900 rounded-full gap-2","data-testid":"button-rfm-demo",children:[t("rfm.cta_demo","Request a demo")," ",e.jsx(k,{className:"w-4 h-4"})]})}),e.jsx(v,{href:"/contact",children:e.jsx(h,{variant:"outline",size:"lg",className:"rounded-full","data-testid":"button-rfm-contact",children:t("rfm.talk_to_sales","Talk to sales")})})]})]}),e.jsx("div",{className:"hidden md:flex justify-end",children:e.jsx(O,{})})]})})]}),e.jsx("section",{className:"py-16 md:py-20 bg-gray-50 dark:bg-gray-900","data-testid":"section-rfm-kpis",children:e.jsx("div",{className:"max-w-7xl mx-auto px-6 lg:px-8",children:e.jsx("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-6",children:B.map((a,i)=>{const l=a.icon;return e.jsxs(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},children:[e.jsx(l,{className:"w-5 h-5 text-gray-500 mx-auto mb-2",strokeWidth:1.5}),e.jsx("p",{className:"text-3xl md:text-4xl font-medium text-gray-900 dark:text-gray-100 mb-1 tabular-nums",children:e.jsx(q,{target:a.value,prefix:a.prefix,suffix:a.suffix,decimals:a.suffix==="%"?1:0})}),e.jsx("p",{className:"text-sm text-gray-500",children:t(`rfm.kpi_${i}_label`,a.label)}),e.jsxs("span",{className:"inline-flex items-center gap-1 text-xs text-gray-400 mt-1",children:[a.trendUp?e.jsx(S,{className:"w-3 h-3",strokeWidth:1.5}):e.jsx(N,{className:"w-3 h-3",strokeWidth:1.5}),a.trend]})]})})})})}),e.jsx("section",{className:"py-20 md:py-28 bg-white dark:bg-gray-950","data-testid":"section-rfm-domains",children:e.jsxs("div",{className:"max-w-7xl mx-auto px-6 lg:px-8",children:[e.jsxs(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},className:"text-center mb-16",children:[e.jsx("h2",{className:"text-3xl md:text-5xl font-medium text-gray-900 dark:text-gray-100 mb-4 tracking-tight","data-testid":"text-rfm-domains-title",children:t("rfm.domains_title","What you can measure")}),e.jsx("p",{className:"text-lg text-gray-500 max-w-2xl mx-auto",children:t("rfm.domains_subtitle","Four measurement domains covering every dimension of RFM segmentation.")})]}),e.jsx("div",{className:"space-y-6",children:K.map((a,i)=>{const l=a.icon;return e.jsx(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},children:e.jsxs("div",{className:"grid md:grid-cols-[1fr_1fr] gap-8 items-start",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[e.jsx(l,{className:"w-5 h-5 text-gray-900 dark:text-gray-100",strokeWidth:1.5}),e.jsx("h3",{className:"text-xl font-medium text-gray-900 dark:text-gray-100",children:t(`rfm.domain_${i}_title`,a.title)})]}),e.jsx("p",{className:"text-sm text-gray-500 leading-relaxed",children:t(`rfm.domain_${i}_desc`,a.description)})]}),e.jsx("div",{className:"space-y-2.5",children:a.metrics.map((f,b)=>e.jsxs("div",{className:"flex items-start gap-2.5",children:[e.jsx(w,{className:"w-4 h-4 text-gray-900 dark:text-gray-100 mt-0.5 flex-shrink-0",strokeWidth:1.5}),e.jsx("span",{className:"text-sm text-gray-600 dark:text-gray-400",children:t(`rfm.domain_${i}_metric_${b}`,f)})]},b))})]})})})})]})}),e.jsx("section",{className:"py-20 md:py-28 bg-gray-50 dark:bg-gray-900","data-testid":"section-rfm-lenses",children:e.jsxs("div",{className:"max-w-7xl mx-auto px-6 lg:px-8",children:[e.jsxs(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},className:"text-center mb-16",children:[e.jsx("h2",{className:"text-3xl md:text-5xl font-medium text-gray-900 dark:text-gray-100 mb-4 tracking-tight","data-testid":"text-rfm-lenses-title",children:t("rfm.lenses_title","Two anal
1ytical lenses")}),e.jsx("p",{className:"text-lg text-gray-500 max-w-2xl mx-auto",children:t("rfm.lenses_subtitle","Combine backward-looking RFM analysis with forward-looking AI predictions for complete customer intelligence.")})]}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6 max-w-4xl mx-auto",children:[e.jsxs(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},className:"rounded-[0.6rem] border border-gray-100 dark:border-gray-800 bg-white dark:bg-gray-900 p-8","data-testid":"card-rfm-lens-historical",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[e.jsx(H,{className:"w-5 h-5 text-gray-900 dark:text-gray-100",strokeWidth:1.5}),e.jsx("h3",{className:"text-lg font-medium text-gray-900 dark:text-gray-100",children:t("rfm.lens_hist_title","Historical Analysis")})]}),e.jsx("p",{className:"text-sm text-gray-500 leading-relaxed mb-5",children:t("rfm.lens_hist_desc","Analyze segment distribution, migration patterns, and value trends over time.")}),e.jsx("div",{className:"space-y-2.5",children:G.map((a,i)=>e.jsxs(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5,delay:.1},children:[e.jsx(w,{className:"w-4 h-4 text-gray-900 dark:text-gray-100 mt-0.5 flex-shrink-0",strokeWidth:1.5}),e.jsx("span",{className:"text-sm text-gray-600 dark:text-gray-400",children:t(`rfm.hist_cap_${i}`,a)})]}))})]}),e.jsxs(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},className:"rounded-[0.6rem] border border-gray-900 dark:border-gray-100 bg-gray-900 dark:bg-gray-100 p-8","data-testid":"card-rfm-lens-predictive",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[e.jsx(z,{className:"w-5 h-5 text-white dark:text-gray-900",strokeWidth:1.5}),e.jsx("h3",{className:"text-lg font-medium text-white dark:text-gray-900",children:t("rfm.lens_pred_title","Predictive Intelligence")})]}),e.jsx("p",{className:"text-sm text-gray-400 dark:text-gray-600 leading-relaxed mb-5",children:t("rfm.lens_pred_desc","Churn probability scoring, segment migration prediction, and lifetime value forecasting.")}),e.jsx("div",{className:"space-y-2.5",children:J.map((a,i)=>e.jsxs(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5,delay:.1},children:[e.jsx(w,{className:"w-4 h-4 text-gray-500 mt-0.5 flex-shrink-0",strokeWidth:1.5}),e.jsx("span",{className:"text-sm text-gray-300 dark:text-gray-700",children:t(`rfm.pred_cap_${i}`,a)})]}))})]})]})]})}),e.jsxs("section",{className:"py-20 md:py-28 bg-white dark:bg-gray-950 relative overflow-hidden","data-testid":"section-rfm-dashboards",children:[e.jsx("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:Array.from({length:8}).map((a,i)=>e.jsx(r.div,{className:"absolute rounded-full bg-gray-300/20 dark:bg-gray-600/10",style:{width:3+i*.4,height:3+i*.4,left:`${10+i*11}%`,top:`${15+i*9}%`},animate:{y:[0,-20,10,-15,0],opacity:[.15,.4,.2,.35,.15]},transition:{duration:12+i*1.2,repeat:1/0,ease:"easeInOut"}},i))}),e.jsxs("div",{className:"relative z-10 max-w-7xl mx-auto px-6 lg:px-8",children:[e.jsxs(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},className:"text-center mb-14",children:[e.jsx("p",{children:t("rfm.dash_badge","Dashboard Deep-Dive")}),e.jsx("h2",{className:"text-2xl md:text-3xl font-medium text-gray-900 dark:text-gray-100 mb-3","data-testid":"text-rfm-dashboards-title",children:t("rfm.dash_title","See RFM segmentation in action")}),e.jsx("p",{className:"text-gray-400 max-w-2xl mx-auto leading-relaxed",children:t("rfm.dash_subtitle","Each reporting module provides live widgets, interactive charts, and drill-down capability.")})]}),e.jsx("div",{className:"space-y-12",children:ee.map((a,i)=>{const l=a.Widget,f=i%2===1;return e.jsx(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},children:e.jsxs("div",{className:"grid md:grid-cols-2 gap-8 items-start",children:[e.jsxs("div",{className:f?"md:order-2":"",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 mb-5",children:[e.jsx(R,{className:"w-3.5 h-3.5 text-gray-400",strokeWidth:1.5}),e.jsx("span",{className:"text-xs font-medium text-gray-500 uppercase tracking-wider",children:a.title})]}),e.jsx("p",{className:"text-gray-500 leading-relaxed mb-6",children:t(`rfm.dash_${i}_desc`,a.description)}),e.jsx("div",{className:"space-y-2.5",children:a.details.map((b,C)=>e.jsxs(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5,delay:.1},children:[e.jsx($,{className:"w-4 h-4 text-gray-400 flex-shrink-0 mt-0.5",strokeWidth:1.5}),e.jsx("span",{className:"text-sm text-gray-600 dark:text-gray-400",children:t(`rfm.dash_${i}_detail_${C}`,b)})]}))})]}),e.jsx("div",{className:f?"md:order-1":"",children:e.jsx(l,{})})]})})})})]})]}),e.jsx("section",{className:"py-20 md:py-28 bg-gray-50 dark:bg-gray-900","data-testid":"section-rfm-reference",children:e.jsxs("div",{className:"max-w-7xl mx-auto px-6 lg:px-8",children:[e.jsxs(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},className:"text-center mb-16",children:[e.jsx("h2",{className:"text-3xl md:text-5xl font-medium text-gray-900 dark:text-gray-100 mb-4 tracking-tight","data-testid":"text-rfm-reference-title",children:t("rfm.ref_title","Full KPI reference")}),e.jsx("p",{className:"text-lg text-gray-500 max-w-2xl mx-auto",children:t("rfm.ref_subtitle","Every metric tracked by the RFM anal
1ysis platform — with definitions, analytical approach, and target audience.")})]}),e.jsx(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},className:"overflow-hidden rounded-[0.55rem] border border-gray-100 dark:border-gray-800 max-w-4xl mx-auto","data-testid":"table-rfm-kpi-reference",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-white dark:bg-gray-900",children:[e.jsx("th",{className:"text-left text-xs font-medium text-gray-500 px-6 py-3",children:"Metric"}),e.jsx("th",{className:"text-left text-xs font-medium text-gray-500 px-4 py-3 hidden sm:table-cell",children:"Definition"}),e.jsx("th",{className:"text-center text-xs font-medium text-gray-500 px-4 py-3",children:"Approach"}),e.jsx("th",{className:"text-left text-xs font-medium text-gray-500 px-4 py-3 hidden md:table-cell",children:"Audience"})]})}),e.jsx("tbody",{children:te.map((a,i)=>e.jsxs(r.tr,{initial:{opacity:0,x:-10},whileInView:{opacity:1,x:0},viewport:{once:!0},transition:{delay:i*.03},className:"border-t border-gray-100 dark:border-gray-800",children:[e.jsx("td",{className:"text-sm font-medium text-gray-700 dark:text-gray-300 px-6 py-3 whitespace-nowrap",children:a.metric}),e.jsx("td",{className:"text-sm text-gray-500 px-4 py-3 hidden sm:table-cell max-w-xs",children:a.definition}),e.jsx("td",{className:"text-center px-4 py-3",children:e.jsx("span",{className:`text-xs font-medium px-2.5 py-0.5 rounded-full whitespace-nowrap ${a.approach==="Historical"?"bg-gray-100 dark:bg-gray-800 text-gray-600 dark:text-gray-400":a.approach==="Predictive"?"bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-900":"bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-300"}`,children:a.approach})}),e.jsx("td",{className:"text-sm text-gray-500 px-4 py-3 hidden md:table-cell",children:a.audience})]},a.metric))})]})})})]})}),e.jsx("section",{className:"py-20 md:py-28 bg-gray-50 dark:bg-gray-900","data-testid":"section-rfm-cta",children:e.jsx("div",{className:"max-w-7xl mx-auto px-6 lg:px-8 text-center",children:e.jsxs(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},children:[e.jsx("h2",{className:"text-3xl md:text-5xl font-medium text-gray-900 dark:text-gray-100 mb-6 tracking-tight","data-testid":"text-rfm-cta-title",children:t("rfm.cta_title","Ready to segment by value?")}),e.jsx("p",{className:"text-lg text-gray-600 dark:text-gray-400 max-w-2xl mx-auto mb-10",children:t("rfm.cta_subtitle","See how RFM segmentation turns customer data into actionable targeting. Get a personalized walkthrough.")}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-3",children:[e.jsx(v,{href:F(s,"rfm-analysis"),children:e.jsxs(h,{size:"lg",className:"bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-900 hover:bg-gray-800 dark:hover:bg-gray-200 rounded-full gap-2","data-testid":"button-rfm-cta-demo",children:[t("rfm.cta_button","Book a demo")," ",e.jsx(k,{className:"w-4 h-4"})]})}),e.jsx(v,{href:"/case-studies",children:e.jsx(h,{variant:"outline",size:"lg",className:"rounded-full text-gray-900 dark:text-gray-100 border-gray-300 dark:border-gray-700","data-testid":"button-rfm-cta-cases",children:t("rfm.view_cases","View case studies")})})]})]})})}),e.jsx(U,{})]}):e.jsxs("div",{className:"min-h-screen bg-white dark:bg-gray-950 flex items-center justify-center px-6",children:[e.jsx(M,{title:"RFM Analysis — Synerise",description:"RFM segmentation of loyalty customers.",path:"/solutions/rfm-analysis",noIndex:!0}),e.jsxs(r.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},className:"w-full max-w-sm",children:[e.jsxs("div",{className:"text-center space-y-3 mb-6",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-gray-100 dark:bg-gray-800 flex items-center justify-center mx-auto",children:e.jsx(T,{className:"w-5 h-5 text-gray-600 dark:text-gray-400"})}),e.jsx(W,{className:"h-3.5 text-black dark:text-white mx-auto"}),e.jsx("h3",{className:"text-xl font-medium text-gray-900 dark:text-gray-100","data-testid":"text-rfm-lock-title",children:"RFM Analysis"}),e.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:"Enter the access code to view this page."})]}),e.jsxs("form",{onSubmit:u,className:"space-y-4","data-testid":"form-rfm-unlock",children:[e.jsx("input",{type:"text",value:n,onChange:a=>d(a.target.value),placeholder:"Access code",className:"w-full px-4 py-3 rounded-lg border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900 text-gray-900 dark:text-gray-100 placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-gray-300 dark:focus:ring-gray-600 focus:border-transparent text-center text-lg tracking-widest",disabled:p,"data-testid":"input-rfm-access-code"}),g&&e.jsx("p",{className:"text-red-600 text-sm text-center","data-testid":"text-rfm-error",children:g}),e.jsx(h,{type:"submit",disabled:p||!n.trim(),className:"w-full rounded-full bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-900 h-11","data-testid":"button-rfm-unlock",children:p?e.jsx(E,{className:"w-4 h-4 animate-spin"}):"Unlock"})]})]})]})}export{Fe as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.