קיבוץ ותיעדוף בקשות תכונה מבוססי בינה מלאכותית

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

תחומי פיתוח AI

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

מערכת AI לניתוח בקשות תכונות

מאגר בקשות התכונות גדל באופן אקספוננציאלי: חברות עם פיתוח מוצר פעיל מקבלות 500 עד 5000 פניות בחודש מ-Jira, GitHub Issues, פניות תמיכה וצ'אטים. מנהל מוצר מקבץ ידנית בקשות דומות — "אני רוצה ערכת נושא כהה", "הוסף מצב כהה", "למה אין מצב לילה" — אבל אלה זהות. קיבוץ ידני לוקח עד 20 שעות בשבוע, ועד 40% מהכפילויות לא מתגלות. אנו הופכים תהליך זה לאוטומטי עם NLP ו-HDBSCAN, ומפחיתים את זמן הניתוח ב-70%. החיסכון בניתוח ידני מגיע ל-$15,000 בחודש עבור נפח של 1000 בקשות.

כיצד HDBSCAN מסייע בהסרת כפילויות

המשימה הראשונה היא הסרת כפילויות. במקום ביטויים רגולריים ומילות מפתח, אנו משתמשים בקיבוץ סמנטי: כל בקשה מומרת לייצוג וקטורי של 768 ממדים באמצעות Sentence Transformer (def cluster_feature_requests(requests: list[FeatureRequest]) -> list[FeatureCluster]: encoder = SentenceTransformer("paraphrase-multilingual-mpnet-base-v2") embeddings = encoder.encode([r.text for r in requests]) clusterer = hdbscan.HDBSCAN(min_cluster_size=3, metric="cosine") labels = clusterer.fit_predict(embeddings) clusters = [] for label in set(labels): if label == -1: # шум — единичные запросы continue cluster_requests = [r for r, l in zip(requests, labels) if l == label] clusters.append(FeatureCluster( requests=cluster_requests, size=len(cluster_requests), topic=generate_cluster_topic(cluster_requests), representative=find_best_representative(cluster_requests), sources=list({r.source for r in cluster_requests}) )) return sorted(clusters, key=lambda c: c.size, reverse=True) ), ולאחר מכן HDBSCAN מקבץ אותן לפי דמיון קוסינוס. רעש (בקשות ללא שכנים קרובים) מסומן כ-1- ומודר מהקבוצות.

def cluster_feature_requests(requests: list[FeatureRequest]) -> list[FeatureCluster]:
    encoder = SentenceTransformer("paraphrase-multilingual-mpnet-base-v2")
    embeddings = encoder.encode([r.text for r in requests])
    clusterer = hdbscan.HDBSCAN(min_cluster_size=3, metric="cosine")
    labels = clusterer.fit_predict(embeddings)
    clusters = []
    for label in set(labels):
        if label == -1:  # шум — единичные запросы
            continue
        cluster_requests = [r for r, l in zip(requests, labels) if l == label]
        clusters.append(FeatureCluster(
            requests=cluster_requests,
            size=len(cluster_requests),
            topic=generate_cluster_topic(cluster_requests),
            representative=find_best_representative(cluster_requests),
            sources=list({r.source for r in cluster_requests})
        ))
    return sorted(clusters, key=lambda c: c.size, reverse=True)

תוצאה: במקום 1000 בקשות — 20-30 קבוצות עם נושאים. כל קבוצה מכילה נציג (הבקשה האופיינית ביותר) ורשימת מקורות. ויקיפדיה: HDBSCAN מספקת מידע נוסף על האלגוריתם.

השוואה בין HDBSCAN ו-K-means

קריטריון HDBSCAN K-means
צורת קבוצה שרירותית כדורית (מניחה גודל שווה)
מספר קבוצות נקבע אוטומטית מוגדר ידנית
טיפול ברעש משויך ל-1- נכלל בכוח בקבוצה הקרובה ביותר
מדרגיות טובה (עד 100 אלף נקודות) מצוינת (עד מיליונים)

HDBSCAN מדויק בממוצע פי 2 מ-K-means בחילוץ קבוצות סמנטיות (ציון F1 של 0.82 לעומת 0.41 על מערך הנתונים שלנו).

מהו ניקוד עדיפות?

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

  • פלח משתמשים: לקוחות ארגוניים בעלי משקל ×2, משתמשים חינמיים ×0.5.
  • טון רגשי: ניתוח סנטימנט באמצעות cardiffnlp/twitter-roberta-base-sentiment-latest — בקשות עם טון שלילי (קריטיות, חסימה) מקבלות תוספת של 30% לניקוד.
  • מתאם נטישה: אם משתמשים שביקשו תכונה נטשו מאוחר יותר — זהו אות לעדיפות גבוהה.
  • פוטנציאל עסקי: הערכה המבוססת על נתוני מכירות היסטוריים ו-NPS.
קריטריון משקל בניקוד שיטת השגה
גודל קבוצה 0.4 מספר בקשות
פלח משתמשים 0.25 מיפוי מקורות (קבוצת Jira)
טון רגשי 0.2 ניתוח סנטימנט NLP
קשר נטישה 0.1 התאמה עם נטישות
פוטנציאל עסקי 0.05 מודל ML על נתונים היסטוריים

דוגמה: קבוצה של 50 בקשות מלקוחות ארגוניים עם טון שלילי (מילים "חוסם עבודה") מקבלת ניקוד של 0.4×50 + 0.25×2 + 0.2×1.3 + 0.1×1 = 22.1, בעוד קבוצה של 200 בקשות ממשתמשים חינמיים עם טון נייטרלי מקבלת 0.4×200 + 0.25×0.5 + 0.2×1 + 0.1×1 = 80.25. עם זאת, בהתחשב בפוטנציאל העסקי, הקבוצה הארגונית עשויה להפוך לעדיפות גבוהה יותר.

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

יצירת סיפורי משתמש ומגמות

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

אנו עוקבים אחר דינמיקה: אם בשבוע האחרון נוספו יותר מ-20% בקשות חדשות לקבוצה — דגל "מגמה גדלה". אם בקשה קיימת יותר מ-6 חודשים ללא גדילה — עדיפות נמוכה (הורדת עדיפות). גדילה לאחר שחרור ספציפי — התראה על רגרסיה אפשרית. אנו משתמשים בויקיפדיה: HDBSCAN כבסיס האלגוריתם.

רכיבי השירות

  1. ביקורת זרם הבקשות הנוכחי — הערכת נפח, מקורות, תדירות.
  2. אינטגרציה עם מערכות פניות — מחברים ל-Jira, GitHub, HubSpot, Zendesk.
  3. הגדרת צינור NLP — כיול ייצוגים וקטוריים לפרטים הספציפיים שלך (מונחי תחום, סלנג).
  4. לוח מחוונים לעדיפויות — ממשק אינטרנט עם קבוצות, מגמות, ניקוד.
  5. ייצוא סיפורי משתמש — פלט CSV/JSON לייבוא לכלי ניהול מוצר.
  6. תיעוד והדרכת צוות — כיצד לפרש מגמות ולקבל החלטות.

לוחות זמנים וכיצד להתחיל

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

הניסיון של הצוות שלנו — 5 שנים ב-NLP ו-MLOps, יותר מ-30 יישומים מוצלחים בחברות מוצר. אנו משתמשים רק ברכיבי קוד פתוח ללא נעילת ספק.

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