Deploy on 2026-06-05 17:24:21

This commit is contained in:
Hamza-Ayed
2026-06-05 17:24:21 +03:00
parent d05e18b59d
commit 0657296c38
8 changed files with 311 additions and 22 deletions

View File

@@ -34,7 +34,7 @@ You are ScoutIQ, an investor intelligence AI. Analyze the following startup/inve
- "score": integer 0-100 (relevance to startups seeking funding)
- "tags": array of relevant tags (max 5)
- "is_opportunity": boolean (true if it's a funding/investment opportunity)
- "summary": 1-2 sentence summary of what this is
- "summary": 1-2 sentence summary in Arabic language of what this is, highlighting key strengths and contact/application info if present
- "organization_name": extracted organization name if any, or null
- "country": extracted country if any, or null
@@ -78,7 +78,7 @@ Extract organization/investor information from this text. Return JSON:
- "type": one of ["vc", "angel", "accelerator", "incubator", "venture_studio", "partner", "other"] or null
- "country": country name or null
- "website": website URL or null
- "description": brief description max 200 chars
- "description": brief description max 200 chars in Arabic language
Text: {$text}

View File

@@ -289,21 +289,27 @@ class Collector
// Trigger Telegram notification if enabled
if ($this->getSetting('telegram_enabled') === '1') {
$orgName = '';
if ($orgId) {
$orgStmt = $this->pdo->prepare("SELECT name FROM organizations WHERE id = ?");
$orgStmt->execute([$orgId]);
$orgName = $orgStmt->fetchColumn() ?: '';
$minScore = (int)($this->getSetting('telegram_min_score') ?: 75);
$oppType = $analysis['opportunity_type'] ?? $analysis['type'] ?? 'other';
$importantTypes = ['vc_funding', 'accelerator', 'incubator', 'grant', 'competition'];
if ($score >= $minScore && in_array($oppType, $importantTypes)) {
$orgName = '';
if ($orgId) {
$orgStmt = $this->pdo->prepare("SELECT name FROM organizations WHERE id = ?");
$orgStmt->execute([$orgId]);
$orgName = $orgStmt->fetchColumn() ?: '';
}
$this->notifier->loadSettings();
$this->notifier->notifyNewOpportunity([
'title' => $entry['title'],
'type' => $oppType,
'score' => $score,
'url' => $entry['url'],
'description' => $analysis['summary'] ?? $entry['description'],
'org_name' => $orgName,
]);
}
$this->notifier->loadSettings();
$this->notifier->notifyNewOpportunity([
'title' => $entry['title'],
'type' => $analysis['opportunity_type'] ?? $analysis['type'] ?? 'other',
'score' => $score,
'url' => $entry['url'],
'description' => $analysis['summary'] ?? $entry['description'],
'org_name' => $orgName,
]);
}
} catch (Throwable $e) {

View File

@@ -162,14 +162,34 @@ class TelegramNotifier
$type = $opportunity['type'] ?? 'other';
$score = $opportunity['score'] ?? 0;
$url = $opportunity['url'] ?? '';
$desc = mb_substr($opportunity['description'] ?? '', 0, 200);
$desc = $opportunity['description'] ?? '';
$orgName = $opportunity['org_name'] ?? '';
$message = "*New Opportunity:* {$title}\n";
$message .= "*Type:* {$type} | *Score:* {$score}/100\n";
if ($orgName) $message .= "*Organization:* {$orgName}\n";
if ($desc) $message .= "_{$desc}_\n";
if ($url) $message .= "\n[Open Link]({$url})";
$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;
$message = "💡 *فرصة استثمارية جديدة:* {$title}\n\n";
$message .= "▪️ *النوع:* {$translatedType}\n";
$message .= "▪️ *درجة الأهمية:* {$score}/100\n";
if ($orgName) {
$message .= "▪️ *الجهة:* {$orgName}\n";
}
if ($desc) {
$message .= "\n*الملخص ونقاط القوة:*\n_{$desc}_\n";
}
if ($url) {
$message .= "\n🔗 [رابط التقديم والتواصل]({$url})";
}
$this->send($message, 'opportunity');
}