
«حذفنا العرق والدخل من النموذج» هي الجملة التي تخسر قضية التسعير الديناميكي
في ديسمبر 2025، توصلت لجنة التجارة الفيدرالية (FTC) إلى تسوية بقيمة 60 مليون دولار مع Instacart بشأن تجارب تسعير Eversight، ووثقت الشكوى تباينات في أسعار السلع المتطابقة وصلت إلى 23%. ولم تضطر FTC أبداً إلى إثبات ما تم تلقينه للخوارزمية؛ بل استندت الدعوى إلى الأسعار التي عُرضت فعلياً على متسوقين مختلفين للسلعة نفسها.
الجملة التي يلجأ إليها كل فريق تسعير هي النقيض التام للحجة القائمة على النتائج: لقد حذفنا العرق والدخل من النموذج. أنا أصدق الفرق التي تقول ذلك. لكني أعتقد أيضاً أنها الجملة التي تخسر القضية في المحكمة، وبدلاً من مناقشة ذلك في إطار نظري مجرد، قمت ببناء محرك تسعير يمكنه قول ذلك بصدق عن نفسه، ثم أخضعته للتدقيق. المحرك عبارة عن LinUCB contextual bandit بسبعة خيارات تسعير، تم تهيئته بالبذرة 42، وتم تدريبه ليكون مثالياً في الإيرادات على مجتمع تركيبي مكون من 10,000 متسوق قمت بتوليده مع زرع بنية المتغيرات البديلة (proxies) عمداً. وأطلقت على متجر التجزئة الخيالي اسم ShopMart. لم يتم تدقيق أي متجر حقيقي ولم يتم فرض رسوم زائدة على أي متسوق حقيقي، وهذا هو السبب تحديداً الذي يجعلني أعرف الحقيقة الأساسية (ground truth) ويمكنني تقييم التدقيق بناءً عليها. والطبقة العليا عبارة عن وحدة تحكم أطلقت عليها اسم Equity، صُممت لتعمل فوق أي محرك تسعير يمتلكه بائع التجزئة بالفعل؛ وفي هذا البناء، المحرك الخاضع للتدقيق هو الـ bandit الخاص بي. والدليل التوضيحي الكامل متاح على veriprajna.com/demos/ai-pricing-compliance.
سماعات الأذن نفسها، والطلب متطابق، وزيادة بنسبة 26%
أعطيتُ الـ bandit تسعة مدخلات وليس بينها سمة محمية واحدة: مؤشر دخل الرمز البريدي، ومستوى الجهاز، ومصدر الإحالة، ووقت المكوث، وحجم عربة التسوق، ومعدل تكرار الشراء، وعدد الجلسات، والعضوية المميزة، وساعة اليوم، بالإضافة إلى الحدود المتقاطعة للإحالة مع المكوث، لأن العديد من المحركات الحقيقية تحمل حدوداً متقاطعة أو أشجاراً وأردت أن يتمكن محركي من محاكاة كل ما تفعله محركاتهم. ثم تركته يسعر وحدة تخزين واحدة (SKU)، وهي Aura Wireless Earbuds، بسعر معلن 79.00 دولاراً، عبر جميع القرارات البالغ عددها 10,000 قرار.
البطاقة الرئيسية على وحدة التحكم هي أول ما يظهر على الشاشة قبل تشغيل أي شيء. فئتان، ومنتج واحد، وإشارات طلب متطابقة. مجموعة القرارات A هي فئة الرمز البريدي عالي الدخل والجهاز الحديث، 2,880 قراراً، وممثلة على البطاقة برمز بريدي لمنطقة Upper East Side وهاتف iPhone جديد: السعر المعروض 74.06 دولاراً. مجموعة القرارات B هي فئة الرمز البريدي الذي تقطنه أغلبية من الأقليات والجهاز القديم، 3,037 قراراً، وممثلة برمز بريدي لـ South Bronx وهاتف Android قديم: 93.47 دولاراً. التباين المقاس: +26.2%. هذه متوسطات فئات عبر ما يقرب من 3,000 قرار لكل منها، وبالتالي فإن هذا سلوك منهجي للسياسة وليس مجرد حظ عاثر لمتسوق واحد، والرمز البريدي والهاتف على كل بطاقة هما الملف التعريفي النموذجي للفئة، وليس تعريفها الحصري.

