وقتی برای اولین بار مدیریت دیجیتال مارکتینگ یک کسبوکار را بهطور کامل قبول کردم، خیلی زود متوجه شدم مسئله فقط سئو، تبلیغات، شبکههای اجتماعی یا تولید محتوا نیست. اگر قرار بود مسئول افزایش فروش باشم، قبل از هر تصمیمی باید میفهمیدم داخل این کسبوکار دقیقاً چه اتفاقی در حال رخ دادن است.
مشتریها چه کسانی هستند؟ چند بار خرید کردهاند؟ آخرین خریدشان چه زمانی بوده؟ کدام محصولات بیشتر فروش میروند؟ کدام کالاها مدت زیادی در انبار ماندهاند؟ مشتریان ارزشمند ما چه کسانی هستند؟ متوسط مبلغ هر سفارش چقدر است و یک مشتری در طول زمان چه ارزشی برای کسبوکار ایجاد میکند؟
برای من تصمیم گرفتن بدون این اطلاعات شبیه پزشکی بود که بدون دیدن جواب آزمایش برای بیمار نسخه بنویسد. شاید بعضی تصمیمها درست از آب دربیایند، اما دیگر اسمش تحلیل نیست؛ بیشتر شبیه حدس زدن است.
مسیر کاری من از سئو شروع شده بود. بعدتر با شرکت در دورههای MBA و DBA، بازاریابی را جدیتر دنبال کردم و کمکم به این نتیجه رسیدم که مسیر اصلی کارم را روی ترکیب این دو حوزه، یعنی دیجیتال مارکتینگ، قرار بدهم. سئو به من یاد داده بود داده را ببینم، رفتار کاربر را بررسی کنم و برای تصمیمها دنبال شواهد باشم؛ بازاریابی هم کمک کرده بود بفهمم این دادهها در نهایت باید به تصمیم تجاری منجر شوند.
وقتی یکی از کارفرماهایی که قبلاً با او همکاری داشتم، مدیریت دیجیتال مارکتینگ مجموعهاش را به من سپرد، اولین مسئله جدی من همین بود. برای اینکه بفهمم کجا باید بودجه بیشتری خرج شود، چه مشتریهایی باید دوباره فعال شوند، کدام محصولات ارزش تبلیغ دارند و حتی چه کانالی واقعاً فروش ایجاد کرده، به دادهای احتیاج داشتم که پراکنده نباشد.
من به یک CRM معمولی نیاز نداشتم
اولین راهحل این بود که سراغ CRMهای موجود بازار بروم. چند گزینه را بررسی کردم، اما خیلی زود فهمیدم چیزی که من میخواهم دقیقاً با تعریف رایج CRM یکسان نیست.
برای من CRM فقط جایی برای ثبت نام، شماره تماس و وضعیت پیگیری مشتری نبود. میخواستم فروش، مشتری، محصول، موجودی، کمپین و رفتار خرید را کنار هم ببینم. در واقع بیشتر از اینکه فقط دنبال یک CRM باشم، به ترکیبی از CRM و هوش تجاری نیاز داشتم.
مثلاً میخواستم سیستم بتواند نشان بدهد کدام مشتری اخیراً خرید کرده، کدام مشتری مدت زیادی است برنگشته، چه کسی دفعات خرید بیشتری داشته و کدام مشتری در مجموع ارزش مالی بالاتری ایجاد کرده است. این همان منطقی است که در تحلیل RFM استفاده میشود؛ یعنی بررسی تازگی خرید، تعداد خرید و ارزش مالی مشتری.
در کنار آن، لازم داشتم بتوانم میانگین ارزش سفارش، ارزش طول عمر مشتری، فروش هر محصول، وضعیت موجودی و کالاهای کم فروش را هم بررسی کنم. برای کمپینهای بازاریابی هم باید امکان جدا کردن سگمنتهای مختلف مشتری وجود میداشت.
مثلاً مشتریای که سه ماه است خرید نکرده، نباید همان پیامی را بگیرد که مشتری VIP هفته قبل دریافت کرده است. اگر دادهها را درست تفکیک کنیم، حتی یک کمپین پیامکی ساده هم میتواند هدفمندتر شود.
CRMهای موجود الزاماً بد نبودند. مسئله این بود که من ابزاری میخواستم که بر اساس شیوه تصمیمگیری خودم در بازاریابی ساخته شود، نه اینکه من مجبور شوم فرایند کاریام را با محدودیتهای یک نرمافزار آماده تطبیق بدهم.
در نهایت یک سؤال برایم شکل گرفت: اگر چیزی که دقیقاً نیاز دارم وجود ندارد، آیا میتوانم خودم آن را بسازم؟
مشکل این بود که من برنامهنویس نبودم.
نقطه شروع من، ساخت نرمافزار با کمک هوش مصنوعی بود
شروع کردم به بررسی اینکه اصلاً ساخت یک نرمافزار واقعی با کمک هوش مصنوعی تا چه اندازه امکانپذیر است. تا قبل از آن، استفاده من از هوش مصنوعی بیشتر در حد تحلیل، ایده گرفتن، نوشتن یا حل بعضی مسائل روزمره بود. اما اینجا مسئله متفاوت بود؛ من میخواستم یک سیستم واقعی بسازم.
در همین مسیر با روش توسعهای آشنا شدم که معمولاً وایب کدینگ صدایش میزنند. ایده اصلی برای من جذاب بود: لازم نبود ابتدا تبدیل به یک برنامهنویس حرفهای شوم و بعد پروژه را شروع کنم. میتوانستم منطق سیستم، ورودیها، خروجیها و نیازهایم را مرحلهبهمرحله تعریف کنم و از هوش مصنوعی برای تبدیل این منطق به کد کمک بگیرم.
برای من، نقطه شروع یادگیری از اینجا بود . بعد ازمطالعه جزئیات نگاهم تغییر کرد. دیگر سؤال اصلیام این نبود که چطور برنامهنویسی را از صفر تا صد یاد بگیرم؛ سؤال این بود که چطور چیزی را که در ذهنم دارم آنقدر دقیق تعریف کنم که بتوانم مرحلهبهمرحله آن را بسازم.
اولین نسخه قرار نبود یک سیستم بزرگ باشد. من مسئله را تا جای ممکن کوچک کردم. ابتدا باید اطلاعات مشتریها و فروش را میدیدم. بعد فیلتر و جستجو اضافه شد. سپس سوابق مشتری، محصولات، موجودی و گزارشهای فروش وارد سیستم شدند.
هر بار که در کار واقعی به یک سؤال جدید میرسیدم، همان سؤال تبدیل به قابلیت بعدی CRM میشد.
مثلاً وقتی میخواستم مشتریهای ارزشمند را پیدا کنم، تحلیل RFM به سیستم اضافه شد. وقتی نیاز داشتم بدانم چه کالاهایی در انبار ماندهاند، بخش موجودی توسعه پیدا کرد. وقتی گزارشهای مدیریتی پیچیدهتر شدند، گزارشهای جدولی و نموداری هم اضافه شدند.
بهمرور سیستم از یک ابزار ساده ثبت اطلاعات فاصله گرفت و تبدیل شد به داشبوردی که میتوانست بخشی از تصمیمهای بازاریابی من را بر اساس داده پشتیبانی کند.

