VOICE CENTER · אפיון
v2.2 · 12.05.2026 · SOHO/SMB/SME

Voice Center — אפיון מלא

פלטפורמת SaaS ישראלית ל-SOHO/SMB/SME. ארבעה מוצרים מדורגים בפשטות: הודעות → מזכירה → מכירות → צ׳אט. סטאק קולי: Pipecat + xAI Grok + Twilio + Tranzila.
v2.1 · 12.05.2026 אפיון בלבד (לא קוד) בסיס קוד: voice-agent-grok השוואה: agenteam.co

1. סקירה

המוצרים שלנו לרוב חופפים פונקציונלית למה ש-AgenTeam עושים. הבידול האמיתי הוא בעיקר ארבעה ענפים:

  1. רוחב היצע — אנחנו מוכרים 4 מוצרים מדורגים (מהפשוט לעמוק), הם מוכרים "פלטפורמה" אחת גנרית
  2. איכות עברית — Grok Voice עם prompt-engineering מותאם עברית (לעומת OpenAI Realtime שלהם)
  3. זרימת הצטרפות — URL/PDF/Word → סוכן אוטומטית
  4. סליקה ישראלית — Tranzila ישיר, self-serve מלא מהקליק הראשון

בלי ליפול לרומאנטיקה של "killer feature" — מציאת בידול בולט אחד היא קשה. הנכס שלנו הוא execution + רוחב + עברית + תמחור.

ארבעת המוצרים (מסודרים מהפשוט לעמוק)

📲

1. שירות הודעות

הכי פשוט בעולם. כל לקוח מקבל "הגעת ל-X, אני לא זמין כרגע, השאר הודעה". AI מתנהג יפה, לוקח פרטים, שולח אימייל/SMS לבעל העסק.

📞

2. מזכירה דיגיטלית

עונה, מסננת, מתאמת פגישות, מעבירה לנציג כשצריך. Voice Realtime + tools.

🎯

3. סוכן מכירות

נכנסות ויוצאות. Hardcoded pitch, מעביר מהר מאוד לנציג אנושי כשמתעניינים.

💬

4. צ׳אט לאתר

פחות מעניין כרגע — דורש מהלקוח להדביק widget לאתר. נחמד כ-upsell אבל לא כניסה ראשית.

מה השונה מ-AgenTeam (בכנות)

ממדAgenTeamVoice Center
היצע מוצרים"פלטפורמה" אחת גנרית — הלקוח צריך להבין מה לבנות4 מוצרים נפרדים — קונה את מה שמתאים לו
סטאק קוליOpenAI Realtime (alloy/echo — הוכח מהקוד)xAI Grok Voice + Pipecat (עברית טובה יותר — אומת)
גרסת ניסיוןאין30 דקות חינם + מספר זמני

מסמכים נוספים

שני מסמכי הרקע שעמדו בבסיס האפיון הזה:

2. מה גילינו על AgenTeam

חקרתי את ה-bundles של הדשבורד שלהם (הורדה ישירה מ-Vercel). הסטאק שלהם חשוף בקוד.

1.1 הסטאק הקולי — OpenAI לבד

בקובץ AgentDetail-B9uX-zwn.js (86KB) — voice='alloy' מופיע כקול ברירת מחדל. alloy זה שם ייחודי של OpenAI TTS (6 קולות: alloy/echo/fable/onyx/nova/shimmer).
Voice speed slider מוגדר ל-0.25–1.5 — בדיוק הטווח של OpenAI TTS.
מילת המפתח realtime מופיעה ב-AgentDetail — מצביע על שימוש ב-OpenAI Realtime API (gpt-realtime model — WebSocket יחיד ל-STT+LLM+TTS).
Privacy מצהיר במפורש: OpenAI ל-STT/NLU/text generation, Twilio לטלפוניה.
אפס אזכורים של: ElevenLabs, Deepgram, Cartesia, Pipecat, LiveKit, xAI, Grok, Vapi, Retell.

1.2 אין שום זרימת URL → סקרייפ → סוכן

מיפיתי את כל ה-chunks של הדשבורד מה-bundle. אלה כל ה-routes שקיימים:

Dashboard · AdminDashboard · AgentManagement · AgentDetail · AgentRunner
RealtimeCall · CheckVoiceBot · CheckChatbot · PhoneNumbers · BillingPage
BillingHistory · Settings* · Resources · ApiDocs · VerifyEmailPage

מה אין: UrlImport, Wizard, Scraper, WebsiteAnalyzer, OnboardingWizard, AgentBuilder, Templates — אפס.

ברירת המחדל של system_prompt בקוד: "You are a helpful AI assistant." — הגנרי ביותר שיש. אין תבניות לפי תעשייה, אין wizard, אין סקרייפר.

הסרטונים ב-YouTube שלהם (וידאתי דרך oEmbed API):

  • "יצירת סוכן בינה מלאכותית שמאשר הגעה לאירועים"
  • "יצירת סוכן מכירות מבוסס בינה מלאכותית"
  • "יצירת סוכן בינה מלאכותית שמנהל יומן פגישות"

שלושתם מסבירים איך לכתוב prompt ידנית, לא איך לסרוק URL.

1.3 ה-API שלהם — Plain CRUD

GET    /companies
POST   /agents              ← אתה שולח system_prompt
PATCH  /agents/:id
POST   /agents/:id/leads
PATCH  /agents/:id/leads/:id

אין POST /agents/from-url, אין /scrape, אין /generate. הכל manual flow.

1.5 מיפוי ה-Routes של AgenTeam (לבחינה)

Routeתפקידמה אנחנו לוקחים
/שיווקבסיס מבני אבל מחליף מסר
/productסקירת מוצרמחלקים ל-3 דפי מוצר (secretary, messaging, sales)
/pricing3 חבילות4 חבילות + Trial — עם Tranzila checkout
/records5 הקלטות + 3 צ׳אטים20+ הקלטות לפי תעשייה
/api-docsתיעוד CRUD מעולהנשכפל + MCP server + AI Context Pack
/check-voice-bot"בחר חברה" — דלWebRTC live demo, בלי הרשמה
/agent-tutorials3 YouTubeKnowledge base + ספריית פלייבוקים

3. הקונספט