ما أربكني هو أنني لم أكتب أي شيء يمكن تسميته قاعدة تمييزية. لقد كتبت برنامجاً لتعظيم الإيرادات وزودته بإشارات تتنبأ بالاستعداد للدفع. الرمز البريدي يتنبأ بالدخل، والدخل يتنبأ بالحساسية للسعر، وهاتف Android القديم يتنبأ بقلة مقارنة الأسعار. لا شيء من هذه العناصر يمثل العرق. لكنها جميعاً تتحرك معه، والـ bandit الذي يكافأ على الإيرادات سيكتشف كل واحد منها. وفارق الـ 26% هو الصورة الحقيقية لما يبدو عليه تعظيم الإيرادات عندما تحمل الإشارات خصائص الفئة السكانية.
المتغير البديل الذي يختبئ بين مدخلين سليمين
صممتُ التدقيق لتقييم كل مدخل بثلاث طرق، لأن كل اختبار فردي فكرت فيه كان يحتوي على ثغرة: ارتباط بيرسون الخطي المطلق مقابل الفئة المحمية (وهو تصنيف لا يتلقاه التدقيق نفسه أبداً)، والمعلومات المتبادلة الطبيعية (NMI)، وإعادة التشغيل المقارن المضاد للواقع (counterfactual replay). حيث تقوم هذه الإعادة باستبدال ذلك المدخل الفردي للفئة المحمية بالقيمة المرجعية للفئة المميزة، وتثبيت كل المدخلات الأخرى، وإعادة تشغيل سياسة المحرك، وقياس مقدار تحرك السعر. وإعادة التشغيل هذه مستقلة عن النموذج: فهي تعدل المدخلات وتراقب المخرجات، ولا يهمها ما إذا كان المحرك bandit أو شجرة أو صندوقاً أسود.
أول صفين في جدول تدقيق المدخلات هما ما يتوقعه أي شخص. مؤشر دخل الرمز البريدي: |r| 0.95، وMI 1.00، والمقارنة المضادة +7.8%، والنتيجة VIOLATION. الجغرافيا تشفر الفئة المحمية بالكامل في هذا المجتمع والمحرك يسعر بناءً عليها. ومستوى الجهاز: 0.32، و0.08، و+2.9%، VIOLATION، وهي إشارة محايدة ظاهرياً تتجاوز خط ارتباط 0.30 وخط MI البالغ 0.05 اللذين وضعتهما كحدود في الكود.
المخالفة الثالثة VIOLATION هي التي تعجز عمليات التدقيق الفردية لكل ميزة عن رؤيتها. الإحالة بمفردها: |r| 0.00، وMI 0.00، PASS. ووقت المكوث بمفرده: 0.17، و0.03، PASS. والتدقيق الفردي يقر كليهما ويمضي قدماً. لكن صف التفاعل، الإحالة × وقت المكوث، يسجل |r| 0.00، ومعلومات متبادلة مشتركة تبلغ 0.73، والنتيجة المضادة +1.7%، VIOLATION. هذا مكسب تفاعلي قدره 0.71 مقارنة بأفضل مكون فردي.

