איך בונים ניטור מכרזים ציבוריים שמודד כיסוי והשהיה במקום להבטיח שכלום לא יוחמץ, מה data.gov.il באמת מחזיק, ולמה שלב סקירה אנושי הוא חלק מהתכנון ולא כישלון.
עיקרי הדברים
- "לא יוחמץ אף מכרז" היא הבטחה שאי אפשר לאמת, כי אין רשימה מוסכמת של אוכלוסיית המכרזים שאליה משווים.
- מה שכן ניתן להצהיר עליו הוא רשימת מקורות מפורשת: כל מקור, אופן העדכון שלו, וההשהיה הצפויה ממנו.
- הקטלוג הפתוח data.gov.il מחזיק דוח מכרזים רטרוספקטיבי של מינהל הרכש הממשלתי - 14,205 רשומות, עדכון אחרון פברואר 2021. הוא מקור מחקר, לא הזנה חיה.
- סינון צר מדי הוא הדרך המעשית להחמיץ מכרז. עדיף להעדיף היזכרות על פני דיוק, ולתת לאדם לסנן את העודף.
- ניטור שאיש אינו מודד את חיוּתו מת בשקט. מונה פריטים לכל מקור בכל ריצה, והתראה על אפס, הם חלק מהמערכת.
ניטור מכרזים אוסף פרסומים ממקורות שהגדרתם, מסנן לפי תחום ומתריע. הוא אינו יכול להבטיח שלא יוחמץ מכרז, כי אף גורם אינו מחזיק רשימה סגורה של כל הגופים המפרסמים בישראל. לכן מתכננים אותו סביב שלושה דברים נמדדים: כיסוי, השהיה, ושלב סקירה אנושי.
למה "לא יוחמץ אף מכרז" אינה הבטחה שניתן לעמוד בה
כדי להוכיח שלא הוחמץ מכרז צריך להשוות את מה שנאסף מול רשימה מלאה של מה שפורסם. הרשימה הזו אינה קיימת בידי גורם יחיד: מפרסמים משרדי ממשלה ויחידות סמך, חברות ממשלתיות, רשויות מקומיות, תאגידי מים, בתי חולים, מוסדות להשכלה גבוהה וגופים נוספים, כל אחד בערוץ משלו ובקצב משלו.
מה שכן אפשר להצהיר עליו הוא הצהרה מדידה: "המערכת בודקת את אחד-עשר המקורות הבאים כל שעה, והחציון בין מועד הפרסום שהמקור מציין לבין ההתראה אצלכם הוא ארבעים דקות". זו טענה שאפשר לבדוק בדיעבד אם היא נכונה, ולכן היא שווה משהו. ההבטחה הגורפת אינה ניתנת לבדיקה, ולכן היא רק מעבירה אחריות אליכם ברגע שמכרז אחד נופל בין שני פורטלים.
ההבחנה הזו אינה סמנטית. היא קובעת את התכנון: מערכת שמתיימרת לשלמות אינה בונה תור סקירה אנושי, ומערכת שיודעת שהיא חלקית - בונה.
מה בעצם רשימת המקורות שלכם?
לפני שורת קוד אחת, כתבו טבלה שבה כל שורה היא גוף מפרסם אחד. בלי המסמך הזה אין לפרויקט גבול, ואי אפשר לומר מה הוא אינו מכסה. לכל מקור רשמו:
- שם הגוף המפרסם וכתובת העמוד או ההזנה שממנה נקרא בפועל.
- אופן העדכון: הזנת RSS, ממשק מתועד, קובץ להורדה, או עמוד שמתעדכן בלי מנגנון הודעה.
- תדירות הבדיקה שהחלטתם עליה, וההצדקה שלה.
- אילו סוגי הליכים מופיעים שם - מכרז פומבי, פנייה מוקדמת לקבלת מידע, התקשרות בפטור.
- מה ידוע שאינו מופיע שם. זו העמודה שמדלגים עליה, וזו העמודה שתסביר כל החמצה עתידית.
הכלל המעשי: אם לגוף יש הזנה רשמית או ממשק מתועד, זה המסלול. עמוד HTML הוא מה שנותר כשאין. הסדר הזה מפורט בגרידה מול API, והוא חוסך את רוב עלות התחזוקה של הפרויקט עוד לפני שנכתב.
האם data.gov.il הוא הזנה חיה של מכרזים?
לא. קריאת package_search בקטלוג הפתוח מחזירה שישה מאגרים בלבד עבור המונח "מכרזים", והמרכזי שבהם - המאגר tenders, "דוח מכרזים" של מינהל הרכש הממשלתי - מתואר בקטלוג עצמו כדוח מרכז המתפרסם אחת לשנה על התקשרויות משרדי הממשלה ויחידות הסמך.
קריאת datastore_search על המשאב שלו מחזירה 14,205 רשומות, ותאריך העדכון האחרון של המשאב הוא 16 בפברואר 2021. השדות שחוזרים הם: מספר פרסום, שם המשרד, שם יחידה מפרסמת, סוג הליך, מספר הליך, שם הליך, סטטוס, תאריך פרסום, תאריך עדכון, תאריך אחרון להגשת השגות, שעה אחרונה להגשת השגות, שם הסל, שם ספק זוכה, מספר ח"פ ספק, תאריך תחילת תקופת התקשרות, תאריך סיום תקופת התקשרות, ונושאים.
מכאן שתי מסקנות מעשיות. הראשונה: המאגר מצוין לניתוח מי זכה במה ומול איזו יחידה, ולכן הוא מקור מחקר לפני הגשה - אך הוא לא יתריע על מכרז שנפתח היום. השנייה: התאריכים בו הם מחרוזות בפורמט 09.06.2009 ולא ISO, כך שכל השוואת תאריכים דורשת נרמול מפורש לפני שמסננים לפיה. שדה סטטוס מכיל ערכים כמו "סגורה", והוא מה שמאפשר להוציא הליכים שכבר הסתיימו.
הפורטל הממשלתי שבו מתפרסמים ההליכים החיים הוא ערוץ נפרד מהקטלוג הפתוח, וחנות מינהל הרכש הממשלתי היא מערכת נפרדת נוספת. ניטור אמיתי נשען עליהם, ומשתמש בקטלוג הפתוח לרקע בלבד.
מקורות, אופן עדכון והשהיה
| סוג מקור | אופן עדכון | השהיה טיפוסית עד התראה | מה אינו מכוסה |
|---|---|---|---|
| הזנת RSS או Atom של גוף מפרסם | דחיפה, עם חותמת זמן לכל פריט | דקות עד שעה, לפי תדירות המשיכה | גופים שאין להם הזנה כזו |
| ממשק מתועד או קובץ להורדה | מחזורי, בקצב שהגוף קובע | מחזור הפרסום של הגוף | הליכים שמתפרסמים רק בעמוד |
| עמוד רשימה שמתעדכן ללא הודעה | משיכה ובדיקת שינוי אצלכם | תדירות הבדיקה שקבעתם | שינוי במסמך מצורף בלי שינוי בעמוד |
| קטלוג נתונים פתוח | פרסום תקופתי או שנתי | ימים עד שנה | כל מה שטרם דוּוח |
| דיוור של הגוף המפרסם | דואר אלקטרוני, לא מובנה | שעת הדיוור | פרסומים שאינם נכללים ברשימת התפוצה |
הטבלה הזו היא גם מסמך הציפיות מול הלקוח הפנימי. מנהל שראה בה ששורה אחת עובדת בקצב של ימים לא יופתע כשמכרז הגיע אליו דרכה באיחור.
סינון לפי תחום: למה רחב מדי עדיף על צר מדי
מסנן מדויק מדי הוא הסיבה הנפוצה ביותר להחמצה, יותר מכל תקלה טכנית. שם הליך נכתב על ידי אדם ביחידה מפרסמת, בלי מילון מונחים אחיד:
- מילה נרדפת שלא חשבתם עליה - "פיתוח מערכות מידע" מול "שירותי תוכנה" מול "אפיון ובינוי מערכת".
- ראשי תיבות, כתיב מלא וחסר, ורווח או מקף בין מילים.
- מונח לועזי בתעתיק עברי, לצד אותו מונח באותיות לטיניות.
- התחום האמיתי שמופיע רק במסמכי המכרז ולא בשורת הכותרת.
- סיווג "נושאים" שנקבע על ידי המפרסם ואינו תואם לאופן שבו אתם מגדירים את עצמכם.
לכן מסננים בשתי שכבות: שכבה רחבה שמכניסה גם רעש, ואחריה דירוג שממיין את מה שנכנס. פריט שנדחה נשמר עם הכלל שדחה אותו, כי רק כך מגלים שהמסנן חתך משהו שהיה צריך לעבור. אותו עיקרון של מעקב אחרי שינוי בטקסט רשמי מתואר בניטור רגולציה ובקרת שינויים.
שלב הסקירה האנושי ומה הוא מקבל
ההנחה שאדם יסתכל היא חלק מהמערכת, לא הודאה בכישלון. תקציר יומי אחד בשעה קבועה עובד טוב יותר מהתראה לכל פריט, כי הוא נקרא בפועל. פריט בתקציר צריך להכיל את המינימום שמאפשר החלטה של חמש שניות: הגוף המפרסם, שם ההליך, סוג ההליך, מועד ההגשה, קישור למקור, והסיבה שהמערכת סברה שזה רלוונטי.
הצעד שנשכח הוא לוג ההחלטה: מי סימן "רלוונטי", מי סימן "לא", ומתי. אחרי חודשיים זה הופך לחומר הכיול של המסננים, וזה ההבדל בין מערכת שמשתפרת לבין רשימת תפוצה.
מה מודדים כדי לדעת שהניטור חי
- מספר הפריטים שנקראו בכל מקור בכל ריצה, נשמר כסדרה לאורך זמן.
- התראה כאשר מקור מחזיר אפס פריטים בזמן שהממוצע שלו גבוה מאפס - זה כמעט תמיד שינוי במקור ולא שקט בשוק.
- הפרש הזמן בין תאריך הפרסום שהמקור מציין לבין רגע ההתראה, כחציון וכאחוזון תשעים.
- שיעור הפריטים שסומנו רלוונטיים מתוך מה שעבר את המסנן, בפילוח לפי מקור.
- מספר הריצות שנכשלו לגמרי, ומועד הריצה המוצלחת האחרונה לכל מקור.
- דגימה ידנית תקופתית: פותחים את המקור בדפדפן ומשווים לחמשת הפריטים האחרונים שנקלטו.
הסיבות ששינוי במקור שובר קורא כזה מפורטות בלמה גרידה נשברת ומה כוללת תחזוקה. בניטור מכרזים העלות של שבירה שקטה גבוהה במיוחד, כי היעדר התראות נראה בדיוק כמו שבוע בלי מכרזים מתאימים.
מה ניטור מכרזים אוטומטי עושה
- עוקב אחרי המקורות שחשובים לכם לפי לוח זמנים.
- מסנן לפי מילת מפתח, קטגוריה, אזור ותקציב כך שרואים רק מה שמתאים.
- מתריע במייל או הודעה ברגע שמתפרסם מכרז תואם.
- מתעד הכל לגיליון או דשבורד עם מועד ההגשה והקישור - שלא יפספסו.
כמה זה עולה
ניטור מכרזים הוא שירות חוזר - ריטיינר חודשי שמשאיר אותו רץ ומכוונן את הסינון ככל שהעסק משתנה. לטווחים ראו כמה עולה שירות סקרייפינג. ספרו לי את המקורות ואת מילות המפתח שחשובות לכם, ואקים את המעקב.
מקורות
שאלות נפוצות
האם אפשר להתחייב שהמערכת לא תחמיץ מכרז?
לא, ואין דרך לאמת התחייבות כזו, כי אין רשימה מלאה של כל הפרסומים בישראל שאליה אפשר להשוות. מה שכן מתחייבים אליו הוא רשימת מקורות מפורשת, תדירות בדיקה מוגדרת, והשהיה חציונית נמדדת. אלה שלושה מספרים שניתן לבדוק בדיעבד.
מה בכל זאת שימושי במאגר המכרזים של data.gov.il?
הוא מחזיק 14,205 רשומות עם שם המשרד, סוג ההליך, שם ספק זוכה, מספר ח"פ שלו ותקופת ההתקשרות. זה מאפשר לבדוק מי זוכה שוב ושוב באילו נושאים ומול אילו יחידות, כרקע לפני הגשה. הוא אינו מתעדכן בזמן אמת ולכן אינו משמש להתראה.
כל כמה זמן צריך לבדוק כל מקור?
התדירות נגזרת מהמועד האחרון להגשה ולא מהתחושה. אם הליכים בתחומכם נסגרים בתוך שבועיים, בדיקה יומית מספיקה ומשאירה זמן הכנה. אם הם נסגרים בתוך שלושה ימים, תדירות גבוהה יותר מוצדקת. משיכה מהירה ממה שהמקור מתעדכן היא עומס מיותר.
איך יודעים שהמסנן חתך משהו רלוונטי?
שומרים גם את הפריטים שנדחו, יחד עם הכלל שדחה אותם, וקוראים מדגם מהדחיות אחת לחודש. זו הבדיקה היחידה שמגלה מילה נרדפת שלא חשבתם עליה, ובפועל היא מוצאת יותר כשלים אמיתיים מאשר ניטור התקלות הטכניות של הריצה.
אפשר לנטר הודעות מכרז אוטומטית?
כן. סקרייפר עוקב אחרי הפורטלים הרלוונטיים לפי לוח זמנים, מסנן מכרזים שתואמים למילות המפתח והקטגוריות שלכם, ומתריע עם מועד ההגשה והקישור ברגע שמתפרסם מכרז תואם - כך שאתם מגיעים ראשונים.
מותר לנטר מכרזים ציבוריים?
הודעות מכרז הן מידע ציבורי שמתפרסם כדי שעסקים ימצאו אותו, מה שהופך את הניטור לסיכון נמוך מאוד. הרבה פורטלים מציעים גם RSS או API - הדרך הנקייה ביותר, אז תמיד בדקו קודם.
כמה מהר אשמע על מכרז חדש?
מהר כמו לוח הזמנים שלכם - בדרך כלל בתוך שעות מהפרסום - כך שיש לכם מקסימום זמן להכין הצעה במקום לגלות מאוחר.
כמה עולה ניטור מכרזים?
זה שירות חוזר, אז ריטיינר חודשי שמשאיר אותו רץ ומעדכן את הסינון ככל שהעסק משתנה. ראו את מדריך עלויות הסקרייפינג לטווחים.
להמשך קריאה
שירות רלוונטי
אוטומציה לעסקים
אני בונה אוטומציות מותאמות שמורידות עבודה חוזרת מקצה לקצה.
על הכותב
יהונתן סעדיה
מפתח פרילנסר לאוטומציה, אתרים ו-MVP
אני יהונתן סעדיה, מפתח בכיר שבונה אוטומציה עסקית, אתרים מותאמים ומוצרי MVP לעסקים קטנים ובינוניים בארה"ב, אירופה וישראל. המדריכים האלה נכתבים מתוך עבודה אמיתית עם לקוחות, לא מתיאוריה.
בוא נעבוד יחדיש לך פרויקט דומה?
ספר לי מה אתה רוצה לבנות או איזה תהליך להפוך לאוטומטי. אני חוזר תוך 24 שעות עסקים עם כמה שאלות ממוקדות, ואז עוברים על זה יחד בשיחת היכרות חינמית של 30 דקות, בלי התחייבות. בסוף יש לך היקף עבודה, לוח זמנים ומחיר קבוע - או תשובה כנה שלא שווה לבנות את זה.
