מתודולוגיה

איך פרויקט גאמא מחשב ועובד

הדף הזה מסביר את השיטה מאחורי כל מחשבון וכל תשובה בצ׳אט. בלי קופסה שחורה — כל נוסחה, כל מקור, וכל מגבלה נמצאים כאן.

עקרונות יסוד

  1. כל מספר מקושר למקור. אם מחשבון משתמש בשיעור מס, בריבית בסיס או במדד — תופיע ליד התוצאה רשימת "מקורות" עם שם המקור, קישור, ותאריך עדכון. אין מספר על דעת עצמנו.
  2. לוגיקת חישוב מופרדת מממשק. כל מחשבון מבוסס על פונקציה נטו ב-TypeScript ללא תלות בריאקט או בבסיס נתונים. אותה פונקציה רצה גם במחשבון, גם בצ׳אט (ככלי), וגם בייצוא PDF — כך התשובה זהה בכל מקום.
  3. ערכי קלט מוגדרים מראש ומבוקרים. כל קלט עובר ולידציה (Zod schema). אם הזנת ערך שלילי כשמותר רק חיובי, או שכר נמוך משכר מינימום — תקבל אזהרה לפני שהמחשבון "מסתיר" את הבעיה.
  4. המתמטיקה חוזרת על עצמה. אותה הזנה תניב אותה תוצאה מחר, שבוע הבא, ובעוד שנה — כל עוד לא השתנו פרמטרי החוק. שינויי חוק מתועדים עם תאריך תוקף.
  5. שקיפות מגבלות. כל מחשבון מציין מה הוא לא כולל (לדוגמה: זיכויי מס מיוחדים, מצבי משפחה לא סטנדרטיים). זה לא באג — זו דרך לבטא בכנות איפה המחשבון פוגש את הגבולות.

מתודולוגיית המחשבונים

כל מחשבון בנוי משלושה חלקים:

א. קונפיגורציה עם גרסה ומקור

שיעורי מס, מדרגות ביטוח לאומי, תקרות הפקדה לפנסיה — כולם מאוחסנים בקבצי קונפיגורציה עם תאריך תוקף וקישור למקור הרשמי. דוגמה: מדרגות מס הכנסה לשנת 2026 מתוייגות tax_2026 עם קישור לעמוד הרשמי של רשות המסים שמ-ידי-מתי נשאבה הטבלה. כשרשות המסים מעדכנת — מתעדכנת גם הקונפיגורציה, וגרסת המחשבון מתעלת מעלה.

ב. פונקציית חישוב נטו

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

דוגמאות לנוסחאות הליבה (המלאות נמצאות בקוד המקור הפתוח):

  • ברוטו ל-נטו: מס הכנסה מדורג + ביטוח לאומי + מס בריאות, פחות זיכויים, פחות הפקדות פטורות.
  • משכנתא (שפיצר): תשלום חודשי = הקרן × ((r×(1+r)^n) / ((1+r)^n − 1)) כש-r הוא הריבית החודשית ו-n מספר התשלומים.
  • ריבית דריבית: FV = PV × (1 + r/n)^(n·t) + תוספת הפקדות חודשית כאנונה.
  • קרן השתלמות: תקרה פטורה, הטבת מס מעסיק, ויתרון השלמת 6 שנים.

ג. ממשק שמחושב מחדש בזמן אמת

אין כפתור "חשב" — כל שינוי קלט מפעיל חישוב מחדש (עם debounce של 200ms כדי לא להעמיס). התוצאה נראית מיד, וכל הזמן.

ד. הצגת מקורות בכל מחשבון

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

נתונים חיים וסנכרון

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

  • בנק ישראל — ריבית בנק ישראל, ריבית פריים, שערי מטבע, ציפיות אינפלציה.
  • הלשכה המרכזית לסטטיסטיקה — מדד המחירים לצרכן, מדד מחירי הדיור.
  • רשות שוק ההון — תשואות פנסיה וקרנות השתלמות.
  • רשות המסים — מדרגות מס, נקודות זיכוי, תקרות ביטוח לאומי (מתעדכן עם פרסום החוק).

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