لقد زرعت ذلك الهيكل بأسلوب بوابة XOR المنطقية. فالإحالة الطبيعية (organic) مع مكوث طويل تميز الفئة المحمية. والإحالة عبر مواقع المقارنة مع مكوث قصير تميزها أيضاً. بينما تميز الإحالة الطبيعية القصيرة والمقارنة الطويلة الفئة المميزة. لا طريقة وصول المتسوق ولا مدة بقائه بمفردهما تفصل بين المجموعات؛ بل الزوج المشترك يفعل ذلك. والارتباط أداة أحادية البعد ولا يمكنه رؤية هذا. والمعلومات المتبادلة عبر الزوج تستطيع ذلك. إن برنامج الامتثال الذي يدقق المدخلات واحداً تلو الآخر يدقق الهدف الخطأ، ولم أجد طريقة لإثبات ذلك دون بناء مجتمع تكون فيه الإجابة الفردية خاطئة بشكل قاطع.
الدفاع الذي كنت سأقدمه بنفسي سابقاً
اختبرتُ الدفاع الذي كنت سأقدمه يوماً ما لجهة تنظيمية، وهو العدالة عبر عدم الإدراك (fairness through unawareness): حذف مدخلات الرمز البريدي والجهاز، وإعادة تدريب المحرك، وتقديم النتيجة. كنت أعلم أن المتغير البديل المركب موجود بالداخل. ما لم أكن أعرفه هو كم من نسبة 0.43 كان ناتجاً عن الرمز البريدي والجهاز بمفردهما، وكم كان ناتجاً عن الزوج المخفي. إن إسقاط الرمز البريدي والجهاز وإعادة التدريب نقل نسبة الأخماس الأربعة من 0.43 إلى 0.59. وما زالت راسبة، والفجوة المتبقية هي الجزء الذي ينجو من كل فحص لكل ميزة على حدة. وبطاقة القياس تلخص السبب في أربع كلمات: Compound Proxy Still Leaks.

هذه النتيجة غيرت طريقة فهمي لتلك العبارة. لقد وجد المحرك الفئة السكانية على أي حال، من خلال إشارتين تجتازان كل اختبار أحادي، وسيواصل العثور عليها، لأن العثور عليها هو ما يُكافأ عليه برنامج تعظيم الإيرادات. وخط الأساس القائم على عدم الإدراك لا يكلف الفريق شيئاً ليقوله، لكنه يسلمهم رقماً سيتعين عليهم تبريره لاحقاً في المحكمة.
إن نسبة 100% في تلك البطاقة لها معنى محدد بدقة. فالمعيار يعيد بناء المجتمع نفسه بالبذرة 42 ويسجل التدقيق بناءً على التصنيفات التي زرعتها، لذا فإن الدقة والاسترجاع بنسبة 100% يعنيان استعادة 3 من أصل 3 بدائل مزروعة مع صفر إنذارات كاذبة في تلك المجموعة التركيبية. إنه فحص ذاتي مقابل حقيقة أساسية معروفة، ولن أقتبس منه كنسبة دقة في سجلات التسعير الحقيقية لأي شركة، والتي تتشابك فيها المتغيرات المربكة بطرق لا يمكن زرعها اصطناعياً.
ماذا يعني 0.43، ولماذا لم أسمح لنموذج ذكاء اصطناعي بالبت فيه
رفضت اختراع معيار عدالة داخلي خاص بي، لأن الرقم الذي أبتدعه لن تجد الجهة التنظيمية أي سبب لاحترامه. والبوابة في Equity هي معيار قانوني خارجي: قاعدة الأخماس الأربعة الصادرة عن EEOC، وفق 29 CFR 1607.4(D)، والمكيفة من معدلات الاختيار إلى مستويات الأسعار. والمستوى الإيجابي يعني عدم الحصول على الشريحة السعرية الأعلى. وفي المحرك بشكله الأصلي، 36% من الفئة المحمية تتلقى الشريحة الإيجابية مقابل 83% من الفئة المميزة. وقسمة 0.36 على 0.83 تعطي 0.43، بينما الحد القانوني هو 0.80، والمؤشر يقف باللون الأحمر على Fail. وبجانبه: 64% من الفئة المحمية في الشريحة السعرية الأعلى، ومتوسط زيادة في السعر قدره +15.6% مقارنة بالفئة المميزة.

