From ed60fa3ce205285759ab1b86c2e07667781c86d0 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Sat, 6 Jun 2026 12:04:41 +0300 Subject: [PATCH] Deploy on 2026-06-06 12:04:41 --- COMPANY_PROFILE.md | 10 ++++ INVESTOR_PITCH_AR.md | 22 +++++++ app/Services/Crawler/AiAnalyzer.php | 42 +++++++++---- app/Services/Crawler/Collector.php | 11 +++- .../Notification/TelegramNotifier.php | 60 ++++++++++++------- 5 files changed, 110 insertions(+), 35 deletions(-) create mode 100644 COMPANY_PROFILE.md create mode 100644 INVESTOR_PITCH_AR.md diff --git a/COMPANY_PROFILE.md b/COMPANY_PROFILE.md new file mode 100644 index 0000000..3443d37 --- /dev/null +++ b/COMPANY_PROFILE.md @@ -0,0 +1,10 @@ +# ملف الشركة الناشئة + +* **الاسم**: Tripz +* **القطاع**: Mobility (التنقل)، تقنيات النقل، السفر +* **المرحلة**: Pre-seed +* **الدولة**: مصر (تستهدف التوسع في الشرق الأوسط وشمال أفريقيا) +* **الإيرادات**: في مرحلة مبكرة / بناء منتج عامل (MVP) +* **نوع التمويل المطلوب**: رأس مال جريء (VC)، منح (Grants)، مسرعات أعمال (Accelerators) + +هذا الملف يستخدم لتحليل الفرص الاستثمارية وتحديد مدى توافقها (Fit Score) مع الشركة. diff --git a/INVESTOR_PITCH_AR.md b/INVESTOR_PITCH_AR.md new file mode 100644 index 0000000..3714324 --- /dev/null +++ b/INVESTOR_PITCH_AR.md @@ -0,0 +1,22 @@ +
+ +# منصة ScoutIQ: ذكاء استثماري متطور + +**ScoutIQ** هي منصة متقدمة لذكاء المستثمرين (Investor Intelligence Platform) مصممة خصيصاً لسوق منطقة الشرق الأوسط وشمال أفريقيا (MENA). + +### ما هي ScoutIQ؟ +هي أداة تعتمد على الذكاء الاصطناعي لجمع وتحليل الفرص الاستثمارية بشكل آلي. تهدف المنصة إلى تزويد المستثمرين برؤى دقيقة ومدعومة بالبيانات لاتخاذ قرارات استثمارية مدروسة بسرعة وكفاءة عالية. + +### لماذا ScoutIQ؟ +1. **الذكاء الاصطناعي في صميم العمل:** نستخدم خوارزميات متطورة لتحليل السوق وتحديد الفرص الواعدة. +2. **الأتمتة والفعالية:** تقليل الوقت والجهد في البحث والتحليل اليدوي. +3. **جزء من منظومة متكاملة:** ScoutIQ ليست منتجاً معزولاً، بل هي جزء من منظومة تقنية شاملة تشمل منصات التنقل (Tripz, Intaleq)، ومنصة التحقق من الهوية (Musadeq)، ومنصة الأتمتة والذكاء الاصطناعي (Nabeeh). +4. **التوسع:** نركز على أسواق واعدة مثل مصر، سوريا، ومنطقة الشرق الأوسط عموماً. + +### الرؤية الاستثمارية +نحن نبني بنية تحتية تقنية تمكن المستثمرين من استغلال البيانات لاتخاذ قرارات حاسمة في أسواق سريعة النمو. + +--- +**للمزيد من المعلومات والتواصل حول فرص الاستثمار، يرجى مراسلتنا عبر تليجرام.** + +
diff --git a/app/Services/Crawler/AiAnalyzer.php b/app/Services/Crawler/AiAnalyzer.php index 677d166..3e67637 100644 --- a/app/Services/Crawler/AiAnalyzer.php +++ b/app/Services/Crawler/AiAnalyzer.php @@ -23,24 +23,41 @@ class AiAnalyzer */ public function analyze(string $title, string $description): array { + $companyProfile = ''; + $profilePath = __DIR__ . '/../../../COMPANY_PROFILE.md'; + if (file_exists($profilePath)) { + $companyProfile = file_get_contents($profilePath); + } + if (!$this->apiKey) { return $this->fallbackAnalysis($title, $description); } $prompt = << $type, 'opportunity_type' => $opportunityType, - 'score' => $score, + 'fit_score' => $score, 'tags' => $tags, 'is_opportunity' => $isOpportunity, 'summary' => substr($description, 0, 200), 'organization_name' => $orgName, 'country' => $country, + 'why_it_matters' => ['فرصة عامة'], + 'requirements' => ['غير محدد'], + 'deadline' => null, + 'effort' => 'متوسط', + 'potential_return' => 'متوسط', ]; } } \ No newline at end of file diff --git a/app/Services/Crawler/Collector.php b/app/Services/Crawler/Collector.php index 51bfe47..601d3fa 100644 --- a/app/Services/Crawler/Collector.php +++ b/app/Services/Crawler/Collector.php @@ -250,7 +250,7 @@ class Collector private function createOpportunity(array $entry, array $analysis, ?int $orgId, array $source): void { try { - $score = min(100, max(0, $analysis['score'] ?? 10)); + $score = min(100, max(0, $analysis['fit_score'] ?? $analysis['score'] ?? 10)); $stmt = $this->pdo->prepare( "INSERT INTO opportunities (title, description, type, organization_id, url, status, score, raw_data) @@ -293,7 +293,7 @@ class Collector $oppType = $analysis['opportunity_type'] ?? $analysis['type'] ?? 'other'; $importantTypes = ['vc_funding', 'accelerator', 'incubator', 'grant', 'competition']; - if ($score >= $minScore && in_array($oppType, $importantTypes)) { + if ($score >= $minScore && in_array($oppType, $importantTypes) && !empty($analysis['is_opportunity'])) { $orgName = ''; if ($orgId) { $orgStmt = $this->pdo->prepare("SELECT name FROM organizations WHERE id = ?"); @@ -304,10 +304,15 @@ class Collector $this->notifier->notifyNewOpportunity([ 'title' => $entry['title'], 'type' => $oppType, - 'score' => $score, + 'fit_score' => $score, 'url' => $entry['url'], 'description' => $analysis['summary'] ?? $entry['description'], 'org_name' => $orgName, + 'why_it_matters' => $analysis['why_it_matters'] ?? [], + 'requirements' => $analysis['requirements'] ?? [], + 'deadline' => $analysis['deadline'] ?? null, + 'effort' => $analysis['effort'] ?? 'متوسط', + 'potential_return' => $analysis['potential_return'] ?? 'متوسط', ]); } } diff --git a/app/Services/Notification/TelegramNotifier.php b/app/Services/Notification/TelegramNotifier.php index 9a814c4..be8a905 100644 --- a/app/Services/Notification/TelegramNotifier.php +++ b/app/Services/Notification/TelegramNotifier.php @@ -159,36 +159,52 @@ class TelegramNotifier public function notifyNewOpportunity(array $opportunity): void { $title = $opportunity['title'] ?? 'Untitled'; - $type = $opportunity['type'] ?? 'other'; - $score = $opportunity['score'] ?? 0; + $fitScore = $opportunity['fit_score'] ?? 0; $url = $opportunity['url'] ?? ''; - $desc = $opportunity['description'] ?? ''; $orgName = $opportunity['org_name'] ?? ''; + $whyItMatters = $opportunity['why_it_matters'] ?? []; + $requirements = $opportunity['requirements'] ?? []; + $deadline = $opportunity['deadline'] ?? null; + $effort = $opportunity['effort'] ?? 'متوسط'; + $potentialReturn = $opportunity['potential_return'] ?? 'متوسط'; - $typeTranslations = [ - 'vc_funding' => 'تمويل رأس مال جريء (VC)', - 'accelerator' => 'مسرعة أعمال (Accelerator)', - 'incubator' => 'حاضنة أعمال (Incubator)', - 'grant' => 'منحة (Grant)', - 'competition' => 'مسابقة (Competition)', - 'demo_day' => 'يوم عرض المشاريع (Demo Day)', - 'event' => 'فعالية (Event)', - 'partnership' => 'شراكة (Partnership)', - 'other' => 'أخرى', - ]; - $translatedType = $typeTranslations[$type] ?? $type; + $effortEmoji = (str_contains($effort, 'عالي') || str_contains(strtolower($effort), 'high')) ? '🔴' : ((str_contains($effort, 'متوسط') || str_contains(strtolower($effort), 'medium')) ? '🟡' : '🟢'); + $returnEmoji = (str_contains($potentialReturn, 'عالي') || str_contains(strtolower($potentialReturn), 'high')) ? '🟢' : ((str_contains($potentialReturn, 'متوسط') || str_contains(strtolower($potentialReturn), 'medium')) ? '🟡' : '🔴'); - $message = "💡 *فرصة استثمارية جديدة:* {$title}\n\n"; - $message .= "▪️ *النوع:* {$translatedType}\n"; - $message .= "▪️ *درجة الأهمية:* {$score}/100\n"; + $message = "💡 *ScoutIQ*\n\n"; + $message .= "*{$title}*"; if ($orgName) { - $message .= "▪️ *الجهة:* {$orgName}\n"; + $message .= " – {$orgName}"; } - if ($desc) { - $message .= "\n*الملخص ونقاط القوة:*\n_{$desc}_\n"; + + $message .= "\n\n🔥 *Match Score:* {$fitScore}/100\n"; + + if (!empty($whyItMatters)) { + $message .= "\n*لماذا تهمك؟*\n"; + foreach ((array)$whyItMatters as $why) { + $message .= "• {$why}\n"; + } } + + if (!empty($requirements)) { + $message .= "\n*المتطلبات:*\n"; + foreach ((array)$requirements as $req) { + $message .= "• {$req}\n"; + } + } + + if ($deadline) { + $message .= "\n*الموعد النهائي:*\n{$deadline}\n"; + } + + $message .= "\n*الجهد المطلوب:*\n{$effortEmoji} {$effort}\n"; + $message .= "\n*العائد المحتمل:*\n{$returnEmoji} {$potentialReturn}\n"; + + $message .= "\n*الإجراء:*\n"; if ($url) { - $message .= "\n🔗 [رابط التقديم والتواصل]({$url})"; + $message .= "[قدم الآن]({$url})"; + } else { + $message .= "لا يوجد رابط متاح"; } $this->send($message, 'opportunity');