CRM کمکم تبدیل به یک سیستم واقعی شد
با بزرگتر شدن پروژه، خودم هم متوجه شدم دیگر نمیشود همهچیز را در چند فایل ساده نگه داشت. هر قابلیت جدید اگر بدون ساختار اضافه میشد، احتمال خراب کردن بخشهای دیگر را بالا میبرد. بنابراین معماری پروژه هم بهمرور جدیتر شد.
سیستم را به چند لایه جدا تقسیم کردم. یک بخش فقط مسئول نگهداری وضعیت دادههاست، یک بخش ارتباط با API و سرور را انجام میدهد، بخشهای جداگانهای برای کاربران، فروش، موجودی، محصولات، گزارشها و نمودارها وجود دارد و سرویسهای دیگر هم مسئول اتصال به پیامک یا هوش مصنوعی هستند.
این جداسازی برایم مهم بود، چون وقتی یک سیستم بزرگ میشود، اگر همه منطق آن در چند فایل درهمریخته باشد، هوش مصنوعی هم در تغییر دادن کد احتمال خطای بیشتری دارد. هرچه مرز مسئولیت فایلها مشخصتر باشد، توسعه و رفع باگ هم قابلکنترلتر میشود.
در بخش رابط کاربری از JavaScript ماژولار استفاده کردم و دادهها از طریق یک وضعیت مرکزی مدیریت میشوند. یکی از چیزهایی که در ادامه یاد گرفتم این بود که تغییر مستقیم دادهها میتواند خطاهای عجیب ایجاد کند. برای همین تغییر وضعیتها از یک مسیر مشخص انجام میشود و بخشهای مختلف رابط کاربری بر اساس همان تغییرات بهروزرسانی میشوند.
در سمت سرور هم ارتباط با دیتابیس از طریق API انجام میشود و دادهها بهصورت JSON بین کلاینت و سرور جابهجا میشوند. برای بعضی اطلاعاتی که لازم نیست هر بار دوباره از سرور گرفته شوند، از ذخیرهسازی محلی مرورگر هم استفاده کردم تا سرعت کار بهتر شود.
اینها چیزهایی نبودند که روز اول بدانم. بیشترشان زمانی وارد پروژه شدند که یک مشکل واقعی ایجاد شد و مجبور شدم برایش راهحل پیدا کنم.