הצ׳אט וה-RAG

הצ׳אט בפרויקט גאמא אינו "מודל שפה עם הוראות". הוא מערכת מורכבת יותר שמטרתה אחת: אף תשובה עם מספר לא יוצאת בלי לקרוא לכלי אמיתי או למקור מתועד.

א. ספריית ידע (RAG)

חומרי מקור — מסמכי רגולציה, מדריכי רשויות, מאמרים פנימיים — מתוחזקים בספרייה בשם knowledge sources. כל מקור מחולק ל-chunks של כ-600 טוקנים עם חפיפה קלה, וכל chunk מקבל embedding וקטורי באמצעות מודל embedding רב-לשוני (1536 ממדים). חיפוש סמנטי על pgvector מחזיר את הקטעים הרלוונטיים ביותר לשאלה.

ב. כלים (Tools) במקום הזיה

למודל יש גישה לכלים מוגדרים: כל מחשבון רשום ככלי, וכל סדרת נתונים חיה רשומה ככלי. כשהמשתמש שואל "כמה אצא נטו ממשכורת של 18,000?" — המודל לא מנחש; הוא קורא לכלי net_salary עם הפרמטרים, מקבל תוצאה מובנית עם מקורות, ומציג אותה.

ג. אכיפת ציטוטים

כל תשובה שמכילה ערך מספרי (אחוז, סכום בשקלים, תאריך) חייבת לכלול לפחות מקור אחד: או כלי חישוב, או chunk מספריית הידע. תשובות בלי מקורות מסומנות ונחסמות לפני שליחה.

ד. מה הצ׳אט יסרב לעשות

  • לא יחווה דעה על מניה ספציפית או על קרן ספציפית.
  • לא ייתן המלצה לפעולה ("קחו משכנתא X", "תעברו לקרן Y").
  • לא ינבא ריבית עתידית או תשואת שוק.
  • בשאלות שדורשות ייעוץ מורשה — יסביר ויפנה ליועץ מורשה.

ה. שמירה ופרטיות

שיחות נשמרות לחשבון המשתמש בלבד, מאחורי RLS בבסיס הנתונים. תוכן השיחה לא משמש לאימון מודלים חיצוניים. ראו פירוט מלא במדיניות הפרטיות.

גרסאות ותאריכים

לכל מחשבון יש "תקף ל-" — שנת מס או תאריך תוקף של הקונפיגורציה. עדכוני חקיקה (לדוגמה: עדכון מדרגות מס לשנה חדשה) מבוצעים ככניסה חדשה בקובץ הקונפיגורציה, לא כדריסה — כך אפשר להריץ תרחישים גם בשנים קודמות.

לסדרות נתונים חיות, מוצג תמיד תאריך התצפית האחרונה מהמקור (ולא תאריך הסנכרון אצלנו).

מה לא נכלל

המחשבונים והצ׳אט מטפלים בתרחישים סטנדרטיים בלבד. הם לא מכסים:

  • זיכויי מס מיוחדים: עולים חדשים, תושבי פריפריה (סעיף 11), נכויות, ועוד.
  • הכנסות מחו״ל, מטבע זר, או מקור הכנסה לא-שכיר במקביל.
  • חישובי מס למיזוגים, אופציות לעובדים (102), והסדרי שכר מורכבים.
  • תכנון פנסיוני אישי שלוקח בחשבון חיסכון קיים, ביטוחים, וקופות גמל.
  • החלטת השקעה: בחירת מניה / קרן / בנק / חברת ביטוח.

בכל אחד מהמקרים האלה — המחשבון יספק קירוב טוב, אבל לא תחליף לייעוץ מקצועי.

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