ENGINEERING CASE STUDY · COMPUTER VISION PIPELINE

מגרש AI: מצלמים רכב בטלפון,
מקבלים זיהוי ומלאי תוך 9 שניות.

תיעוד טכני של מערכת vision מקצה-לקצה על תשתית עצמית: דף מצלמה בדפדפן, זיהוי דגם עם Claude Vision, הצלבה מול מסד מלאי של 170 רכבים, ודשבורד ניהול עם הוספה ומחיקה - הכל כ-workflow יחיד ב-n8n, בלי backend נפרד ובלי אפליקציה.

~9sמצילום לתשובה
170רכבים במסד המלאי
24צמתים ב-workflow
0שרתים בענן
Mobile Flow

הזרימה בטלפון: מצלמה → תשובה

אין אפליקציה להתקין. דף web שמוגש מ-n8n עצמו: <input capture="environment"> פותח את מצלמת הטלפון ישירות, התמונה מוקטנת בצד הלקוח ל-1280px (canvas) כדי לחסוך רוחב פס וטוקנים, ונשלחת כ-base64 ל-webhook. התוצאה חוזרת כ-JSON ומרונדרת באותו דף.

מסך הפתיחה של הסורק

// נקודת הכניסה - כפתור אחד

תוצאת סריקה: צ'רי טיגו 8 פרו, 95%, 5 התאמות במלאי

// סריקה אמיתית: צ'רי טיגו 8 פרו, ביטחון 95%, 5 יחידות במלאי

The Pipeline

ה-workflow: סריקה, מלאי וניהול במערכת אחת

קנבס ה-workflow: מסלולי הסורק, הדשבורד, האדמין ופעולות המלאי { } source

// 24 צמתים, 5 נקודות כניסה: סורק, API סריקה, דשבורד מלאי, אדמין, ופעולות מוגנות · לחיצה על התמונה פותחת את ה-JSON (ללא credentials) - ניתן לייבוא ישיר ל-n8n

Camera page → POST base64 → Data Table catalog → Claude Vision (temp 0) → identify → catalog_match → fuzzy match → JSON → render
01 · CAPTUREדף מצלמה server-renderedמוגש מ-webhook. הקטנת תמונה בצד לקוח: canvas.toDataURL('image/jpeg', 0.82), מקסימום 1280px.
02 · CONTEXTקטלוג לפני זיהוישליפת המלאי מ-Data Table ובניית רשימת יצרן|דגם ייחודית שמוזרקת לפרומפט - כדי שההתאמה תחזור בכתיב המדויק של המסד.
03 · VISIONClaude Visionקריאת HTTP ישירה ל-api.anthropic.com עם התמונה כ-base64 ו-temperature: 0 לזיהוי עקבי. פלט JSON כפוי.
04 · MATCHהצלבה דו-שלביתזיהוי אמיתי קודם, התאמת קטלוג אחר כך (ראו הלקח למטה). Fallback ל-fuzzy matching עם נרמול כתיב עברי.
05 · INVENTORYדשבורד + אדמיןדף מלאי ציבורי עם חיפוש חי ו-QR לסורק; דף אדמין מוגן מפתח עם הוספה ומחיקה דרך endpoint מאומת.
06 · DATAn8n Data Table170 רכבים, 8 עמודות. הוספה בכמות: insert עם מערך שורות. בלי DB חיצוני.
Prompt Engineering Lesson

הלקח: צ'רי שזוהתה כ-MG

🐛 הבאג שלימד הכי הרבה

בגרסה הראשונה הפרומפט ביקש "זהה את הרכב והתאם לכתיב מהקטלוג". תוצאה: צ'רי טיגו 8 - שלא הייתה בקטלוג - זוהתה בביטחון 95% כ-MG HS, כי לשתיהן סורג יהלומים והמודל "נדחף" לבחור משהו מהרשימה שקיבל. ה-confidence הגבוה הוא החלק המסוכן: המערכת טעתה בביטחון מלא.

// v1 - זיהוי והתאמה במשימה אחת "התאם את make ו-model לערכים מהקטלוג" { "make": "MG", "model": "HS", "confidence": 95 } // שגוי ובטוח
// v2 - שני שלבים מופרדים בפרומפט "שלב 1: זהה באמת, בלי רשימה. שלב 2: catalog_match רק אם קיים - אסור לעגל. אחרת null" { "make": "צ'רי", "model": "Tiggo 8 Pro", "confidence": 95, "catalog_match": { "צ׳רי | טיגו 8 פרו" } }

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

Inventory Ops

ניהול מלאי: דשבורד, חיפוש, הוספה ומחיקה

המלאי מנוהל מדף אחד: סטטיסטיקות חיות, חיפוש חופשי בצד לקוח, ו-QR מוטמע שפותח את הסורק בטלפון. גרסת האדמין (מוגנת במפתח) מוסיפה טופס הוספת רכב וכפתור מחיקה לכל שורה - שניהם פוגעים ב-endpoint אחד מאומת (POST /car-action) שמנתב בין insert ל-deleteRows.

דשבורד המלאי: סטטיסטיקות, חיפוש, טבלת 170 רכבים ו-QR לסורק

// הדשבורד הציבורי - קריאה בלבד, עם ה-QR שפותח את הסורק

דף האדמין: טופס הוספת רכב ומחיקה לכל שורה

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

Ops

תפעול

מערכת שנייה על אותה תשתית. אותו שרת n8n שמריץ את סוכן הלידים - התוספת השולית של מוצר חדש: workflow אחד ו-Data Table אחד.
אבטחת פעולות כתיבה. הסורק והדשבורד ציבוריים by design; הוספה ומחיקה דורשות מפתח שנבדק ב-IF בצד השרת ומחזיר 403 בלעדיו.
עלות לסריקה: סנטים. קריאת vision בודדת לכל צילום. ההקטנה בצד הלקוח שומרת את התמונה בטווח טוקנים זול.
נבנה בערב אחד. כולל מסד 170 הרכבים, שני הדשבורדים, תיקון באג הזיהוי ואימות מקצה-לקצה עם תמונות אמיתיות.
orchestration · n8n 2.31.6 self-hosted · single workflow, 5 entrypoints
vision · Claude Sonnet vision via HTTP · temperature 0 · forced JSON contract
frontend · server-rendered HTML/JS from webhooks · zero frameworks, zero build
data · n8n Data Table · 170 rows · batch insert API
network · Tailscale Funnel · public TLS · zero open ports

נסו בעצמכם - מהטלפון

סרקו את הקוד, צלמו רכב ברחוב, וראו את הזיהוי וההצלבה למלאי בזמן אמת.

QR לפתיחת הסורק