כל הפרויקטים
bot

Boti

הזיכרון החכם של העסק שלך — בוט WhatsApp שמקשיב, זוכר כל פרט, ועונה על שאלות בשנייה.

yonidev.io/ai-whatsapp-bot
Boti

סקירה

WhatsApp Business Bot מקשיב לשיחות פרטיות בין שותפים עסקיים, שומר כל הודעה עם embedding סמנטי ב-MongoDB Atlas, ומאפשר לשאול שאלות על היסטוריית השיחה בשפה טבעית. הוא משתלב עם Gmail, Google Calendar ו-Google Drive, ומספק התראות פיקוד עורף (אורף / צבע אדום) בזמן אמת — הכל ישירות מתוך שיחת WhatsApp.

סטאק טכנולוגי

Node.jsWhatsApp APIOpenAIMongoDB

הבעיה

שותפים עסקיים שמתנהלים בעיקר דרך WhatsApp מאבדים כל הזמן פרטים חשובים: מחירים שסוכמו, מספרי טלפון של לקוחות, מועדי פגישות, הבטחות פתוחות. היסטוריית הצ'אט ארוכה, חיפוש ידני בה איטי ולא אמין, ואין דרך מובנית לשאול 'מה סיכמנו עם דני?' ולקבל תשובה מדויקת.

הפתרון

כל הודעה נכנסת נשמרת ב-MongoDB ומקבלת embedding באופן אסינכרוני בעזרת text-embedding-3-small של OpenAI (1536 ממדים). כשמשתמש שואל שאלה (מופעל על ידי מילות טריגר כמו 'בותי'), GPT-4o-mini מסווג את השאלה ומפנה אותה ל-MongoDB Atlas Vector Search שמוציא את 15 ההודעות הדומות ביותר סמנטית. Claude Sonnet (עם GPT-4o-mini כגיבוי) מייצר תשובה בעברית מתוך חלון ההקשר הזה. חילוץ ישויות רץ ב-fire-and-forget אחרי כל שמירה ומעדכן פרופילי אנשי קשר. דיג'סט לילי של GPT-4o ב-00:30 שעון ישראל ממזג פרופילים כפולים ומייצר תובנות יזומות.

פיצ'רים מרכזיים

חיפוש סמנטי ושאלות-תשובות AI

עונה על שאלות בעברית בשפה טבעית על שיחות עבר באמצעות MongoDB Atlas Vector Search (דמיון קוסינוס, 1536 ממדים) ו-Claude Sonnet כמודל הראשי, עם GPT-4o-mini כגיבוי.

תמלול הודעות קוליות

מתמלל אוטומטית הודעות קוליות נכנסות עם Whisper של OpenAI, מזהה את פורמט האודיו לפי magic bytes וממיר עם fluent-ffmpeg לפי הצורך, ואז מבצע embed ושמירה כמו הודעה רגילה.

זיכרון אנשי קשר ופרופילים

מחלץ אנשי קשר, מספרי טלפון, סכומים, תאריכים והתחייבויות מכל הודעה ומתחזק פרופיל מצטבר לכל אדם עם יצירת סיכום LLM עצלנית — שאילתה דרך 'פרופיל [שם]'.

אינטגרציה עם Google Workspace

סורק Gmail כל 5 דקות ומנתח מיילים ב-AI; שולח תזכורות WhatsApp 30 דקות לפני אירועי Google Calendar; וסורק תיקיית Google Drive לאיתור הקלטות שיחה לתמלול ולאיחסון.

התראות פיקוד עורף בזמן אמת (אורף / צבע אדום)

שומר על חיבור WebSocket קבוע ל-tzevaadom.co.il ומעביר התראות אזעקה ספציפיות לעיר לצ'אטי WhatsApp, עם state machine למרחב המוגן (כניסה → המתנה → ניתן לצאת) והעדפות עיר לכל צ'אט.

לוח ניהול ו-CRM