منطق الحكم يعمل بلغة NumPy الصرفة، خارج طبقة الوكلاء، وبترتيب ثابت يمكنني تلاوته على مسامع أي محامٍ. الإشارة ذات الاستخدام المزدوج تُختبر قبل اختبار المخالفة: العضو المميز يرتبط بنسبة 0.24 مع الفئة المحمية وهو أيضاً إشارة ولاء تجارية مشروعة، لذا يُرجع الكود ABSTAIN ويحيله إلى المراجعة القانونية بدلاً من تمييزه كمخالفة أو تبرئته تعسفياً، ولا يُسمح لأي معالجة لاحقة بترقيته إلى مخالفة. ثم تأتي حدود المخالفة، ثم نطاق الامتناع، ثم PASS. حجم السلة، ومعدل التكرار، والجلسات، والساعة كلها تجتاز. التدقيق لا يضع علامة انتهاك على كل شيء عشوائياً، والتدقيق الذي يجرم كل شيء عديم الفائدة أمام طلبات التحقيق المدنية (CID) تماماً كالتدقيق الذي لا يكتشف شيئاً.
الوكلاء في الفريق (مدقق الميزات والخصم المعترض) يكتبون نصوصاً تحليلية؛ والدور الثالث وهو المخطط التنظيمي، عبارة عن جدول بحث ثابت في هذا البناء وليس نموذجاً. وظيفة المعترض هي الدفاع عن ولاء العملاء للمدخل الممتنع عنه بأقصى ما يستطيع، ويقوم بذلك على الشاشة. لكنه لا يستطيع تغيير 0.24، ولا تغيير الحكم، ولا البت فيما إذا كانت 0.43 أقل من 0.80. لقد وضعت هذا الفصل منذ البداية: الوكلاء يقدمون المشورة، والكود يقرر، والنموذج حر في أن يكون مقنعاً كما يشاء حول رقم لا يُسمح له بلمسه.
الإصلاح الذي كنت أتمنى أن ينجح
أول إصلاح جربته كان السقف السعري، لأنه الحل التلقائي الذي يلجأ إليه كل فريق تسعير: عدم التسعير بنسبة تزيد عن 15% فوق السعر المرجعي العادل. بنيته كخط أساس Hard-Cap Baseline وتوقعت أن يكون الحل الهادئ والكافي. لكنه كلف 0.2% من الإيرادات ورسب في البوابة عند 0.59. وبصمة التحايل على البطاقة توضح السبب: 29% من الفئة المحمية انتهى بهم الأمر بأسعار تقع ضمن نطاق 1% من السقف. والحكم ينص على Gamed To The Boundary. والسقف منخفض التكلفة تحديداً لأن المحرك أعاد تسعير الفئة المتأثرة لتكون تحته مباشرة – والحل الرخيص الفاشل هو المزيج الذي يبدو جذاباً في اجتماعات الميزانية ولكنه لا يصمد أمام التحقيق القضائي.
إن محرك تعظيم الإيرادات يتعامل مع السقف كهدف ينبغي الوصول إليه.

