تقدّم هذه المهارة منهجية وأفضل ممارسات للبحث عن العملاء المحتملين وفهم فرص المبيعات، من تحليل الشركات وجهات التواصل إلى رصد إشارات الشراء القابلة للتنفيذ.
من نص البرومبت
---
name: sales-research
description: تقدّم هذه المهارة منهجية وأفضل ممارسات للبحث عن العملاء المحتملين وفهم فرص المبيعات، من تحليل الشركات وجهات التواصل إلى رصد إشارات الشراء القابلة للتنفيذ.
---
# بحث فرص المبيعات والعملاء المحتملين
## نظرة عامة
تقدّم هذه المهارة منهجية وأفضل ممارسات للبحث عن العملاء المحتملين في المبيعات. تغطي بحث الشركات، وبناء ملفات مختصرة لجهات التواصل، ورصد الإشارات التي تكشف معلومات عملية قابلة للتنفيذ.
## الاستخدام
يعتمد الوكيلان الفرعيان company-researcher وcontact-researcher على هذه المهارة عند:
- البحث عن عملاء محتملين جدد
- العثور على معلومات عن الشركات
- بناء ملفات مختصرة لجهات التواصل المستهدفة
- رصد إشارات الشراء
## منهجية البحث
### قائمة تدقيق بحث الشركة
1. **الملف الأساسي**
- اسم الشركة، القطاع، الحجم (عدد الموظفين، الإيرادات)
- المقر الرئيسي والمواقع المهمة
- تاريخ التأسيس ومرحلة النمو
2. **آخر المستجدات**
- إعلانات التمويل خلال آخر 12 شهرًا
- أنشطة الاستحواذ أو الاندماج
- تغييرات في القيادات
- إطلاق منتجات جديدة
3. **البنية التقنية**
- التقنيات المعروفة (BuiltWith، StackShare)
- إعلانات الوظائف التي تذكر أدوات محددة
- شراكات التكامل والربط
4. **الإشارات**
- إعلانات التوظيف (التوسع = فرصة)
- مراجعات Glassdoor (نقاط الألم)
- الظهور في الأخبار (سياق مهم)
- النشاط في منصات التواصل
### قائمة تدقيق بحث جهة التواصل
1. **الخلفية المهنية**
- المنصب الحالي ومدة شغله
- الشركات والمناصب السابقة
- التعليم
2. **مؤشرات التأثير**
- الهيكل الإداري والجهة التي يرفع لها
- صلاحية اتخاذ القرار
- امتلاك الميزانية أو التأثير عليها
3. **مداخل التفاعل**
- منشورات لينكدإن الأخيرة
- مقالات منشورة
- مشاركات كمتحدث في فعاليات
- معارف مشتركة
## الموارد
- `resources/signal-indicators.md` - تصنيف إشارات الشراء
- `resources/research-checklist.md` - قائمة تدقيق بحث شاملة
## السكربتات
- `scripts/company-enricher.py` - تجميع بيانات الشركة من عدة مصادر
- `scripts/linkedin-parser.py` - تنظيم بيانات ملف لينكدإن
FILE:company-enricher.py
#!/usr/bin/env python3
'''
company-enricher.py - تجميع بيانات الشركة من عدة مصادر
المدخلات:
- company_name: string
- domain: string (اختياري)
المخرجات:
- profile:
name: string
industry: string
size: string
funding: string
tech_stack: [string]
recent_news: [news items]
المتطلبات:
- requests, beautifulsoup4
'''
# المتطلبات: requests, beautifulsoup4
import json
from typing import Any
from dataclasses import dataclass, asdict
from datetime import datetime
@dataclass
class NewsItem:
title: str
date: str
source: str
url: str
summary: str
@dataclass
class CompanyProfile:
name: str
domain: str
industry: str
size: str
location: str
founded: str
funding: str
tech_stack: list[str]
recent_news: list[dict]
competitors: list[str]
description: str
def search_company_info(company_name: str, domain: str = None) -> dict:
'''
البحث عن المعلومات الأساسية للشركة.
في بيئة الإنتاج، سيستدعي السكربت واجهات مثل Clearbit وCrunchbase وغيرها.
'''
# TODO: تنفيذ استدعاءات API الفعلية
# بنية إرجاع مؤقتة
normalized_name = company_name.lower().replace(' ', '')
return {
'name': company_name,
'domain': domain or f'{normalized_name}.com',
'industry': 'تقنية',
'size': 'غير معروف',
'location': 'غير معروف',
'founded': 'غير معروف',
'description': f'معلومات عن {company_name}'
}
def search_funding_info(company_name: str) -> dict:
'''
البحث عن معلومات التمويل.
في بيئة الإنتاج، سيستدعي السكربت Crunchbase أو PitchBook وغيرها.
'''
# TODO: تنفيذ استدعاءات API الفعلية
return {
'total_funding': 'غير معروف',
'last_round': 'غير معروف',
'last_round_date': 'غير معروف',
'investors': []
}
def search_tech_stack(domain: str) -> list[str]:
'''
اكتشاف البنية التقنية المستخدمة.
في بيئة الإنتاج، سيستدعي السكربت BuiltWith أو Wappalyzer وغيرها.
'''
# TODO: تنفيذ استدعاءات API الفعلية
return []
def search_recent_news(company_name: str, days: int = 90) -> list[dict]:
'''
البحث عن آخر الأخبار المتعلقة بالشركة.
في بيئة الإنتاج، سيستدعي السكربت واجهات الأخبار.
'''
# TODO: تنفيذ استدعاءات API الفعلية
return []
def main(
company_name: str,
domain: str = None
) -> dict[str, Any]:
'''
تجميع بيانات الشركة من عدة مصادر.
Args:
company_name: اسم الشركة المراد بحثها
domain: نطاق الشركة (اختياري، ويمكن استنتاجه)
Returns:
dict يحتوي على ملف الشركة، بما في ذلك القطاع والحجم والتمويل والبنية التقنية والأخبار
'''
# الحصول على معلومات الشركة الأساسية
basic_info = search_company_info(company_name, domain)
# الحصول على معلومات التمويل
funding_info = search_funding_info(company_name)
# اكتشاف البنية التقنية
company_domain = basic_info.get('domain', domain)
tech_stack = search_tech_stack(company_domain) if company_domain else []
# الحصول على آخر الأخبار
news = search_recent_news(company_name)
# تجميع الملف
profile = CompanyProfile(
name=basic_info['name'],
domain=basic_info['domain'],
industry=basic_info['industry'],
size=basic_info['size'],
location=basic_info['location'],
founded=basic_info['founded'],
funding=funding_info.get('total_funding', 'غير معروف'),
tech_stack=tech_stack,
recent_news=news,
competitors=[], # سيتم إثراؤها من تحليل القطاع والمنافسين
description=basic_info['description']
)
return {
'profile': asdict(profile),
'funding_details': funding_info,
'enriched_at': datetime.now().isoformat(),
'sources_checked': ['company_info', 'funding', 'tech_stack', 'news']
}
if __name__ == '__main__':
import sys
# مثال استخدام
result = main(
company_name='Riyadh Data Systems',
domain='riyadhdata.sa'
)
print(json.dumps(result, indent=2, ensure_ascii=False))
FILE:linkedin-parser.py
#!/usr/bin/env python3
'''
linkedin-parser.py - تنظيم بيانات ملف لينكدإن
المدخلات:
- profile_url: string
- أو name + company: strings
المخرجات:
- contact:
name: string
title: string
tenure: string
previous_roles: [role objects]
mutual_connections: [string]
recent_activity: [post summaries]
المتطلبات:
- requests
'''
# المتطلبات: requests
import json
from typing import Any
from dataclasses import dataclass, asdict
from datetime import datetime
@dataclass
class PreviousRole:
title: str
company: str
duration: str
description: str
@dataclass
class RecentPost:
date: str
content_preview: str
engagement: int
topic: str
@dataclass
class ContactProfile:
name: str
title: str
company: str
location: str
tenure: str
previous_roles: list[dict]
education: list[str]
mutual_connections: list[str]
recent_activity: list[dict]
profile_url: str
headline: str
def search_linkedin_profile(name: str = None, company: str = None, profile_url: str = None) -> dict:
'''
البحث عن معلومات ملف لينكدإن.
في بيئة الإنتاج، يمكن استخدام LinkedIn API أو Sales Navigator.
'''
# TODO: تنفيذ تكامل LinkedIn API الفعلي
# ملاحظة: واجهة LinkedIn لديها شروط استخدام صارمة
return {
'found': False,
'name': name or 'غير معروف',
'title': 'غير معروف',
'company': company or 'غير معروف',
'location': 'غير معروف',
'headline': '',
'tenure': 'غير معروف',
'profile_url': profile_url or ''
}
def get_career_history(profile_data: dict) -> list[dict]:
'''
استخراج التاريخ المهني من الملف.
'''
# TODO: تنفيذ استخراج المسار المهني
return []
def get_mutual_connections(profile_data: dict, user_network: list = None) -> list[str]:
'''
العثور على المعارف المشتركة.
'''
# TODO: تنفيذ رصد المعارف المشتركة
return []
def get_recent_activity(profile_data: dict, days: int = 30) -> list[dict]:
'''
جلب المنشورات والأنشطة الأخيرة.
'''
# TODO: تنفيذ استخراج النشاط
return []
def main(
name: str = None,
company: str = None,
profile_url: str = None
) -> dict[str, Any]:
'''
تنظيم بيانات ملف لينكدإن لاستخدامها في التحضير البيعي.
Args:
name: اسم الشخص
company: الشركة التي يعمل فيها
profile_url: رابط مباشر لملف لينكدإن
Returns:
dict يحتوي على ملف منظم لجهة التواصل
'''
if not profile_url and not (name and company):
return {'error': 'زوّد إما profile_url أو name + company'}
# البحث عن الملف
profile_data = search_linkedin_profile(
name=name,
company=company,
profile_url=profile_url
)
if not profile_data.get('found'):
return {
'found': False,
'name': name or 'غير معروف',
'company': company or 'غير معروف',
'message': 'لم يتم العثور على الملف أو أن الوصول إليه محدود',
'suggestions': [
'جرّب البحث مباشرة في لينكدإن',
'تحقق من احتمالات كتابة الاسم بأكثر من طريقة',
'تأكد أن الشخص ما زال يعمل في هذه الشركة'
]
}
# استخراج التاريخ المهني
previous_roles = get_career_history(profile_data)
# العثور على المعارف المشتركة
mutual_connections = get_mutual_connections(profile_data)
# جلب الأنشطة الأخيرة
recent_activity = get_recent_activity(profile_data)
# تجميع ملف جهة التواصل
contact = ContactProfile(
name=profile_data['name'],
title=profile_data['title'],
company=profile_data['company'],
location=profile_data['location'],
tenure=profile_data['tenure'],
previous_roles=previous_roles,
education=[], # سيتم استخراجها من الملف
mutual_connections=mutual_connections,
recent_activity=recent_activity,
profile_url=profile_data['profile_url'],
headline=profile_data['headline']
)
return {
'found': True,
'contact': asdict(contact),
'research_date': datetime.now().isoformat(),
'data_completeness': calculate_completeness(contact)
}
def calculate_completeness(contact: ContactProfile) -> dict:
'''حساب مدى اكتمال بيانات الملف.'''
fields = {
'basic_info': bool(contact.name and contact.title and contact.company),
'career_history': len(contact.previous_roles) > 0,
'mutual_connections': len(contact.mutual_connections) > 0,
'recent_activity': len(contact.recent_activity) > 0,
'education': len(contact.education) > 0
}
complete_count = sum(fields.values())
return {
'fields': fields,
'score': f'{complete_count}/{len(fields)}',
'percentage': int((complete_count / len(fields)) * 100)
}
if __name__ == '__main__':
import sys
# مثال استخدام
result = main(
name='سارة القحطاني',
company='Riyadh Data Systems'
)
print(json.dumps(result, indent=2, ensure_ascii=False))
FILE:priority-scorer.py
#!/usr/bin/env python3
'''
priority-scorer.py - حساب وترتيب أولويات العملاء المحتملين
المدخلات:
- prospects: [prospect objects with signals]
- weights: {deal_size, timing, warmth, signals}
المخرجات:
- ranked: [prospects with scores and reasoning]
المتطلبات:
- لا يوجد - بايثون فقط
'''
import json
from typing import Any
from dataclasses import dataclass
# الأوزان الافتراضية للتقييم
DEFAULT_WEIGHTS = {
'deal_size': 0.25,
'timing': 0.30,
'warmth': 0.20,
'signals': 0.25
}
# خريطة درجات الإشارات
SIGNAL_SCORES = {
# إشارات نية عالية
'recent_funding': 10,
'leadership_change': 8,
'job_postings_relevant': 9,
'expansion_news': 7,
'competitor_mention': 6,
# إشارات نية متوسطة
'general_hiring': 4,
'industry_event': 3,
'content_engagement': 3,
# إشارات علاقة
'mutual_connection': 5,
'previous_contact': 6,
'referred_lead': 8,
# إشارات سلبية
'recent_layoffs': -3,
'budget_freeze_mentioned': -5,
'competitor_selected': -7,
}
@dataclass
class ScoredProspect:
company: str
contact: str
call_time: str
raw_score: float
normalized_score: int
priority_rank: int
score_breakdown: dict
reasoning: str
is_followup: bool
def score_deal_size(prospect: dict) -> tuple[float, str]:
'''التقييم بناءً على حجم الصفقة المتوقع.'''
size_indicators = prospect.get('size_indicators', {})
employee_count = size_indicators.get('employees', 0)
revenue_estimate = size_indicators.get('revenue', 0)
# تقييم بسيط بناءً على حجم الشركة
if employee_count > 1000 or revenue_estimate > 100_000_000:
return 10.0, 'فرصة على مستوى الشركات الكبرى'
elif employee_count > 200 or revenue_estimate > 20_000_000:
return 7.0, 'فرصة لسوق الشركات المتوسطة'
elif employee_count > 50:
return 5.0, 'فرصة للمنشآت الصغيرة والمتوسطة'
else:
return 3.0, 'منشأة صغيرة'
def score_timing(prospect: dict) -> tuple[float, str]:
'''التقييم بناءً على إشارات التوقيت.'''
timing_signals = prospect.get('timing_signals', [])
score = 5.0 # الدرجة الأساسية
reasons = []
for signal in timing_signals:
if signal == 'budget_cycle_q4':
score += 3
reasons.append('تخطيط ميزانية الربع الرابع')
elif signal == 'contract_expiring':
score += 4
reasons.append('العقد يقترب من الانتهاء')
elif signal == 'active_evaluation':
score += 5
reasons.append('يوجد تقييم نشط للحلول')
elif signal == 'just_funded':
score += 3
reasons.append('حصلت الشركة على تمويل مؤخرًا')
return min(score, 10.0), '; '.join(reasons) if reasons else 'توقيت عادي'
def score_warmth(prospect: dict) -> tuple[float, str]:
'''التقييم بناءً على دفء العلاقة.'''
relationship = prospect.get('relationship', {})
if relationship.get('is_followup'):
last_outcome = relationship.get('last_outcome', 'neutral')
if last_outcome == 'positive':
return 9.0, 'متابعة دافئة (آخر تواصل كان إيجابيًا)'
elif last_outcome == 'neutral':
return 7.0, 'متابعة (آخر تواصل كان محايدًا)'
else:
return 5.0, 'متابعة تحتاج إعادة تنشيط العلاقة'
if relationship.get('referred'):
return 8.0, 'عميل محتمل عن طريق إحالة'
mutual_count = relationship.get('mutual_connections', 0)
if mutual_count > 0:
return 6.0, f'{mutual_count} معارف مشتركة'
if relationship.get('inbound'):
return 7.0, 'اهتمام وارد من العميل'
return 4.0, 'تواصل بارد'
def score_signals(prospect: dict) -> tuple[float, str]:
'''التقييم بناءً على إشارات الشراء المرصودة.'''
signals = prospect.get('signals', [])
total_score = 0
signal_reasons = []
for signal in signals:
signal_score = SIGNAL_SCORES.get(signal, 0)
total_score += signal_score
if signal_score > 0:
signal_reasons.append(signal.replace('_', ' '))
# التطبيع إلى نطاق 0-10
normalized = min(max(total_score / 2, 0), 10)
joined_signals = ', '.join(signal_reasons)
reason = f'الإشارات: {joined_signals}' if signal_reasons else 'لا توجد إشارات قوية'
return normalized, reason
def calculate_priority_score(
prospect: dict,
weights: dict = None
) -> ScoredProspect:
'''حساب درجة الأولوية الإجمالية لعميل محتمل.'''
weights = weights or DEFAULT_WEIGHTS
# حساب درجات المكونات
deal_score, deal_reason = score_deal_size(prospect)
timing_score, timing_reason = score_timing(prospect)
warmth_score, warmth_reason = score_warmth(prospect)
signal_score, signal_reason = score_signals(prospect)
# الإجمالي الموزون
raw_score = (
deal_score * weights['deal_size'] +
timing_score * weights['timing'] +
warmth_score * weights['warmth'] +
signal_score * weights['signals']
)
# تجميع أسباب التقييم
reasons = []
if timing_score >= 8:
reasons.append(timing_reason)
if signal_score >= 7:
reasons.append(signal_reason)
if warmth_score >= 7:
reasons.append(warmth_reason)
if deal_score >= 8:
reasons.append(deal_reason)
return ScoredProspect(
company=prospect.get('company', 'غير معروف'),
contact=prospect.get('contact', 'غير معروف'),
call_time=prospect.get('call_time', 'غير معروف'),
raw_score=round(raw_score, 2),
normalized_score=int(raw_score * 10),
priority_rank=0, # سيتم تحديدها بعد الفرز
score_breakdown={
'deal_size': {'score': deal_score, 'reason': deal_reason},
'timing': {'score': timing_score, 'reason': timing_reason},
'warmth': {'score': warmth_score, 'reason': warmth_reason},
'signals': {'score': signal_score, 'reason': signal_reason}
},
reasoning='; '.join(reasons) if reasons else 'أولوية عادية',
is_followup=prospect.get('relationship', {}).get('is_followup', False)
)
def main(
prospects: list[dict],
weights: dict = None
) -> dict[str, Any]:
'''
حساب وترتيب أولويات العملاء المحتملين.
Args:
prospects: قائمة عملاء محتملين تحتوي على الإشارات
weights: أوزان اختيارية مخصصة لمكونات التقييم
Returns:
dict يحتوي على العملاء المرتبين وتفاصيل التقييم
'''
weights = weights or DEFAULT_WEIGHTS
# تقييم جميع العملاء المحتملين
scored = [calculate_priority_score(p, weights) for p in prospects]
# الفرز حسب الدرجة الخام تنازليًا
scored.sort(key=lambda x: x.raw_score, reverse=True)
# تعيين الترتيب
for i, prospect in enumerate(scored, 1):
prospect.priority_rank = i
# التحويل إلى dicts لتسهيل JSON serialization
ranked = []
for s in scored:
ranked.append({
'company': s.company,
'contact': s.contact,
'call_time': s.call_time,
'priority_rank': s.priority_rank,
'score': s.normalized_score,
'reasoning': s.reasoning,
'is_followup': s.is_followup,
'breakdown': s.score_breakdown
})
return {
'ranked': ranked,
'weights_used': weights,
'total_prospects': len(prospects)
}
if __name__ == '__main__':
import sys
# مثال استخدام
example_prospects = [
{
'company': 'Riyadh Data Systems',
'contact': 'سارة القحطاني',
'call_time': '2م',
'size_indicators': {'employees': 200, 'revenue': 25_000_000},
'timing_signals': ['just_funded', 'active_evaluation'],
'signals': ['recent_funding', 'job_postings_relevant'],
'relationship': {'is_followup': False, 'mutual_connections': 2}
},
{
'company': 'مصانع الخليج المتقدمة',
'contact': 'فهد الحربي',
'call_time': '10ص',
'size_indicators': {'employees': 500},
'timing_signals': ['contract_expiring'],
'signals': [],
'relationship': {'is_followup': True, 'last_outcome': 'neutral'}
},
{
'company': 'الأولى للتمويل',
'contact': 'نورة التميمي',
'call_time': '4م',
'size_indicators': {'employees': 300},
'timing_signals': [],
'signals': [],
'relationship': {'is_followup': False}
}
]
result = main(prospects=example_prospects)
print(json.dumps(result, indent=2, ensure_ascii=False))
FILE:research-checklist.md
# قائمة تدقيق بحث العملاء المحتملين
## بحث الشركة
### المعلومات الأساسية
- [ ] اسم الشركة (التحقق من كتابته بشكل صحيح)
- [ ] القطاع/المجال
- [ ] موقع المقر الرئيسي
- [ ] عدد الموظفين (لينكدإن، الموقع الإلكتروني)
- [ ] تقدير الإيرادات (إن توفر)
- [ ] تاريخ التأسيس
- [ ] مرحلة التمويل وتاريخه
### آخر الأخبار (آخر 90 يومًا)
- [ ] إعلانات التمويل
- [ ] الاستحواذات أو الاندماجات
- [ ] تغييرات في القيادات
- [ ] إطلاق منتجات
- [ ] الفوز بعملاء كبار
- [ ] الظهور الإعلامي
- [ ] أخبار الأرباح أو النتائج المالية
### الحضور الرقمي
- [ ] مراجعة الموقع الإلكتروني
- [ ] موضوعات المدونة أو المحتوى
- [ ] الحضور في منصات التواصل
- [ ] إعلانات الوظائف (صفحة الوظائف + لينكدإن)
- [ ] البنية التقنية (BuiltWith، إعلانات الوظائف)
### المشهد التنافسي
- [ ] المنافسون المعروفون
- [ ] موقع الشركة في السوق
- [ ] نقاط التميز التي تذكرها الشركة
- [ ] تحركات تنافسية حديثة
### مؤشرات نقاط الألم
- [ ] مراجعات Glassdoor (الموضوعات المتكررة)
- [ ] مراجعات G2/Capterra (لشركات B2B عند توفرها)
- [ ] شكاوى منصات التواصل
- [ ] أنماط إعلانات الوظائف
## بحث جهة التواصل
### الملف المهني
- [ ] المسمى الوظيفي الحالي
- [ ] مدة شغل المنصب
- [ ] مدة العمل في الشركة
- [ ] الشركات السابقة
- [ ] المناصب السابقة
- [ ] التعليم
### صلاحية القرار
- [ ] يرفع لمن؟
- [ ] حجم الفريق (إذا كان مديرًا)
- [ ] صلاحية الميزانية (استنتاجًا)
- [ ] تاريخ المشاركة في قرارات الشراء
### مداخل التفاعل
- [ ] منشورات لينكدإن الأخيرة
- [ ] مقالات منشورة
- [ ] ظهور في بودكاست
- [ ] مشاركات في مؤتمرات أو ملتقيات
- [ ] معارف مشتركة
- [ ] اهتمامات أو مجموعات مشتركة
### أسلوب التواصل
- [ ] نبرة المنشورات (رسمية/عفوية)
- [ ] الموضوعات التي يتفاعل معها
- [ ] أنماط الاستجابة
## فحص CRM (إن توفر)
- [ ] أي نقاط تواصل سابقة
- [ ] فرص سابقة
- [ ] جهات تواصل أخرى مرتبطة بالشركة
- [ ] ملاحظات من الزملاء
- [ ] تاريخ التفاعل مع البريد الإلكتروني
## عمق البحث حسب الوقت المتاح
| الوقت المتاح | عمق البحث |
|----------------|----------------|
| 5 دقائق | أساسيات الشركة + مسمى جهة التواصل فقط |
| 15 دقيقة | + آخر الأخبار + ملف لينكدإن |
| 30 دقيقة | + إشارات نقاط الألم + مداخل التفاعل |
| 60 دقيقة | قائمة التدقيق كاملة + تحليل تنافسي |
FILE:signal-indicators.md
# مرجع مؤشرات الإشارات
## إشارات نية عالية
### إعلانات الوظائف
- **3 وظائف مرتبطة أو أكثر منشورة** = مبادرة نشطة وميزانية مرصودة
- **تعيين قيادي في مجالك** = أولوية استراتيجية
- **لغة استعجال مثل ASAP أو فوري** = الألم واضح وعاجل
- **ذكر أداة محددة** = وعي بمنافس أو بفئة الحلول
### أحداث مالية
- **تمويل Series B أو أعلى** = رأس مال للنمو وقدرة شرائية
- **الاستعداد للطرح العام** = الحاجة إلى نضج تشغيلي أعلى
- **إعلان استحواذ** = تحديات تكامل قادمة
- **خبر صحفي عن إنجاز في الإيرادات** = ميزانية متاحة غالبًا
### تغييرات قيادية
- **رئيس تنفيذي أو قيادي جديد في مجالك** = تحديد أولويات أول 90 يومًا
- **CRO/CMO جديد** = احتمال تقييم البنية التقنية
- **انتقال المؤسس إلى دور الرئيس التنفيذي** = توجه نحو مأسسة العمليات ورفع احترافيتها
## إشارات نية متوسطة
### إشارات التوسع
- **افتتاح مكتب جديد** = احتياجات بنية تحتية
- **توسع دولي** = احتياج للتوطين والامتثال
- **إطلاق منتج جديد** = تحديات توسع وتشغيل
- **الفوز بعميل كبير** = ضغط على التسليم والجودة
### إشارات تقنية
- **نشر RFP** = عملية شراء نشطة
- **ذكر مراجعة المورّدين** = مقارنة حلول ومورّدين
- **تغيير في البنية التقنية** = فرصة تكامل وربط
- **شكاوى من نظام قديم** = حاجة للتحديث
### إشارات المحتوى
- **تدوينة عن موضوعك** = يتعلمون ويفهمون المجال
- **حضور ويبينار** = اهتمام مؤكد
- **تحميل تقرير أو دليل** = وعي بالمشكلة
- **تحدث في مؤتمر** = قيادة فكرية وظهور
## إشارات نية منخفضة (رعاية)
### نشاط عام
- **حضور فعالية في القطاع** = مشارك نشط في السوق
- **توظيف عام** = الشركة في حالة نمو
- **تغطية إعلامية إيجابية** = وضع الشركة صحي
- **نشاط على منصات التواصل** = قيادة متفاعلة
## تقييم الإشارات
| نوع الإشارة | الدرجة | الإجراء |
|-------------|-------|--------|
| إعلان وظيفة مرتبط | +3 | رفع أولوية التواصل |
| تمويل حديث | +3 | الإشارة له في المحادثة |
| تغيير قيادي | +2 | فرصة حساسة للتوقيت |
| خبر توسع | +2 | زاوية نمو مناسبة |
| مراجعات سلبية | +2 | زاوية نقاط ألم |
| تفاعل مع محتوى | +1 | إدخاله في مسار رعاية |
| لا توجد إشارات | 0 | التركيز على الاستكشاف |