לוח ניהול בנוי על Fastify, מוגן ב-PIN בטוח-עיתוי, עם טאבים לפרופילי אנשי קשר, לידים של CRM, תזכורות, ניהול צ'אטים, פוסטים לסטטוס, ו-Ask-the-Bot חי — עם Helmet CSP, הגבלת קצב, ואימות גוף-בקשה עם Zod.

Technical Highlights

  • אסטרטגיית dual-LLM: Claude Sonnet (ראשי, עברית טובה יותר) ← GPT-4o-mini (גיבוי) — מוחלף בזמן ריצה לפי קיום ANTHROPIC_API_KEY
  • צינור embedding fire-and-forget: הודעות נשמרות ב-MongoDB סינכרונית, ה-embeddings מיוצרים אסינכרונית — לא חוסם את לולאת האירועים של WhatsApp
  • תבנית upsert-first (findOneAndUpdate + upsert:true) בכל כתיבת הודעה — אידמפוטנטי מפני העברה כפולה של WhatsApp
  • State machine למרחב המוגן של אורף: 4 שלבים (none → entering → sheltering → clear) עם ספירות לאחור ספציפיות לעיר מטבלאות האיום הרשמיות של פיקוד העורף
  • דיג'סט GPT-4o לילי: רץ ב-00:30 שעון ישראל, ממזג פרופילי כינויים, מפעיל ביקורת זיכרון (טלפונים חסרים, סכומים סותרים, לידים ישנים) ושולח תובנות יזומות ל-WhatsApp
  • מתכנן שאילתות בסגנון Agent: classifyQuery() מפנה לאחד מ-7 מטפלים (תזכורת, פרופיל, cross-chat, טמפורלי, סיכום, ליד, כללי) לפני שמגיע לחיפוש הווקטורי
  • קוד TypeScript ESM-only מלא (tsx בפיתוח, tsc בפרודקשן); מצב strict ללא any מרומז; כל ה-imports משתמשים בסיומת .js
  • ולידציית רישיון פרודקשן עם חתימה אסימטרית — נדלג אוטומטית במצב פיתוח

איך להריץ

דרישות מוקדמות

  • Node.js 18 ומעלה
  • pnpm (מנהל החבילות)
  • MongoDB Atlas עם אינדקס Vector Search (1536 ממדים, cosine, שדה: embedding) — ראה MONGODB_SETUP.md
  • מפתח OpenAI API (נדרש עבור embeddings ו-Whisper)
  • מפתח Anthropic API (אופציונלי — מפעיל את Claude Sonnet לשאלות-תשובות)
  • חשבון WhatsApp לסריקת קוד QR בהפעלה הראשונה
  • Google OAuth credentials (אופציונלי — מפעיל את Gmail, Calendar, Drive)
1התקנת תלויות
$pnpm install
2העתקת תבנית הסביבה
$cp .env.example .env
3מילוי משתני סביבה נדרשים

פתח את .env והגדר לפחות: MONGODB_URI, OPENAI_API_KEY, ADMIN_PIN. הוסף ANTHROPIC_API_KEY כדי להפעיל את Claude.

4הגדרת אינדקס Vector Search ב-MongoDB Atlas

עקוב אחר MONGODB_SETUP.md כדי ליצור אינדקס בשם 'message_vector_index' על קולקציית messages (שדה: embedding, ממדים: 1536, similarity: cosine).

5הפעלה במצב פיתוח (מציג QR בהפעלה ראשונה)
$pnpm dev
6סריקת קוד QR עם WhatsApp

פתח WhatsApp ← מכשירים מקושרים ← קשר מכשיר וסרוק את ה-QR בטרמינל. הסשן נשמר ב-auth_info_baileys/ להפעלות עתידיות.

7פתיחת לוח הניהול

נווט ל-http://localhost:3000 והתחבר עם ה-ADMIN_PIN שהגדרת.

Code Your Dream

מוכן לבנותמשהו אמיתי?

תגיד לי מה אתה צריך — אני אדאג לשאר.

צור קשר