מקרה בוחן · פינטק / פנסיה · 2025

כל החיסכון הפנסיוני של אדם במסך אחד, ב־⁠8 ימים

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

React 19TypeScriptVite 7Tailwind CSS 4Redux ToolkitNestJS 11JWT / PassportSwaggerTypeORM / SQL Server
לקוח
מיזם פינטק ישראלי בשלב מוקדם, פנסיה וחיסכון לצרכן (חסוי)
התפקיד שלי
ראש צוות, ארכיטקט ומפתח בפועל
שלב · לוח זמנים
POC לחיץ · 29 ביולי – 5 באוגוסט 2025
סטטוס
אב־טיפוס
במבט אחד
684 עד 3נקודות מידע בתשובה אחת של המסלקה, שמתכנסות ל־⁠3 כרטיסי סיכום
48 עד 9שדות (בערך) לכל פוליסה, שממופים למודל טיפוסי של 9 שדות
45 עד 1דקות, בהערכה גסה, עד שחוסך רואה את כל הפוליסות שלו במקום אחד
8 ימיםמהקומיט הראשון ועד זרימה עובדת ומוכנה לדמו, ב־⁠2 ריפוזיטוריז
0פרטי גישה למסלקה בדפדפן. המפתח נשמר רק בשרת
4נקודות קצה ב־⁠API, מוגנות ב־⁠JWT ומתועדות ב־⁠Swagger
הבעיה

המידע קיים, אבל אף אחד לא מצליח לקרוא אותו

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

מה בניתי

מסלול קצר ובטוח מהנתון הגולמי לתשובה ברורה

  • תכננתי את הארכיטקטורה והקמתי את שני הריפוזיטוריז: אפליקציית React ו־⁠API ב־⁠NestJS.
  • בניתי את שכבת ה־⁠API: כניסה עם JWT, מודול מסלקה לבקשת נתונים, סטטוס עסקה ושליפת פוליסות, ותיעוד Swagger בכתובת אחת.
  • כתבתי את הממפה שהופך כ־⁠48 שדות עבריים בכל פוליסה ל־⁠9 שדות טיפוסיים, ומסווג מוצרים לטווח קצר ולטווח ארוך.
  • בניתי לפי העיצוב את הזרימה במובייל מימין לשמאל: כניסה, טופס הסכמה של 7 שדות (3 חובה, ת״ז של 9 ספרות), ודשבורד עם תשואה משוקללת לפי יתרה לכל טווח.
  • כל build עובר lint ובדיקת טיפוסים, וניקיתי קוד שלא היה בשימוש לפני הדמו.
ארכיטקטורה

הדפדפן אף פעם לא מדבר ישירות עם המסלקה

התרשים רחב מהמסך: החליקו הצידה לצפייה בכולו →

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

החלטות תכנון

הסודות נשארים בשרת, והבלגן נשאר בקובץ אחד

API דק מול המסלקה

מפתח המסלקה ובקשת המידע האישי לא מגיעים לדפדפן אף פעם. שכבת NestJS מוסיפה הזדהות JWT, CORS ותיעוד Swagger, כך שהפרונט וכל אפליקציית מובייל עתידית חולקים חוזה אחד מתועד. המחיר: עוד שירות להריץ, וזה זול בהרבה מדליפה של פרטי גישה לשירות מפוקח.

ממפה שמבודד את המבנה החיצוני

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

דמו על תשובה מוקלטת, מחווט לנתונים חיים

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

מספרים משוקללים במקום גרפים

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

יומן הנדסי

מה הנתונים ניסו לשבור

גם ב־⁠POC של שבוע יש בעיות אמיתיות. רובן הגיעו מהמבנה של הנתונים.

30 ביולי

ה־⁠guard לא מצא את שירות הטוקנים

ה־⁠guard של JWT בנתיבי המסלקה נכשל בעלייה: שירות הטוקנים נרשם במודול ההזדהות אבל לא היה זמין לשאר האפליקציה.

ייצאתי את מודול ה־⁠JWT ממודול ההזדהות, כך שכל נתיב מוגן משתמש באותה תצורה (טוקן לשעה).

5 באוגוסט

אותו שדה, שני מבנים

פירוט מסלולי ההשקעה חזר כרשימה ב־⁠2 מתוך 3 פוליסות הדוגמה וכאובייקט יחיד בשלישית. קוד שמניח רשימה היה קורס על לקוח אמיתי.

הממפה מנרמל את שני המבנים לפני שהוא קורא את התשואה נטו של המסלול.

5 באוגוסט

מספרים שהם בעצם מחרוזות

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

מסלול פענוח אחד לכל סכום ותאריך, עם ברירת מחדל בטוחה של אפס, כך ששדה חסר מוצג כ־⁠₪0 ולא כ־⁠NaN.

4 באוגוסט

ממוצע שמחמיא לתיק

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

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

5 באוגוסט

”נכון למתי?”

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

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

5 באוגוסט

מוכן לדמו, לא רק עובד

אזהרות lint ושאריות של תבניות הצטברו בשבוע מהיר.

תיקנתי את כל אזהרות ה־⁠lint, הסרתי קוד שלא בשימוש, וה־⁠build של פרודקשן נכשל עכשיו על כל שגיאת lint או טיפוסים.

נסו בעצמכם

למה התשואה בכותרת משוקללת

תיק סינתטי של שלוש פוליסות (בלי נתוני לקוח). החליפו בין שתי הדרכים לחשב את התשואה בכותרת.

תוצאה

איפה זה נחת

  • לפני: תשובה מוסדית של 684 ערכים. אחרי: מסך אחד עם סך החיסכון, הסכום הנזיל ותשואה משוקללת, ועוד כרטיסים לטווח קצר ולטווח ארוך.
  • לפני: כניסה לאתר של כל גוף (כ־⁠45 דקות, הערכה). אחרי: טופס הסכמה אחד ודשבורד אחד (כדקה, הערכה).
  • לפני: אין שרת. אחרי: 4 נקודות קצה מתועדות ומוגנות ב־⁠JWT, ומפתח המסלקה לא מגיע ללקוח.
  • זרימה לחיצה במסגרת מובייל של 390px, מימין לשמאל ולפי העיצוב, ב־⁠8 ימים קלנדריים.
  • ניווט של 5 לשוניות שכבר מוכן לרודמפ: דליים, המלצות, עוזר אישי, פעולות וחדשות.
  • הצעדים הבאים ברורים: גישה חיה למסלקה עם הסכמה חתומה, משתמשים ב־⁠SQL Server, ולשונית העוזר האישי מבוסס AI.
טכנולוגיות

טכנולוגיות

פרונט
React 19, TypeScript, Vite 7, Tailwind CSS 4, SCSS, React Router 7
State ונתונים
Redux Toolkit, Axios, thunks טיפוסיים, ממפה נתונים
API
NestJS 11, Passport JWT, class-validator, Swagger / OpenAPI
אחסון
SQL Server דרך TypeORM (תשתית מוכנה)
אינטגרציה
REST API של המסלקה הפנסיונית
איכות
ESLint ו־⁠TypeScript בכל build, Jest, Prettier

שיחת אבחון חינם · 30 דקות · ללא התחייבות

הביאו תהליך אחד. קבלו תוכנית ומספר לשפר.

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

לשיחת אבחון חינםafif.mansour@gmail.com

נפתח מייל מוכן מראש · מענה תוך יום עסקים

ה־AI קורא. הקוד סופר.

כל הפרויקטים