التحكم الذي صمد بنجاح هو تشكيل المكافأة المراعي للعدالة (Fairness-Aware Reward Shaping). فبدلاً من الحدود القاطعة، يقوم بسحب كل سعر باستمرار نحو سعر مرجعي خالٍ من البدائل – وهو bandit ثانٍ تم تدريبه مع حذف المدخلات البديلة والاحتفاظ بالإشارات المشروعة – ويبحث ثنائياً عن أصغر وزن سحب يتجاوز 0.80. وفي هذا المحرك كان ذلك الوزن 0.65؛ بينما خطوة أقل عند 0.625 وصلت فقط إلى 0.778. ونسبة الأخماس الأربعة بعد ذلك: 0.82، Pass. وتكلفة الإيرادات: 1.3%. وبصمة التحايل 2%، لأنه لا توجد حافة يمكن التلاعب بها. وتوضح الملاحظات المكتوبة بخط دقيق على وحدة التحكم أن تأثير الإيرادات خاص بهذا المحرك التركيبي، وسأؤكد على ذلك بوضوح: 1.3% هو قياس على مجتمع تجريبي محدد، ولن أروجه كسعر عام ومطلق للعدالة.
الهدف الحقيقي من حزمة الأدلة
قمت ببناء حزمة الأدلة في النهاية، لأن كل ما سبق لا قيمة له إلا إذا استطاع المحامي تقديمه للمحكمة. فعندما يصل طلب تحقيق مدني (CID)، فإن الشركة التي لم تسجل البيانات الصحيحة تقضي أشهراً في عمليات الاستخراج الجنائي للبيانات. وتغلق Equity ما أنتجه التدقيق في حزمة JSON مصحوبة بنسخة HTML قابلة للطباعة: اسم المحرك وإصداره، والقرارات البالغ عددها 10,000 قرار، وبوابة التحقق، والتباين المسجل، ونتائج وتبريرات كل مدخل، ونتيجة المعالجة، وملخص SHA-256 لنص الحزمة لإثبات عدم التلاعب. وكل VIOLATION ترتبط بخمسة أطر تشريعية: قاعدة الأخماس الأربعة لـ EEOC، وقانون الإفصاح عن التسعير الخوارزمي في نيويورك (سارٍ في 10 نوفمبر 2025، غرامة مدنية تصل إلى 1,000 دولار لكل مخالفة)، وقانون الذكاء الاصطناعي في كولورادو (SB 24-205، سارٍ في 30 يونيو 2026)، والمادتين 13 و14 من قانون الذكاء الاصطناعي الأوروبي (التزامات عالية المخاطر من 2 أغسطس 2026)، والمادة 5 من قانون FTC. والمدخل الممتنع عنه يرتبط بسطر مراجعة قانونية فردي.
المخطط التنظيمي عبارة عن جدول ثابت. وكان من السهل ترك صياغته لنموذج ذكاء اصطناعي، لكني قررت عكس ذلك: كل VIOLATION تتلقى الأسطر القانونية الخمسة نفسها دائماً، والامتناع يتلقى سطر المراجعة، ولا يتم توليد نصوص إنشائية للمخطط على الإطلاق. فالنموذج الذي يستنتج القوانين المعمول بها ستتغير استنتاجاته في التحديث التالي – والحزمة التي يتغير تكييفها القانوني مع تغير النموذج ستنهار أمام خبير الجهة التنظيمية. والسرد المكتوب في الحزمة من إنشاء النموذج ومخزن مؤقتاً؛ بينما الأرقام والأحكام والتكييف القانوني نابعة من كود حتمي. والحزمة تظل صالحة للتقديم القضائي أياً كان النموذج القائم تحتها. والتفصيل الكامل، مع استعراض الحزمة على الشاشة، متاح على veriprajna.com/demos/ai-pricing-compliance.
شركة Veriprajna لا تحدد الأسعار، ولا تحل محل Pricefx أو PROS أو Zilliant أو Competera، ولا تصدر أحكاماً قانونية. محرك العميل يستمر في التسعير؛ وأنا أقدم الأدلة الموضوعية القاطعة، بينما يتولى فريقهم القانوني اتخاذ القرار النهائي.
وإذا كنت تفضل مشاهدة تشغيل التدقيق بدلاً من قراءة وصفي له، فإليك العملية الكاملة من البداية إلى النهاية.
أعود دائماً إلى جملة فريق التسعير، لأنها صحيحة واقعياً: العرق والدخل ليسا في النموذج. لكن في المحرك الذي بنيته، تجلس تلك العبارة الصادقة بجانب فجوة سعرية قدرها 26% على سماعات الأذن نفسها، وبوابة تقف عند 0.43، وسقف سعري فشل بينما بدا وكأنه يعمل. لم يخبر أحد المحرك بهوية المشتري. فمكافأة الإيرادات كانت كافية، لأن تخمين هوية المتسوق كان التقدير الأكثر ربحية على الإطلاق – وقد قاس التدقيق بدقة إلى أي مدى وصل ذلك التخمين. والجملة التي تصمد في قاعة المحكمة أطول بكثير: كنا نعلم أن المحرك يمكنه العثور على الفئة السكانية دون توجيه، وقسنا المدى الذي وصل إليه، وهذا ما كلفنا إيقافه.