הבעיה האמיתית של SOHO/SMB/SME ישראלי: לא "אין AI" — אלא מאבדים פניות כי אין מי שיענה. שיחות אחרי שעות, לידים לא הוחזרו, פגישות לא אושרו. זה פדיון אבוד.

הפתרון: שלוחה דיגיטלית 24/7 שעובדת כמו עובד שכיר — אבל פחות משכר מינימום ליום. הלקוח לא קונה "מודל שפה". הוא קונה נציג עבודה בענן.

הסטוריטלינג השיווקי: מחשבון "פניות אבודות" על הומפייג ("כמה שיחות החמצת החודש?"), לא דיבור על "GPT-4" או "Realtime API".

ארבעת המוצרים — מהפשוט לעמוק

📲

1. שירות הודעות (Smart Voicemail) — הכי פשוט בעולם

AI עונה לשיחה, פותח עם hardcoded פר-לקוח: "הגעת למרפאה של ד״ר זימן / מוסך יהלומי. כרגע לא זמין, רוצה להשאיר הודעה?" לוקח פרטים, מתעד, שולח SMS/אימייל לבעל העסק עם סיכום. בלי tools מורכבים, בלי קביעת פגישות, בלי שום דבר. זה ה-MVP האמיתי וה-entry point החינמי-כמעט.

עוסק מורשהחד-עובד מוסכיםחנויות
📞

2. מזכירה דיגיטלית

עונה, מסננת, מתאמת פגישות בזמן אמת (Google Calendar), מעבירה לנציג כשצריך, שולחת SMS אישור. פלייבוק מותאם למרפאות / משרדי עו"ד / קליניקות.

מרפאותעו"ד מספרותקליניקות
🎯

3. סוכן מכירות (נכנסות + יוצאות)

Hardcoded pitch עם 2-3 שורות מידע על המוצר. מעביר מהר מאוד לנציג אנושי ברגע שהשיחה הופכת רצינית. לא מנסה לסגור עסקאות בעצמו — מתפקיד כ-pre-qualifier.

נדל"ןביטוח קורסיםחוגים
💬

4. צ׳אט לאתר (Lower priority)

Widget שמדביקים לאתר. דורש מהלקוח גישה לקוד האתר שלו → פחות מתאים ל-SOHO בלי מפתחים. נכנס לרודמאפ אבל לא מוצר entry-level.

ארבעת המוצרים רצים על אותה תשתית טכנית (Pipecat+Grok+Twilio). השוני הוא בפלייבוק (system_prompt) + tools פעילים + מחיר.

מה המערכת באמת עושה (מאחורי הקלעים)

4. זרימת Onboarding: URL/PDF → סוכן חי

זרימת ההצטרפות הסטנדרטית של המוצר. הלקוח מביא URL של האתר שלו (או PDF/Word), המערכת סורקת, מחלצת מידע, ובונה את ה-system_prompt אוטומטית. בלי זה אין self-serve.

הזרימה — מקצה לקצה

1
הלקוח נכנס לאתר ולוחץ "התחל בחינם"
בוחר מוצר (מזכירה / הודעות / מכירות) → ממשיך ב-onboarding wizard.
2
בחירת מקור: URL / PDF / Word / טקסט ידני
"מאיפה תרצה שאלמד עליך?" — שדה URL, או drag&drop של PDF/DOCX, או textarea חופשי.
FileUpload (S3/R2) + URL validation
3
סקרייפ ב-cascade (אם URL)
המערכת מנסה ב-3 שכבות (פירוט בטאב הבא): Firecrawl → CloakBrowser → Playwright. עוצרת ב-10-15 דפים עיקריים.
Worker job · 30-60s
4
חילוץ מידע מובנה
מהדפים שהוצאו: שם העסק, תיאור, שירותים/מוצרים, שעות פעילות, מחירים (אם יש), טלפון, כתובת, FAQ.
Claude Opus 4.7 — extraction prompt
5
הצגה ללקוח לאישור (Human-in-the-loop)
"זה מה שהבנתי על העסק שלך — האם זה נכון?" — הלקוח עורך/מאשר. הצעד החשוב ביותר ל-trust.
Editable form + diff highlight
6
בחירת אישיות הסוכן
שם הסוכן (ברירת מחדל: "אלמוג" / "תמיר" / "נועה"), קול (Ara/Eve/Sal/Leo/Rex של Grok), טון (פורמלי/חברותי/אנרגטי), שפה (he/en).
Grok voices · UI selector
7
בחירת פלייבוק
לפי המוצר שנבחר: מזכירה (לוקח הודעות + מתאם פגישות + מסנן), הודעות (תזכורות + מעקב), מכירות (פיץ׳ + סינון + סגירה).
10+ Playbook templates
8
יצירת system_prompt
Claude Opus 4.7 (או GPT-5.4 / Grok 4) מקבל: [scraped content מאושר] + [פלייבוק template] + [אישיות] → מחזיר system_prompt מוכן בעברית, בלי RAG, הכל דחוס פנימה (5-15K tokens).
Claude Opus 4.7 · 1 LLM call
9
תצוגה מקדימה: "דבר עם הסוכן עכשיו"
WebRTC live → הלקוח מדבר עם הסוכן בדפדפן לפני שמשלם. אם מרוצה → ממשיך. אם לא → חוזר לעריכת ה-prompt.
voice-agent-grok backend · /ws/test
10
תשלום ב-Tranzila
בחירת חבילה → iFrame של Tranzila → אישור → webhook חזרה → token לחיוב חוזר נשמר.
Tranzila iFrame · recurring billing
11
הקצאת מספר טלפון
Twilio API → קונה מספר ישראלי חדש (או מעביר קיים דרך SIP trunk). מקצה ל-tenant. מגדיר webhook לזכר ה-backend.
Twilio Phone Number purchase API
12
הסוכן חי
מעבירים ללקוח לדשבורד: "הסוכן שלך פעיל ב-03-XXX-XXXX. נסה להתקשר עכשיו." סך הכל: ~15 דקות.
Tenant active · webhook bound
הנקודה הקריטית: ה-cascade של הסקרייפ + LLM extract/compose + Human-in-the-loop יוצרים אונבורדינג חלק — מאחורי הקלעים זה רק 3 שלבים מובנים. אין RAG, אין vector DB. הכל פלין.

5. Scrape Cascade — איך סורקים URL

