דוח רווח והפסד אוטומטי ברמת סניף

5 מקורות11,000+ תנועותדוח חודשי ברמת סניף

הבעיה

המידע הכספי של העסק היה מפוזר בין חמישה מקורות, כל אחד בפורמט אחר: מערכת ניהול המועדון עם API משלה, דפי חשבון בנק באקסל, פירוטי כרטיסי אשראי, קבלות והוראות קבע בקבצי CSV, והוצאות שנוהלו ידנית. אף מקור לא מדבר עם השני, וריכוז ידני של הכל הוא עבודה של ימים. התוצאה: שאלות בסיסיות כמו “כמה העסק מרוויח החודש”, “כמה הוא מוציא” או “כמה מנויים יש מכל סוג” נשארו בלי תשובה מסודרת.

מה נבנה

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

שכבת הדאטה

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

data/
  raw/        14 files, 3 formats: xlsx + csv + json
  base/       clean, standardized CSVs
  enriched/   cross-joined tables
  outputs/    truth tables: revenue / expenses / other income
  p-l/        P&L layers 01-07 + Hebrew Excel workbook

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

ריפוזיטורי שבנוי לעבודה עם AI

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

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

כך זה נראה בפועל. הבעלים מבקש את הוצאות יוני, וה-skill קודם כל שואל, לפי ה-workflow שהוגדר מראש, באיזה בסיס להציג את ההוצאות ובאיזו רמת תצוגה:

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

שאלת ההבהרה השנייה של ה-skill: איזו רמת תצוגה, טבלה בלבד או כולל גרפים

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

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

(הסכומים בצילום טושטשו. גם זה חלק מהעבודה: כספים של לקוח לא מוצגים בפומבי.)

מה השתנה בעסק

החלטות טכניות, והלמה שמאחוריהן

הסטאק

טעימה טכנית: איך skill של דוח בנוי

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

expense-report/
  SKILL.md             when to use it, the workflow, verification steps
  references/
    report-scope.md    what the report covers, and what it does not
  evals/
    cases.md           test cases
  scripts/
    build_report.py    the deterministic build script the agent runs

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

קטע מהגדרת ה-skill של דוח ההכנסות (המקור באנגלית):

## Purpose

Build one shareable, self-contained HTML file that presents the
business's operating revenue in Hebrew — the 5 revenue streams,
each expandable into its top products, with a period selector and
a branch toggle. It is a pure presenter of the pipeline's
already-computed revenue CSVs: no recomputation, so the numbers
match the P&L by construction.

## Do Not Use When

- The user wants expenses — use the expense-report skill.
- The user asks about prepaid / unearned money — use the
  deferred-revenue-report skill.

שווה לשים לב לחלק של ה-”Do Not Use When”: כל skill יודע להגיד גם מתי הוא הכלי הלא נכון, ולאן להפנות במקום. בדוחות כספיים, גבול כתוב שווה יותר מתשובה מרשימה.