Voice Center — אפיון מלא
1. סקירה
המוצרים שלנו לרוב חופפים פונקציונלית למה ש-AgenTeam עושים. הבידול האמיתי הוא בעיקר ארבעה ענפים:
- רוחב היצע — אנחנו מוכרים 4 מוצרים מדורגים (מהפשוט לעמוק), הם מוכרים "פלטפורמה" אחת גנרית
- איכות עברית — Grok Voice עם prompt-engineering מותאם עברית (לעומת OpenAI Realtime שלהם)
- זרימת הצטרפות — URL/PDF/Word → סוכן אוטומטית
- סליקה ישראלית — Tranzila ישיר, self-serve מלא מהקליק הראשון
בלי ליפול לרומאנטיקה של "killer feature" — מציאת בידול בולט אחד היא קשה. הנכס שלנו הוא execution + רוחב + עברית + תמחור.
ארבעת המוצרים (מסודרים מהפשוט לעמוק)
1. שירות הודעות
הכי פשוט בעולם. כל לקוח מקבל "הגעת ל-X, אני לא זמין כרגע, השאר הודעה". AI מתנהג יפה, לוקח פרטים, שולח אימייל/SMS לבעל העסק.
2. מזכירה דיגיטלית
עונה, מסננת, מתאמת פגישות, מעבירה לנציג כשצריך. Voice Realtime + tools.
3. סוכן מכירות
נכנסות ויוצאות. Hardcoded pitch, מעביר מהר מאוד לנציג אנושי כשמתעניינים.
4. צ׳אט לאתר
פחות מעניין כרגע — דורש מהלקוח להדביק widget לאתר. נחמד כ-upsell אבל לא כניסה ראשית.
מה השונה מ-AgenTeam (בכנות)
| ממד | AgenTeam | Voice Center |
|---|---|---|
| היצע מוצרים | "פלטפורמה" אחת גנרית — הלקוח צריך להבין מה לבנות | 4 מוצרים נפרדים — קונה את מה שמתאים לו |
| סטאק קולי | OpenAI Realtime (alloy/echo — הוכח מהקוד) | xAI Grok Voice + Pipecat (עברית טובה יותר — אומת) |
| גרסת ניסיון | אין | 30 דקות חינם + מספר זמני |
מסמכים נוספים
שני מסמכי הרקע שעמדו בבסיס האפיון הזה:
- סקירה טכנית מעמיקה של agenteam.co — מיפוי 13 הדפים, ניתוח הסטאק, הוכחות מהקוד, כרטיס ציונים
- מסמך הקונספט הראשוני — הגרסה המוקדמת לפני שנכנסו לעובי הקורה
2. מה גילינו על AgenTeam
חקרתי את ה-bundles של הדשבורד שלהם (הורדה ישירה מ-Vercel). הסטאק שלהם חשוף בקוד.
1.1 הסטאק הקולי — OpenAI לבד
AgentDetail-B9uX-zwn.js (86KB) — voice='alloy' מופיע כקול ברירת מחדל. alloy זה שם ייחודי של OpenAI TTS (6 קולות: alloy/echo/fable/onyx/nova/shimmer).
0.25–1.5 — בדיוק הטווח של OpenAI TTS.
realtime מופיעה ב-AgentDetail — מצביע על שימוש ב-OpenAI Realtime API (gpt-realtime model — WebSocket יחיד ל-STT+LLM+TTS).
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 — אפס.
"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) |
| /pricing | 3 חבילות | 4 חבילות + Trial — עם Tranzila checkout |
| /records | 5 הקלטות + 3 צ׳אטים | 20+ הקלטות לפי תעשייה |
| /api-docs | תיעוד CRUD מעולה | נשכפל + MCP server + AI Context Pack |
| /check-voice-bot | "בחר חברה" — דל | WebRTC live demo, בלי הרשמה |
| /agent-tutorials | 3 YouTube | Knowledge 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.
מה המערכת באמת עושה (מאחורי הקלעים)
- זיהוי — מי המתקשר? במאגר? לקוח חוזר? עם היסטוריה?
- הקשר — מה הוא קנה? מה הוא ביקש קודם? מה מצב הפגישה?
- החלטה — על בסיס system_prompt + ההקשר → מה להגיד עכשיו
- פעולה — לא רק לדבר: function calling (book_appointment, send_sms, escalate_to_human, query_inventory)
- תיעוד — כל מילה, כל פעולה, כל תוצאה → DB → CRM webhook
- המשך — 24h לפני פגישה → תזכורת. לא ענה → SMS. עדיין לא → outbound call.
4. זרימת Onboarding: URL/PDF → סוכן חי
זרימת ההצטרפות הסטנדרטית של המוצר. הלקוח מביא URL של האתר שלו (או PDF/Word), המערכת סורקת, מחלצת מידע, ובונה את ה-system_prompt אוטומטית. בלי זה אין self-serve.
הזרימה — מקצה לקצה
5. Scrape Cascade — איך סורקים URL
הקסקדה מטפלת ב-3 רמות של "קושי" באתרים. כל שלב מנסה — אם נכשל (timeout / block / חסר תוכן) → עובר לבא בתור.
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:
- Always:
/,/about,/contact - Pricing/Services:
/pricing,/services,/products - FAQ:
/faq,/help - Footer links שאינם משפטיים
- Top items בתפריט ראשי
- דיסקרימינטור: מקסימום 15 דפים, מעדיפים דפים עם >500 chars טקסט
מה לא סורקים: /privacy, /terms, /accessibility, blog posts (אלא אם כן יש <10 דפים בסה"כ).
4.3 מקור חלופי: PDF / Word / Text
| סוג | טיפול |
|---|---|
| PyMuPDF / pdfplumber → טקסט גולמי → אותו pipeline כמו scraped pages | |
| DOCX | python-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)
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 |
5.2 התהליך המלא
מ-PDF/Word: Claude Opus 4.7 (vision) → markdown נקי.
מטקסט: השארה כפי שהוא.
פלט:
{ business_name, description, services[], hours, contact, faqs[], pricing? }structured output mode כדי שלא יחזיר טקסט חופשי.
פלט: system_prompt טקסט מוכן ב-עברית/אנגלית/ערבית/רוסית (לפי בחירה).
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 (קיים)
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)
6.2 מה צריך להוסיף כדי שזה יעבוד multi-tenant
- Tenant resolver בכל webhook — לזהות איזה tenant לפי המספר שמתקשרים אליו.
- Per-tenant config loader — system_prompt + voice + tools + business_hours מ-DB.
- Tool registry — כל tenant יכול להפעיל/לבטל כלים (book_appointment, send_sms, ...).
- Call recording ל-S3/R2 פר tenant (עם הסכמה ברורה לחוק הפרטיות).
- 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. ארכיטקטורה כוללת
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) | Vercel | SSG/ISR, CDN, יומן הקצאות גמיש |
| Tenant Dashboard (React/Vite) | Cloudflare Pages | זול, מהיר, אין vendor lock-in |
| Voice/Onboarding services | Fly.io או Railway | קרוב גיאוגרפית ל-Twilio EU. תמיכה ב-WebSocket persistent. |
| PostgreSQL | Neon / Supabase | Serverless Postgres. RLS multi-tenant מובנה. |
| Redis | Upstash | Serverless. Pay-per-request. |
| Files | Cloudflare 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
| AgenTeam | Voice Center | |
|---|---|---|
| מרכז המודל | Agent → Lead → Calls | Contact → 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 זרימת רכישה
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 (תוספת דקות / הודעות)
בסוף החודש, אם הלקוח חרג ממכסת הדקות או הודעות:
- חישוב tax:
extra_minutes × ₪2 + extra_sms × ₪0.20 - חיוב נפרד דרך Tranzila עם אותו token
- חשבונית דיגיטלית דרך Green Invoice / iCount
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 | תפקיד |
|---|---|
/dashboard | KPIs: שיחות החודש, המרות, צריכת דקות, פגישות שנקבעו |
/dashboard/onboarding | Wizard 12 שלבי URL→Agent (טאב 3) |
/dashboard/agents | רשימת הסוכנים |
/dashboard/agents/[id] | עריכת agent — system_prompt + voice + tools |
/dashboard/agents/[id]/test | WebRTC live test לדפדפן |
/dashboard/agents/[id]/refresh | "רענן מהאתר" — סקרייפ מחדש |
/dashboard/conversations | היסטוריית שיחות חוצת-ערוצים |
/dashboard/conversations/[id] | שיחה בודדת: תמלול, audio player, פעולות שבוצעו |
/dashboard/contacts | CRM פנימי |
/dashboard/campaigns | קמפיינים יוצאים |
/dashboard/integrations | חיבור CRM/Calendar/Webhooks |
/dashboard/billing | חבילה, חשבוניות, צריכה |
/dashboard/api-keys | ניהול מפתחות API |
/dashboard/settings | פרופיל, צוות, אבטחה |
10.3 דף בית — סקציות מומלצות
- Hero — H1 ("השלוחה הדיגיטלית שלא תפסיק לעבוד") + Lost Revenue Calculator interactive
- 3 מוצרים — מזכירה / הודעות / מכירות
- "דבר עם הסוכן עכשיו" — WebRTC button → demo session
- How it works (URL→Agent) — אנימציה 4 שלבים
- פלייבוקים לפי תעשייה — 6 כרטיסים גדולים עם דוגמאות
- Social proof — לוגואים + ציטוטים + 3 הקלטות אמיתיות
- Pricing teaser — 3 חבילות + Trial
- FAQ — 10+ שאלות, לא 3 כמו AgenTeam
- 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
| חבילה | AgenTeam | Voice 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
- דקות נוספות: ₪2 לדקה (פחות מ-₪3.3 שלהם)
- SMS נוסף: ₪0.20 (עברית UCS-2)
- WhatsApp נוסף: ₪0.10
- מספר נוסף: ₪29/חודש
11.3 הנחות
- שנתי → 20% הנחה (חודשיים חינם)
- סוכנויות → 30% הנחה ב-Scale ומעלה, white-label אופציונלי
- הפניות → חודש חינם פר הפניה מוצלחת
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 רולים במקביל
חוזי API משותפים (כל הצוותים מסכימים מראש)
- Database schema — מוגדר ב-OpenAPI/SQL לפני שמתחילים. מצורף ב-טאב 8.
- Auth tokens — JWT עם tenant_id + user_id. אותו פורמט בכל מקום.
- Webhooks ל-CRM — JSON envelope קבוע:
{event, tenant_id, timestamp, payload} - Tenant config endpoint —
GET /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 generation | Claude 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 primary | xAI Grok Voice (אומת בעברית) |
| Voice realtime fallback | OpenAI Realtime (אם Grok חורק או downtime) |
| RAG | אין. הכל ב-system_prompt. אם לקוח Enterprise יבקש — בנייה ידנית ע"י המתכנת. |
| Firecrawl | OK להתחיל עם חינמי (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 (לא ממותג של הלקוח).