הקסקדה מטפלת ב-3 רמות של "קושי" באתרים. כל שלב מנסה — אם נכשל (timeout / block / חסר תוכן) → עובר לבא בתור.

SHALLOW
Firecrawl
המהיר ביותר. עובד מצוין לרוב אתרי SMB ישראלי. JS rendering מובנה. מחיר נמוך לקריאה.
STEALTH
CloakBrowser
אנטי-זיהוי ברמת C++ patches. כשאתרים מחזירים 403 לבוט הראשון (g-s-law, אתרי B2B עם Cloudflare).
FALLBACK
Playwright local
Chromium מקומי, מלא בשליטה. כאשר השניים הראשונים נכשלו או דורשים login/cookies.

4.1 לוגיקת ה-cascade (פסאודו)

async def scrape_with_cascade(url, max_pages=15):
    # Stage 1: Firecrawl (fast, hosted, ~$0.001/page)
    try:
        result = await firecrawl.crawl(url, limit=max_pages, formats=["markdown","html"])
        if validate(result, min_chars=500):
            return {"source": "firecrawl", "pages": result}
    except Exception: pass

    # Stage 2: CloakBrowser (anti-bot, local)
    try:
        pages = await cloakbrowser_crawl(url, max_pages)
        if validate(pages, min_chars=500):
            return {"source": "cloakbrowser", "pages": pages}
    except Exception: pass

    # Stage 3: Playwright (last resort)
    pages = await playwright_crawl(url, max_pages)
    return {"source": "playwright", "pages": pages}

4.2 בחירת הדפים החשובים (לא "כל האתר")

10-15 דפים זה התקרה. לוגיקת priority:

  1. Always: /, /about, /contact
  2. Pricing/Services: /pricing, /services, /products
  3. FAQ: /faq, /help
  4. Footer links שאינם משפטיים
  5. Top items בתפריט ראשי
  6. דיסקרימינטור: מקסימום 15 דפים, מעדיפים דפים עם >500 chars טקסט