بخش مهمتر برای من، تحلیل داده بود
هدف اصلی من از ساخت این سیستم هیچوقت صرفاً برنامهنویسی نبود. دلیل ساخت CRM این بود که بتوانم تصمیمهای بازاریابی دقیقتری بگیرم.
الان دیگه در داشبورد میتوانم شاخصهایی مثل میانگین ارزش سفارش و ارزش طول عمر مشتری را ببینم. مشتریهای VIP را جدا کنم و رفتار خرید گروههای مختلف را بررسی کنم.
برای سگمنتبندی مشتریها هم از منطق RFM استفاده میکنم. سیستم بر اساس سه عامل تازگی خرید، تعداد دفعات خرید و مجموع ارزش مالی مشتریها را دستهبندی میکند. به این ترتیب بهجای اینکه با تمام مشتریها یکسان رفتار کنم، میتوانم برای هر گروه تصمیم متفاوتی بگیرم.
در بخش محصولات و موجودی هم صرفاً تعداد کالاها نمایش داده نمیشود. هدف این است که داده فروش و موجودی در کنار هم دیده شوند تا بتوان محصولاتی را که سرعت فروش پایینتری دارند یا مدت زیادی در انبار ماندهاند شناسایی کرد.
بخش گزارشها نیز بهمرور جدیتر شد. گزارشهای جدولی، نمودارهای فروش، تحلیل جغرافیایی، رفتار مشتری و حتی تحلیل Cohort به سیستم اضافه شدند تا فقط یک عدد کلی از فروش نبینم و بتوانم تغییر رفتار مشتریان در طول زمان را هم بررسی کنم.
امکان خروجی گرفتن از دادهها به اکسل هم اضافه شد، چون هنوز در خیلی از تصمیمهای روزمره کسبوکار، اکسل ابزار مهمی است و گاهی لازم است دادهها خارج از CRM هم بررسی شوند.
بعد هوش مصنوعی را داخل خود CRM آوردم
در مرحله بعد به این فکر کردم که چرا هوش مصنوعی فقط توسعهدهنده CRM باشد؟ چرا خودش داخل سیستم حضور نداشته باشد؟
اینجا بخش دیگری از پروژه شکل گرفت. یک سرویس هوش مصنوعی به سیستم اضافه کردم که بتواند روی دادهها کار کند. هدف این بود که در بعضی تحلیلها بهجای ساخت فیلترهای متعدد، بتوانم سؤال را به زبان طبیعی مطرح کنم.
مثلاً بهجای اینکه چند فیلتر مختلف تنظیم کنم، بتوانم بپرسم کدام مشتریها در یک بازه مشخص خرید بالایی داشتهاند اما مدتی است برنگشتهاند. سیستم باید سؤال را بفهمد، داده مناسب را استخراج کند و نتیجه قابل استفاده برگرداند.
البته این قسمت حساستر از یک چت ساده با هوش مصنوعی است. وقتی یک مدل به دادههای واقعی کسبوکار متصل میشود، باید روی نوع کوئریها، دسترسیها و خروجیها کنترل وجود داشته باشد. بنابراین بخش هوش مصنوعی هم بهصورت یک سرویس مجزا طراحی شد، نه اینکه مدل مستقیماً به تمام بخشهای سیستم دسترسی آزاد داشته باشد.
از هوش مصنوعی برای پردازش گروهی بعضی دادهها هم استفاده کردم؛ کارهایی که اگر قرار بود دستی انجام شوند زمان زیادی میگرفتند. اینجا دیگر AI فقط ابزاری برای تولید متن نبود؛ بخشی از زیرساخت تحلیل داده شده بود.
هوش مصنوعی کد مینوشت، اما تصمیمها همچنان با من بود
یکی از چیزهایی که در طول این پروژه برایم روشن شد این بود که ساخت نرمافزار با هوش مصنوعی به معنی فشار دادن یک دکمه و تحویل گرفتن محصول نهایی نیست.
هوش مصنوعی میتواند کد بنویسد، خطا را پیدا کند و حتی درباره معماری پیشنهاد بدهد، اما اگر خودت ندانی چه مسئلهای را میخواهی حل کنی، خروجی خیلی سریع تبدیل به مجموعهای از قابلیتهای پراکنده میشود.
هر قابلیت قبل از توسعه نیاز داشت دقیق مشخص شود، داده از کجا میآید، چه پردازشی روی آن انجام میشود، چه کسی باید آن را ببیند، نتیجه کجا نمایش داده شود و اگر بخشی از فرایند شکست خورد سیستم چه رفتاری داشته باشد.
با بزرگتر شدن پروژه، امنیت هم جدیتر شد. دادهای که از دیتابیس یا کاربر وارد رابط کاربری میشود نباید مستقیماً وارد صفحه شود؛ چون میتواند مسیر حملات XSS را باز کند. بنابراین دادههای داینامیک قبل از نمایش پاکسازی میشوند.
مدیریت خطا هم اهمیت پیدا کرد. اگر یکی از درخواستهای API شکست بخورد یا داده ناقص برگردد، نباید کل داشبورد از کار بیفتد. برای همین کنترل خطا و بررسی مقادیر خالی یا نامعتبر به بخش ثابتی از منطق سیستم تبدیل شد.
در نمودارها حتی موضوع مدیریت حافظه مهم شد. اگر نمودارهای قبلی قبل از ساخت نمونه جدید پاک نشوند، در استفاده طولانیمدت میتوانند باعث مصرف بیدلیل حافظه شوند. اینها همان جزئیاتی هستند که در نسخه اولیه اصلاً به آنها فکر نمیکردم.
من هنوز خودم را برنامهنویس حرفهای نمیدانم. تخصص اصلی من همچنان دیجیتال مارکتینگ، سئو و تحلیل کسبوکار است. اما تفاوت بزرگی ایجاد شده است: حالا وقتی برای حل یک مسئله به ابزار نیاز دارم، لزوماً منتظر نمیمانم کسی آن ابزار را برایم بسازد.
میتوانم مسئله را تعریف کنم، منطقش را طراحی کنم، نسخه اولیه را با کمک هوش مصنوعی بسازم، آن را در کار واقعی تست کنم و بعد مرحلهبهمرحله بهترش کنم.
CRM من هم دقیقاً با همین روش شکل گرفت. از یک نیاز ساده برای دیدن دادههای فروش شروع شد و امروز به سیستمی رسیده که مشتری، فروش، موجودی، محصولات، گزارشهای مدیریتی، کمپین پیامکی، تحلیل RFM و حتی هوش مصنوعی را در کنار هم قرار داده است.
برای من مهمترین نتیجه این تجربه خود CRM نبود. مهمتر از آن، تغییر نوع نگاه من به ساخت ابزار بود.
قبلاً وقتی در کارم به قابلیتی نیاز داشتم که وجود نداشت، اولین سؤالم این بود که چه کسی میتواند آن را برایم برنامهنویسی کند.
حالا سؤال اولم این است:
آیا میتوانم نسخه اولش را خودم با کمک هوش مصنوعی بسازم؟