מה לא סורקים: /privacy, /terms, /accessibility, blog posts (אלא אם כן יש <10 דפים בסה"כ).

4.3 מקור חלופי: PDF / Word / Text

סוגטיפול
PDFPyMuPDF / pdfplumber → טקסט גולמי → אותו pipeline כמו scraped pages
DOCXpython-docx → טקסט
Plain textהלקוח מדביק ל-textarea — מדלגים על Stages 1-3

4.4 ולידציה

  • אם פחות מ-500 תווים סה"כ — שגיאה ידידותית: "לא הצלחנו לקרוא את האתר. אפשר להעלות מסמך?"
  • אם זוהתה שפה זרה לא נתמכת — אזהרה: "האתר באנגלית — הסוכן יוצב לאנגלית. רוצה לעבור לעברית?"
  • אם זוהה שהאתר ב-Hebrew אבל מערפל RTL/encoding — UTF-8 normalization בכפיה

4.5 עלויות משוערות

שלבעלות לסריקה (15 דפים)
Firecrawl~$0.015
CloakBrowserאפסי (local)
Playwrightאפסי (local)
LLM extraction call~$0.03
LLM compose call~$0.03
סה"כ לסקרייפ אחד~$0.02 = 7 אגורות

בעלות אונבורדינג של פחות מ-7 אגורות לסקרייפ ובחירה של $0 חבילת trial, ROI הצדדי מוצדק בקלות.

6. Prompt Generator — איך מייצרים system_prompt (ללא RAG)

הבחירה האסטרטגית: אין RAG. אין vector DB. אין chunking. הכל נדחס ל-system_prompt אחד שעובר ל-Grok בכל שיחה. עסק SOHO/SMB ממוצע מחזיק 3-15K טוקנים — נכנס בקלות.

5.1 בחירת המודלים — מאי 2026

שלבמודללמה
חילוץ JSON מ-markdown Claude Opus 4.7 / GPT-5.4 / Grok 4 structured output, עברית מצוינת, JSON mode
חיבור system_prompt סופי Claude Opus 4.7 / GPT-5.4 / Grok 4 איכות מקסימלית — ה-prompt משמש בכל שיחה
קריאת PDF/Word Claude Opus 4.7 (vision) / GPT-5.4 (vision) vision-capable, הופך מסמך ישירות ל-markdown — אותו model handles everything
אין Gemini באפיון. כל ה-pipeline משתמש באותה משפחת מודלים (Claude Opus 4.7 כברירת מחדל, GPT-5.4 או Grok 4 כ-fallback). זה גם פשוט וגם איכותי — אותו model עושה גם vision (PDF) וגם text (extraction + compose).

5.2 התהליך המלא

1
איסוף חומר גלם
מ-URL: 10-15 דפי markdown מה-cascade (טאב 5).
מ-PDF/Word: Claude Opus 4.7 (vision) → markdown נקי.
מטקסט: השארה כפי שהוא.
2
חילוץ JSON מובנה (LLM call #1)
קלט: כל ה-markdown
פלט: { business_name, description, services[], hours, contact, faqs[], pricing? }
structured output mode כדי שלא יחזיר טקסט חופשי.
3
הצגה ללקוח לאישור (Human-in-the-loop)
מציגים טופס עם השדות המחולצים — לא את ה-system_prompt הגולמי (מאיים). הלקוח עורך/מתקן/מאשר. זה ה-trust gateway החשוב ביותר באונבורדינג.
4
חיבור system_prompt סופי (LLM call #2)
קלט: JSON המאושר + Playbook template (לפי המוצר: messaging/secretary/sales) + persona settings (שם, קול, טון, שפה).
פלט: system_prompt טקסט מוכן ב-עברית/אנגלית/ערבית/רוסית (לפי בחירה).
5
שמירה + הקצאת מספר Twilio
שמירה ב-Postgres. קריאה ל-Twilio API: POST /IncomingPhoneNumbers עם VoiceUrl שמצביע על endpoint שלנו עם tenant_id.

5.3 מבנה ה-system_prompt שיווצר

[PERSONA]
שמך {agent_name}. אתה {role} של {business_name}.
אתה מדבר {language} בטון {tone}. אנושי, סבלני, קצר בתשובות.

[BUSINESS CONTEXT]
{business_name} הוא {one_line_description}.
- כתובת: {address}
- שעות פעילות: {hours}
- טלפון נציג אנושי לחירום: {fallback_phone}

[SERVICES / PRODUCTS]
{extracted_services_bullets}

[FAQ]
{extracted_faqs}

[PLAYBOOK: messaging|secretary|sales]
{playbook_template_content}

[GUARDRAILS]
- אל תמציא מחירים שלא מצוינים → "אני אתאם נציג שיחזור אליך".
- אל תיתן ייעוץ משפטי/רפואי בשם העסק.
- אם לא ברור — escalate_to_human().

[TOOLS] (משתנים פר-מוצר)
messaging: take_message, send_sms_summary
secretary: book_appointment, send_sms, escalate, take_message
sales:     send_sms, escalate, send_brochure

[CLOSING]
תמיד סיים בסיכום ברור.

5.4 עלות אונבורדינג פר-לקוח (אומדן)

שלבעלות משוערת
Scrape cascade (15 עמודים)~$0.015
Opus 4.7 extraction call~$0.03
Opus 4.7 compose call~$0.03
PDF vision (אם יש)~$0.01 לעמוד
סה"כ~$0.08-0.15 (30-55 אגורות)

עלות חד פעמית פר onboarding. זניחה.

7. Voice Stack — Pipecat + xAI Grok (קיים)

טוב לדעת: ה-stack הזה כבר עובד ב-voice-agent-grok שלך. עבור ל-Voice Center אנחנו לא בונים מחדש את ה-pipeline הקולי — אנחנו עוטפים אותו ב-multi-tenancy.

Option A (primary) — xAI Grok Voice

grok-voice-think-fast-1.0 — עברית נבדקה ואומתה. realtime API יחיד שמטפל ב-STT+LLM+TTS.

Option B (fallback) — OpenAI Realtime

במקרים שבהם Grok חורק (לדוגמה: דובר עם מבטא חזק, עברית טכנית של מקצוע מסוים, או downtime של xAI) — אותה ארכיטקטורת Pipecat תומכת ב-swap ל-gpt-realtime של OpenAI. זה גם מה שהוכחנו ש-AgenTeam משתמשים בו.

ה-config של ה-tenant יכיל שדה realtime_provider: "xai" | "openai" ואפשר לשנות בלי downtime.

6.1 איך זה עובד היום (voice-agent-grok)

+97233822272 (Twilio number) │ ▼ Twilio PSTN gateway │ ▼ HTTP webhook POST /twilio/incoming/xai/{voice} │ ▼ TwiML <Stream> → wss://... Pipecat WebSocket server (FastAPI) │ ▼ bidirectional audio xAI Grok Voice realtime API (grok-voice-think-fast-1.0) │ STT + LLM + TTS (Hebrew - Ara/Eve/Sal/Leo/Rex)

6.2 מה צריך להוסיף כדי שזה יעבוד multi-tenant

  1. Tenant resolver בכל webhook — לזהות איזה tenant לפי המספר שמתקשרים אליו.
  2. Per-tenant config loader — system_prompt + voice + tools + business_hours מ-DB.
  3. Tool registry — כל tenant יכול להפעיל/לבטל כלים (book_appointment, send_sms, ...).
  4. Call recording ל-S3/R2 פר tenant (עם הסכמה ברורה לחוק הפרטיות).
  5. Transcript pipeline — אחרי שיחה: שמירה ב-DB + webhook ל-CRM של הלקוח.

6.3 קולות זמינים (כבר נבדקו)

קולמגדרהערה
Araנשיחם, ידידותי — ברירת מחדל מומלצת למזכירה
Eveנשינמרץ — מתאים למכירות
Leoנשי (לפי בדיקה)שונה מהתיעוד הרשמי של xAI
Salזכרפורמלי
Rexזכראנרגטי

* HD mode זמין דרך preset xai_realtime_hd ב-output_rate=48kHz.

6.4 עברית — מה צריך לדעת

  • ה-system prompt צריך הנחיה להעריך כוונה ולא לבקש לחזור כדי לפצות על שגיאות STT.
  • הקובץ app/prompts.py ב-voice-agent-grok כבר מכיל את ה-Hebrew appendix המתאים.

6.5 התאמות נדרשות ל-voice-agent-grok

app/
├── agent.py                 # ←  הוסף tenant_id param
├── main.py                  # ←  webhook resolves tenant from number
├── prompts.py               # ←  load from DB instead of hardcoded
├── voices.py                # ←  unchanged
├── config.py                # ←  add TenantConfig dataclass
├── tenants/                 # ←  NEW
│   ├── resolver.py          # phone → tenant_id
│   └── config_loader.py     # DB query
├── tools/                   # ←  NEW
│   ├── book_appointment.py
│   ├── send_sms.py
│   └── escalate.py
├── call_logger.py           # ←  add S3 upload per-tenant
└── rag/                     # ←  REMOVE / disable (no RAG)

8. ארכיטקטורה כוללת

┌─────────────────────────────────────────────────────────────────────┐ │ USER LAYER │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │ │ │ Marketing │ │ Tenant │ │ End Customer │ │ │ │ Website │ │ Dashboard │ │ Phone Calls │ │ │ │ (Next.js) │ │ (React/Vite)│ │ │ │ │ └──────┬───────┘ └──────┬───────┘ └──────────┬───────────┘ │ └──────────┼──────────────────┼──────────────────────┼────────────────┘ │ Tranzila │ REST API │ PSTN │ iFrame │ + WebSocket │ in/out ▼ ▼ ▼ ┌─────────────────────────────────────────────────────────────────────┐ │ VOICE CENTER BACKEND │ │ │ │ ┌──────────────────────────────────────────────────────────────┐ │ │ │ ONBOARDING SERVICE (FastAPI) │ │ │ │ /onboarding/scrape → cascade scraper │ │ │ │ /onboarding/extract → LLM extract (Claude/GPT/Grok) │ │ │ │ /onboarding/compose → LLM compose prompt │ │ │ │ /onboarding/provision → Twilio buy number + bind │ │ │ └──────────────────────────────────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────────────────────────────────┐ │ │ │ VOICE AGENT SERVICE (Pipecat + xAI Grok) │ │ │ │ /twilio/incoming/{tenant_id} → live call │ │ │ │ /ws/test/{tenant_id} → browser WebRTC demo │ │ │ │ /api/agents, /api/calls, ... → CRUD │ │ │ │ ← reuses voice-agent-grok with multi-tenant wrapper │ │ │ └──────────────────────────────────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────────────────────────────────┐ │ │ │ MESSAGING SERVICE │ │ │ │ /sms/send, /sms/incoming → Twilio Messaging │ │ │ │ /whatsapp/send → Twilio WhatsApp │ │ │ │ /scheduler → cron for reminders, retries │ │ │ └──────────────────────────────────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────────────────────────────────┐ │ │ │ BILLING SERVICE │ │ │ │ /billing/checkout → Tranzila iFrame init │ │ │ │ /billing/webhook → Tranzila notify URL │ │ │ │ /billing/charge → recurring monthly cron │ │ │ │ /billing/invoice → Green Invoice integration │ │ │ └──────────────────────────────────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────────────────────────────────┐ │ │ │ BACKGROUND WORKERS (BullMQ / Celery) │ │ │ │ - Scrape jobs - CRM sync - Call transcripts │ │ │ │ - Reminders (cron) - Outbound campaigns │ │ │ └──────────────────────────────────────────────────────────────┘ │ └──────────┬──────────────────┬───────────────────┬───────────────────┘ ▼ ▼ ▼ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │ PostgreSQL │ │ Redis │ │ S3 / R2 │ │ (entities, │ │ (cache, │ │ (audio, │ │ tenants) │ │ queue) │ │ transcripts, │ │ │ │ │ │ PDFs) │ └──────────────┘ └──────────────┘ └──────────────────┘ ┌─────────────────────────────────────────────────────────────────────┐ │ EXTERNAL SERVICES │ │ │ │ ┌────────┐ ┌──────────┐ ┌────────┐ ┌──────────┐ ┌──────┐ ┌──────┐ │ │ │ Twilio │ │xAI Grok │ │Claude/ │ │ Firecrawl│ │Cloak │ │Tran- │ │ │ │ Voice │ │ Voice │ │ Flash │ │ API │ │Brows │ │zila │ │ │ │ +SMS+WA│ │ realtime│ │ extract│ │ scrape │ │ er │ │bill. │ │ │ └────────┘ └──────────┘ └────────┘ └──────────┘ └──────┘ └──────┘ │ │ │ │ ┌────────────┐ ┌─────────────┐ ┌─────────────────┐ │ │ │ Google │ │ HubSpot/ │ │ Green Invoice / │ │ │ │ Calendar │ │ monday.com │ │ iCount │ │ │ │ (OAuth) │ │ (webhooks) │ │ (חשבוניות) │ │ │ └────────────┘ └─────────────┘ └─────────────────┘ │ └─────────────────────────────────────────────────────────────────────┘

7.1 פירוט שירותים

Onboarding Service

FastAPI server נפרד שמטפל רק ב-flow של הצטרפות. רץ ב-Railway/Fly. מתקשר ל:

  • Firecrawl API (חיצוני)
  • CloakBrowser (binary מקומי)
  • Playwright (binary מקומי)
  • Anthropic / OpenAI / xAI API
  • DB (לאחסון התוצאות)

Voice Agent Service

זהו voice-agent-grok הקיים + multi-tenancy. רץ באותו cluster.

  • Pipecat orchestration
  • xAI Grok realtime client
  • Twilio webhooks
  • WebSocket לדפדפן (test)

7.2 hosting מומלץ

שכבהמקוםלמה
Marketing site (Next.js)VercelSSG/ISR, CDN, יומן הקצאות גמיש
Tenant Dashboard (React/Vite)Cloudflare Pagesזול, מהיר, אין vendor lock-in
Voice/Onboarding servicesFly.io או Railwayקרוב גיאוגרפית ל-Twilio EU. תמיכה ב-WebSocket persistent.
PostgreSQLNeon / SupabaseServerless Postgres. RLS multi-tenant מובנה.
RedisUpstashServerless. Pay-per-request.
FilesCloudflare R2אין egress fees — חשוב לקבצי אודיו.

9. מודל נתונים

Tenant
├── id, name, business_name, created_at
├── owner_user_id
├── subscription (plan, status, tranzila_token, next_charge_at)
├── usage_meters (minutes_used, sms_sent, current_month)
└── settings (timezone, language, business_hours_json)

User (גישה למחשב, יכול לנהל את ה-Tenant)
├── id, tenant_id, email, name, role (owner|admin|viewer)
└── auth (google_oauth | email_pw, password_hash)

Source (חומר גלם להפקת ה-prompt)
├── id, tenant_id, type (url|pdf|docx|text), url_or_filename
├── scrape_status, scrape_method (firecrawl|cloakbrowser|playwright)
├── raw_markdown[]   ← 15 דפים שנשמרו ב-R2
└── extracted_json   ← {business_name, services[], hours, ...}

Agent
├── id, tenant_id, name, persona_id, playbook_id (secretary|messaging|sales)
├── system_prompt (text - generated)
├── voice (Ara|Eve|Sal|Leo|Rex)
├── language (he|en)
├── voice_speed (0.5-1.5)
├── tools_enabled[] (book_appointment, send_sms, escalate, ...)
├── business_hours_json
└── source_id  ← reference to Source

PhoneNumber
├── id, tenant_id, twilio_sid, phone_e164
├── linked_agent_id, country, monthly_cost
└── status (active|suspended)

Contact (CRM-like - האנשים שמתקשרים אליך)
├── id, tenant_id, phone_e164, name, email, tags[]
└── first_seen_at, last_seen_at

Conversation (thread יחיד לאיש קשר, חוצה ערוצים)
├── id, tenant_id, contact_id, agent_id
├── started_at, last_activity_at, status
└── summary (auto-generated after each event)

Call
├── id, conversation_id, twilio_call_sid
├── direction (inbound|outbound), duration_sec
├── recording_url     ← Supabase Storage (mp3/wav)
├── transcript_url    ← Supabase Storage (JSON timestamped)
├── transcript_text   ← short flat text for search/index
├── outcome (appointment_booked|escalated|hung_up|...)
├── extracted_fields_json (name, intent, contact info from call)
└── tools_used[] (which functions the agent called)

Message (SMS / WhatsApp)
├── id, conversation_id, channel (sms|whatsapp)
├── direction, body, sent_at, delivered_at, status
└── twilio_message_sid

Event (פגישה / משימה / תזכורת)
├── id, conversation_id, contact_id
├── type (appointment|callback|reminder)
├── scheduled_at, status, calendar_event_id (Google)
└── created_by_call_id

Campaign (outbound — קמפיין שיחות יוצאות)
├── id, tenant_id, name, agent_id
├── target_contacts[] (CSV upload)
├── schedule (cron expression), status
└── stats (calls_made, connected, converted)

Integration
├── id, tenant_id, type (hubspot|monday|salesforce|generic_webhook)
├── credentials_encrypted, webhook_url
└── events_subscribed[] (call_ended|appointment_booked|...)

ApiKey
├── id, tenant_id, name, key_hash (prefix only stored)
├── created_at, last_used_at, revoked_at
└── scopes[]

8.1 הקלטות, תמלולים, ודשבורד

כל שיחה נשמרת מלאה: אודיו (mp3/wav) + תמלול עם timestamps (JSON). הקלטות יוצאות אוטומטית מ-Pipecat ל-Supabase Storage בסיום שיחה. Bucket פר-tenant (RLS).

בדשבורד הלקוח:

  • רשימת כל השיחות (תאריך, משך, מתקשר, outcome) — מסוננת לפי tenant_id דרך RLS
  • כל שורה ניתנת לפתיחה: נגן אודיו + תמלול גלילה + פעולות שבוצעו (function calls) + הודעות SMS/WA הקשורות
  • חיפוש טקסטואלי על transcript_text
  • סינון לפי outcome, agent, תאריך, מספר
  • הורדה: mp3 + תמלול PDF (כפתור)

חוק: בתחילת שיחה הסוכן יודיע "שיחה זו עשויה להיות מוקלטת" (חוק הגנת הפרטיות התשמ"א).

8.2 הבדל קונספטואלי מ-AgenTeam

AgenTeamVoice Center
מרכז המודלAgent → Lead → CallsContact → Conversation (multi-channel)
Multi-channelאין thread אחדConversation מכיל Calls + Messages + Events
Sourceאין — system_prompt ידניSource נשמר → ניתן לרענן את ה-prompt
Playbookאיןplaybook_id מצרף לתבנית

10. Tranzila — תשלום ומסחר

Tranzila היא ספק הסליקה הישראלי המוביל ל-SMB. תומך באשראי, ביט, Apple Pay, הוראת קבע, ובעיקר — סליקה חוזרת (recurring billing) שקריטית למודל SaaS חודשי.

9.1 זרימת רכישה

1
לקוח מסיים onboarding wizard → לוחץ "התחל בחבילה X"
Frontend POST /billing/checkout
2
Backend מייצר session ב-Tranzila
קריאה ל-Tranzila API עם פרטי החבילה, מקבל URL ל-iFrame.
Tranzila Insert API
3
iFrame של Tranzila מוטמע בדף תשלום
הלקוח מזין כרטיס. Tranzila מטפל בכרטיס, אנחנו לא רואים מספרים.
4
Tranzila → Notify URL (webhook)
חזרה לשרת שלנו עם: success/fail, transaction_id, token לחיוב חוזר.
POST /billing/webhook
5
שמירת token + הפעלת Tenant
Token של Tranzila + customer_id ב-DB. Tenant.subscription.status = active. הקצאת מספר Twilio. הפניית הלקוח לדשבורד.

9.2 חיוב חוזר חודשי

Cron daily @ 02:00 UTC
  ├─ SELECT tenants WHERE next_charge_at <= NOW() AND status = active
  ├─ FOR EACH tenant:
  │    ├─ Call Tranzila /charge with stored token + plan_price
  │    ├─ IF success → next_charge_at += 30 days, reset usage_meters
  │    └─ IF fail   → status = past_due, send email, retry @ +1, +3, +7 days
  └─ IF still failing after 7 days → suspend tenant (disable Twilio webhook)

9.3 חיוב Overage (תוספת דקות / הודעות)

בסוף החודש, אם הלקוח חרג ממכסת הדקות או הודעות:

9.4 מה Tranzila לא נותן — ולמה חשוב

  • אין מבנה "Subscription objects" מתוחכם כמו Stripe — אנחנו מנהלים בעצמנו: next_billing_date, status, retry_logic, plan_changes.
  • אין proration אוטומטי לשינוי חבילות באמצע חודש — צריך לקודד.
  • אין מודל "trial → paid" אוטומטי — נשמור Tenant.trial_ends_at ידנית.

9.5 הצעה: PaymentProvider abstraction

בעתיד אם נרצה Stripe (לקוחות בינלאומיים) — נעצב מ-day 1 שכבת PaymentProvider מופשטת:

interface PaymentProvider {
  createCheckout(amount, plan): { url, session_id }
  chargeWithToken(token, amount): { success, transaction_id }
  refund(transaction_id, amount?): { success }
}

class TranzilaProvider implements PaymentProvider { ... }
class StripeProvider implements PaymentProvider { ... }  // future

11. מבנה האתר השיווקי

10.1 דפי ליבה

Routeתפקידהערה
/דף הביתHero + Lost Revenue Calculator + 3 מוצרים
/secretaryמזכירה דיגיטליתדף נחיתה ייעודי
/messagingשירות הודעות חכםדף נחיתה ייעודי
/sales-agentסוכן מכירות AIדף נחיתה ייעודי
/try"דבר עם הסוכן עכשיו"WebRTC live demo, ללא הרשמה
/playbooksספריית פלייבוקים10+ תעשיות עם הקלטות
/playbooks/[industry]פלייבוק בודדעם דוגמאות שיחה + מחיר חבילה
/pricingתמחורTranzila checkout מובנה
/case-studiesמקרים אמיתייםעם מספרים: ROI, calls handled, conversions
/integrationsאינטגרציותHubSpot, monday, Google Calendar, ...
/apiתיעוד API+ MCP server + AI Context Pack
/blogתוכן SEOחסר אצל המתחרים
/about, /contactסטנדרט
/login, /signupאימותGoogle OAuth + Email/Password
/privacy, /termsמשפטיחובה

10.2 דשבורד הלקוח

Routeתפקיד
/dashboardKPIs: שיחות החודש, המרות, צריכת דקות, פגישות שנקבעו
/dashboard/onboardingWizard 12 שלבי URL→Agent (טאב 3)
/dashboard/agentsרשימת הסוכנים
/dashboard/agents/[id]עריכת agent — system_prompt + voice + tools
/dashboard/agents/[id]/testWebRTC live test לדפדפן
/dashboard/agents/[id]/refresh"רענן מהאתר" — סקרייפ מחדש
/dashboard/conversationsהיסטוריית שיחות חוצת-ערוצים
/dashboard/conversations/[id]שיחה בודדת: תמלול, audio player, פעולות שבוצעו
/dashboard/contactsCRM פנימי
/dashboard/campaignsקמפיינים יוצאים
/dashboard/integrationsחיבור CRM/Calendar/Webhooks
/dashboard/billingחבילה, חשבוניות, צריכה
/dashboard/api-keysניהול מפתחות API
/dashboard/settingsפרופיל, צוות, אבטחה

10.3 דף בית — סקציות מומלצות

  1. Hero — H1 ("השלוחה הדיגיטלית שלא תפסיק לעבוד") + Lost Revenue Calculator interactive
  2. 3 מוצרים — מזכירה / הודעות / מכירות
  3. "דבר עם הסוכן עכשיו" — WebRTC button → demo session
  4. How it works (URL→Agent) — אנימציה 4 שלבים
  5. פלייבוקים לפי תעשייה — 6 כרטיסים גדולים עם דוגמאות
  6. Social proof — לוגואים + ציטוטים + 3 הקלטות אמיתיות
  7. Pricing teaser — 3 חבילות + Trial
  8. FAQ — 10+ שאלות, לא 3 כמו AgenTeam
  9. CTA סופי — "התחל ב-15 דקות"

12. אסטרטגיית תמחור

חבילהמחיר חודשידקותSMS/WAמספריםסוכניםלקהל
Trial ₪0 (7 ימים) 30 50 מספר זמני 1 טעימה
Starter ₪249 120 200 1 1 עסק בודד
Business פופולרי ₪549 400 800 1 3 מספר תפקידים
Scale ₪1,290 1,200 3,000 3 10 SME עם מספר ענפים

* כל החבילות ממוקדות SOHO / SMB / SME. אין יעד-לקוח Enterprise בשלב הזה.

11.1 ההיגיון מול AgenTeam

חבילהAgenTeamVoice Centerהיתרון
Entry₪200 / 60min₪249 / 120min + 200 SMSפי-2 דקות + הודעות
Mid₪450 / 180min₪549 / 400min + 800 SMS + 3 agentsפי-2 דקות + הודעות + multi-agent
Top₪700 / 300min₪1,290 / 1,200min + 3,000 SMSחבילה גדולה ל-SME שלהם אין

11.2 חיוב Overage

11.3 הנחות

11.4 עלויות תשתית פר לקוח (אומדן גס לקבלת סדר גודל)

פריטסדר גודל ל-400 דקות/חודש
Twilio number~$1/חודש
Twilio minutes~$0.01 לדקה
xAI Grok Voice~$0.05 לדקה (לבדוק תמחור עדכני)
SMS (overestimate — חלק WA)~$0.04 להודעה
Hosting + DB pro-rataזניח עד נמוך
Tranzila + מעטפתנמוך

* האומדנים האלה צריכים אימות מול מחירונים עדכניים לפני קביעת תמחור סופי.

13. מסלול בנייה — לפי 3 רולים במקביל

הבנייה מתחלקת ל-3 מסלולים מקבילים. Track A (בקאנד+תשלום) נבנה ע"י איש אחד. Track B (סוכן קולי) ע"י 1-2 אנשים. Track C (UI/UX) ע"י איש אחד. הם נפגשים בחוזי API מוסכמים. כל track יש לו Phase 1/2/3 משלו.

חוזי API משותפים (כל הצוותים מסכימים מראש)

  • Database schema — מוגדר ב-OpenAPI/SQL לפני שמתחילים. מצורף ב-טאב 8.
  • Auth tokens — JWT עם tenant_id + user_id. אותו פורמט בכל מקום.
  • Webhooks ל-CRM — JSON envelope קבוע: {event, tenant_id, timestamp, payload}
  • Tenant config endpointGET /api/internal/tenants/:id/agent-config מחזיר את כל מה שצריך לטעון סוכן (system_prompt, voice, tools).

🅰️ Track A — Backend + Payments + Onboarding (איש אחד)

Phase A1 — Core Backend

  • Database schema (Postgres + Supabase)
  • Auth: Email/Password + Google OAuth
  • Tenant model + JWT
  • Tranzila integration: iFrame checkout + webhook + טוקן ל-recurring
  • Cron חודשי לחיוב חוזר

Phase A2 — Onboarding Service

  • Scrape cascade: Firecrawl → CloakBrowser → Playwright
  • PDF/Word ingestion: Claude Opus 4.7 vision → markdown
  • LLM extraction (Sonnet 4.6) → JSON
  • LLM compose (Opus 4.7) → system_prompt
  • Twilio API: subaccount create, number search, number purchase, webhook bind

Phase A3 — Public API + Integrations

  • API מתועד (כמו AgenTeam) + AI Context Pack
  • Webhooks ל-CRMs (HubSpot, monday)
  • חשבוניות (Green Invoice/iCount)
  • Overage billing (חישוב + חיוב נוסף בסוף חודש)

🅱️ Track B — Voice Agent (1-2 אנשים)

Phase B1 — Multi-Tenant Wrap

  • הרחבה של voice-agent-grok הקיים
  • Resolver: tenant_id ← phone number (ממופה דרך Twilio webhook)
  • Config loader: שולף system_prompt + voice + tools מ-DB
  • RAG הסרה (לא צריך)
  • שמירת תמלול + audio ל-Supabase Storage

Phase B2 — Tools + Playbooks

  • Tool: take_message (למוצר Messaging — לוקח פרטים, שולח SMS/אימייל לבעלים)
  • Tool: book_appointment (Google Calendar)
  • Tool: send_sms (Twilio Messaging)
  • Tool: escalate_to_human (מעביר למספר הנציג)
  • Tool: end_call
  • תמיכה רב-לשונית: he / en / ar / ru (מה ש-Grok תומך)

Phase B3 — Outbound + Scheduler

  • Outbound caller (Twilio outbound + Pipecat)
  • Cron scheduler: תזכורות 24h/1h, retries לשיחות שלא נענו
  • Cascade קוסט-ערוצים: לא ענה לקול → SMS → WhatsApp
  • Call analytics: outcome detection, duration stats

🅲 Track C — UI/UX (איש אחד)

Phase C1 — Marketing Site

  • Next.js: Home + 4 דפי מוצר + Pricing + Contact + Legal
  • "מחשבון פניות אבודות" אינטראקטיבי ב-Hero
  • SEO + JSON-LD + sitemap
  • RTL מלא + responsive

Phase C2 — Onboarding Wizard

  • Wizard מודרך (URL/PDF/Word → אישור → choose playbook → choose voice)
  • Loading screen חכם תוך כדי scrape (מה קורה ברקע)
  • Preview של ה-extracted JSON בטופס נערך
  • "דבר עם הסוכן עכשיו" — WebRTC לפני תשלום
  • Tranzila iFrame embed

Phase C3 — Tenant Dashboard

  • רשימת שיחות + תמלול + audio player
  • Contact list (CRM-לייט)
  • הגדרות סוכן (עריכת system_prompt, voice, tools)
  • Billing page (חבילה, חשבוניות, צריכה)
  • Settings (פרופיל, צוות, integrations)

סדר תלויות (מי מחכה למי)

  • C1 (Marketing site) יכול להיבנות מ-day-1 במקביל לכולם — לא תלוי בכלום.
  • B1 (Multi-tenant wrap) דורש את DB schema מ-A1 → תלות קלה.
  • C2 (Wizard) דורש את ה-onboarding endpoints מ-A2 → תלוי ב-A2.
  • C3 (Dashboard) דורש את ה-CRUD מ-A1+A2 ואת ה-call data מ-B1+B2.
  • B3 (Outbound) אחרון — דורש הכל לעבוד תחילה.

14. שאלות פתוחות + החלטות שנסגרו

✅ נסגרו

נושאהחלטה
מודלים ל-prompt generationClaude Opus 4.7 primary, GPT-5.4 / Grok 4 כ-fallback. אין Gemini בכלל.
קריאת PDF/Wordאותם מודלים — Claude Opus 4.7 (vision) או GPT-5.4 (vision). לא Gemini.
Voice realtime primaryxAI Grok Voice (אומת בעברית)
Voice realtime fallbackOpenAI Realtime (אם Grok חורק או downtime)
RAGאין. הכל ב-system_prompt. אם לקוח Enterprise יבקש — בנייה ידנית ע"י המתכנת.
FirecrawlOK להתחיל עם חינמי (500 calls/חודש), משדרגים ב-need basis.
שמירת אודיוSupabase Storage. הודעת "שיחה מוקלטת" בתחילת שיחה (חוק הגנת פרטיות).
Data Residencyלא רלוונטי כרגע — ישראל/EU בעתיד.
White-labelלא עכשיו — פוקוס SOHO/SMB ישירות.
WebRTC demo costעל חשבוננו. rate limiting פר-IP.
שם הסוכןהלקוח בוחר באונבורדינג. ברירת מחדל: "תמיר" / "נועה" / "אלמוג".
Hostingשרת שלנו. החלטה ספציפית (Hetzner/AWS/וכו') — לא רלוונטי לאפיון.
שפותעברית + ערבית + רוסית + אנגלית — לפי מה ש-Grok תומך. עברית primary.

⚠️ שאלות פתוחות רציניות

1. PBX / Multi-line customers (שאלה רצינית)

מה עושים עם לקוח עם 4-12 קווים נכנסים (מרפאה גדולה, סוכנות נדל"ן)? Twilio תומך SIP Trunking אבל זה דורש:

  • או BYOC (Bring Your Own Carrier) — הלקוח מעביר את כל הקווים שלו ל-Twilio (מורכב, כרוך בהעברת מספרים)
  • או SIP Trunk הדדי — חיבור Twilio ל-3CX/Asterisk של הלקוח (דורש קונפיגורציה ידנית)
  • או Forwarding — הלקוח מגדיר העברת שיחה ממרכזיה לקיימת למספר Twilio שלנו (פשוט, אבל מחייב ניתוב לוגי בצד שלנו)

המלצה ל-MVP: תמיכה רק ב-forwarding (פשוט). PBX/SIP יבוא בשלב מאוחר כשנגדיר קהל יעד SME ספציפי.

2. תמחור - האם ₪2 לדקה overage יעבוד?

הלקוח חושש שאף אחד לא ישלם ₪2/דקה. AgenTeam ב-Pro עומדים על ~₪2.33/דקה — אבל הם עוסקים בעיקר במכירה אנושית, לא self-serve. ל-self-serve העיניים של הלקוח על המחיר חדות יותר. צריך:

  • אולי חבילות גדולות יותר במחירים אחידים (1,500₪ ל-700 דקות במקום overage)
  • שקיפות: התראה ב-80% צריכה
  • אופציה לקנות "block" של 500 דקות תוך-חודשי ב-₪900 (₪1.8/דקה — זול יותר מ-overage רגיל)

3. שם מותג + דומיין

"Voice Center" זה codename. צריך לבחור שם שיווקי. אופציות: Sokenet, AgentLine, Voxa, Mishrad, Helper.co.il, Snahala, Voicy. זמינות .co.il / .com / .ai חייבת להיבדק + סימני מסחר.

4. "עורך סוכן ויזואלי" — מה זה אומר?

התכוונתי ל-workflow editor דמוי Make/n8n — drag&drop של בלוקים: "if customer says X → call tool Y → say Z". זה scope גדול. החלופה הפשוטה ל-MVP: טופס פשוט עם רשימת tools פעילים (checkboxes) + textarea אחד ל-custom instructions. שווה לדון אם בכלל נחוץ.

5. WhatsApp Business — תהליך הצטרפות

Twilio WhatsApp דורש אישור Meta (1-7 ימים, ידני) פר-לקוח. זה ייצור חוויה לא חלקה במהלך onboarding. אופציות: (א) להציע WhatsApp כ"upgrade" בנפרד אחרי שהלקוח כבר משלם; (ב) להשתמש ב-shared sender של Twilio (לא ממותג של הלקוח).