# מדריך הקמת חברה חדשה — היטלי השבחה (CMPA)

> נוצר: 2026-04-15
> מטרה: תיעוד מפורט של התהליך להקמת קורפוס אימון והגדרת חברה בשתי המערכות

---

## רקע

המערכת שלנו בנויה מ-**2 חברות** (boards) ב-Paperclip, שמייצגות את שני תחומי העבודה העיקריים:

| # | חברה | קוד | Prefix | סוגי תיקים | סטטוס קורפוס |
|---|-------|------|--------|------------|---------------|
| 1 | רישוי ובנייה | CMP | `42a7acd0...` | 1xxx | 24 החלטות אימון, ניתוח סגנון מלא |
| 2 | היטלי השבחה + פיצויים | CMPA | `8639e837...` | 8xxx, 9xxx | **ריק — אין אף החלטת אימון** |

**המצב היום**: חברת CMPA כבר קיימת ב-Paperclip ומופתה בקוד (ניתוב אוטומטי לפי מספר תיק). אבל אין לה **קורפוס אימון** — המערכת לא מכירה את הסגנון של דפנה בהחלטות היטל השבחה ולא יכולה לחפש תקדימים.

**מה שצריך לעשות**: להעלות את ההחלטות, לעבד אותן, ולהריץ ניתוח סגנון — בדיוק כמו שנעשה עם 24 ההחלטות של רישוי ובנייה.

---

## שתי המערכות — הגדרת תפקידים

### מערכת 1: עוזר משפטי (Legal-AI)

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

**מה חי רק במערכת הזו**:

| רכיב | תיאור | טבלת DB |
|-------|--------|---------|
| תיקים (Cases) | מספר תיק, כותרת, סטטוס, צדדים | `cases` |
| מסמכי מקור | כתבי ערר, תגובות, פרוטוקולים (PDF/DOCX) | `documents` + filesystem |
| חלקים סמנטיים (Chunks) | embeddings לחיפוש RAG (Voyage AI, 1024 ממדים) | `document_chunks` + pgvector |
| קורפוס אימון | החלטות קודמות של דפנה — גרסאות מנוקות | `style_corpus` |
| דפוסי סגנון | ביטויי מעבר, נוסחאות פתיחה/סיום, מבנה ניתוח | `style_patterns` |
| בלוקי החלטה | 12 בלוקים (מבנה ההחלטה) + פסקאות | `decision_blocks`, `decision_paragraphs` |
| טענות צדדים | טענות שחולצו מכתבי טענות | `claims` |
| תקדימים (פסיקה) | ספריית case law + embeddings | `case_law`, `case_law_embeddings` |
| חקיקה | סעיפי חוק שאוזכרו | `statutory_provisions` |
| הערות יו"ר | feedback של דפנה על טיוטות | `chair_feedback` |
| לקחים | תובנות שחולצו מ-feedback | `lessons_learned` |
| צ'קליסטים | רשימות בדיקה לבלוק דיון (לפי סוג ערר) | hardcoded ב-`lessons.py` |
| מיפוי חברות | קישור appeal_subtype ← company_id | `tag_company_mappings` |

**שירותי הליבה**:
- **RAG** — חיפוש סמנטי בתקדימים ובמסמכי מקור, מסונן לפי `appeal_subtype`
- **Proofreading** — ניקוי מסמכי נבו מ-artifacts
- **Style Analysis** — ניתוח קורפוס וחילוץ דפוסי כתיבה
- **Decision Drafting** — ייצור טיוטות לפי ארכיטקטורת 12 בלוקים
- **DOCX Export** — מסמך מעוצב מוכן להגשה

---

### מערכת 2: Paperclip

**תפקיד**: מערכת התזמור והסוכנים — מנהלת את תהליך העבודה, מפעילה סוכני AI, ומספקת ממשק Kanban.

**מה חי רק במערכת הזו**:

| רכיב | תיאור | טבלת DB |
|-------|--------|---------|
| חברות (Companies) | CMP (רישוי), CMPA (היטלי השבחה) — boards נפרדים | `companies` |
| פרויקטים | כרטיס Kanban לכל תיק | `projects` |
| Issues | משימות עבודה (CMP-123, CMPA-456) | `issues` |
| תגובות | דיון בין סוכנים ומשתמשים | `issue_comments` |
| סוכנים (Agents) | CEO, Researcher, Writer — Claude Code agents | מערכת agents |
| SOUL.md | הנחיות לכל סוכן | קונפיגורציית agent |
| Skills | workflows לשימוש חוזר (SKILL.md) | `company_skills` + filesystem |
| Plugin state | נתוני plugin (case_number ← issue) | `plugin_state` |

**תפקידי הליבה**:
- **תזמור** — CEO agent מקבל בקשות, מנתב לסוכן המתאים
- **ניהול משימות** — Kanban board עם issues, מעקב סטטוס
- **הפעלת סוכנים** — wakeup mechanism, heartbeat cycle
- **ממשק דיון** — comments על issues (משתמש ← agent ← agent)

---

### תהליכי גומלין — מי מדבר עם מי

```
┌──────────────────────────────────────────────────────────────────────────┐
│                          תהליכי גומלין                                  │
│                                                                          │
│   LEGAL-AI                              PAPERCLIP                        │
│   ════════                              ═════════                        │
│                                                                          │
│   ┌─────────┐   יצירת project+issue     ┌─────────┐                     │
│   │  Cases   │ ─────── DB insert ──────→ │Projects │                     │
│   │         │ ─────── DB insert ──────→ │ Issues  │                     │
│   └─────────┘                            └─────────┘                     │
│                                                                          │
│   ┌─────────┐   wakeup signal            ┌─────────┐                     │
│   │Workflow │ ─────── HTTP POST ───────→ │  CEO    │                     │
│   │ Start   │   (issueId + mutation)     │ Agent   │                     │
│   └─────────┘                            └─────────┘                     │
│                                                                          │
│   ┌─────────┐   קריאת case_number        ┌─────────┐                     │
│   │  Data   │ ←──── plugin_state ──────  │ Plugin  │                     │
│   │ (API)   │ ←──── HTTP GET/POST ─────  │legal-ai │                     │
│   └─────────┘   (תקדימים, טענות, סגנון)  └─────────┘                     │
│                                                                          │
│   ┌─────────┐   skill sync               ┌─────────┐                     │
│   │ Skills  │ ──── DB + filesystem ────→ │company_ │                     │
│   │ (disk)  │                            │ skills  │                     │
│   └─────────┘                            └─────────┘                     │
│                                                                          │
│   ┌─────────┐   שאילתת חברות             ┌─────────┐                     │
│   │Settings │ ←──── DB query ──────────  │companies│                     │
│   │  UI     │                            │  table  │                     │
│   └─────────┘                            └─────────┘                     │
└──────────────────────────────────────────────────────────────────────────┘
```

#### כיוון 1: Legal-AI → Paperclip (יצירה ושליטה)

| פעולה | מנגנון | מתי |
|-------|--------|-----|
| יצירת Project | DB insert ישיר ב-Paperclip | יצירת תיק חדש |
| יצירת Issue | DB insert ישיר ב-Paperclip | יצירת תיק / התחלת workflow |
| קישור case ← issue | DB insert ב-`plugin_state` | יצירת project |
| הערת אימות | DB insert ב-`issue_comments` | אחרי יצירת project |
| הפעלת CEO | **HTTP POST** ל-`/api/agents/{id}/wakeup` | התחלת workflow |
| סנכרון skill | DB insert/update ב-`company_skills` | התקנת/עדכון skill |

#### כיוון 2: Paperclip → Legal-AI (שאילתות וקריאות חזרה)

| פעולה | מנגנון | מתי |
|-------|--------|-----|
| קריאת case_number | plugin קורא `plugin_state` | סוכן מקבל issue |
| שליפת מסמכים | HTTP GET/POST ל-API של legal-ai | סוכן עובד על תיק |
| חיפוש תקדימים | HTTP ל-`/api/precedents/search` | researcher מחפש |
| קריאת style guide | HTTP ל-MCP / API | writer כותב טיוטה |
| רשימת חברות | DB query ישיר מ-`companies` | UI הגדרות |

#### החוליה המקשרת: `plugin_state`

```
plugin_state:
  plugin_id  = "53461b5a..." (marcusgroup.legal-ai)
  scope_kind = "issue"
  scope_id   = "{issue-uuid}"
  state_key  = "legal-case-number"
  value_json = "\"1234\""
```

זו ה"כתובת" שמאפשרת לסוכן Paperclip לדעת איזה תיק ב-Legal-AI שייך ל-issue שהוא עובד עליו.

---

### מצב קיים לכל חברה

#### CMP — רישוי ובנייה (מוכן לעבודה)

**ב-Legal-AI**:
- 24 החלטות אימון בקורפוס
- ניתוח סגנון מלא (דפוסים, ביטויים, יחסי אורך)
- content checklists ל-3 סוגי משנה (substantive, threshold, property)
- RAG פעיל עם chunks + embeddings

**ב-Paperclip**:
- חברה CMP פעילה
- סוכנים מוגדרים ופעילים
- Plugin פעיל
- Skills מותקנים

#### CMPA — היטלי השבחה (דורש הקמה)

**ב-Legal-AI**:
- appeal_subtype `betterment_levy` מוגדר בקוד
- ניתוב אוטומטי (8xxx → CMPA) עובד
- **חסר**: 0 החלטות אימון, 0 style patterns, 0 chunks, אין content checklist

**ב-Paperclip**:
- חברה CMPA קיימת
- **לוודא**: סוכנים מקושרים, plugin פעיל, skills מותקנים

---

## התהליך המלא — צעד אחר צעד

### שלב 1: הכנת הקבצים

**מיקום**: הנח את כל קבצי ה-DOCX בתיקייה נגישה (למשל `~/Downloads/hitlei-hashbacha/`)

**בדיקות מקדימות**:
1. וודא שכל הקבצים בפורמט DOCX או PDF
2. וודא שהשמות כוללים מספר תיק (לצורך metadata)
3. ספור כמה החלטות יש — זה ישפיע על זמן העיבוד

**דגשים**:
- ההחלטות מגיעות מנבו — יש להן watermarks, headers, footnotes שצריך לנקות
- מערכת ה-proofreading שלנו מטפלת בזה אוטומטית

---

### שלב 2: העלאה — 3 נתיבים אפשריים

#### נתיב א: ממשק Web (מומלץ להעלאה המונית)

```
כתובת: https://legal-ai.nautilus.marcusgroup.org
נתיב: /api/training/upload
```

**מה קורה מאחורי הקלעים**:
1. הקובץ נשמר כ-temp file
2. **Proofreading** — ניקוי אוטומטי של תוספות נבו:
   - הסרת watermarks ("ספרות:", "חקיקה שאוזכרה:")
   - הסרת headers/footers של עמודים
   - הסרת קודי נבו inline
   - הסרת URLs וזכויות יוצרים
3. **שמירת גרסה מנוקה** → `data/training/proofread/{filename}.md`
4. **שמירת מקור** → `data/training/{filename}.docx`
5. **הוספה ל-DB** → טבלת `style_corpus` עם metadata
6. **חיתוך לחלקים** → chunks סמנטיים
7. **יצירת embeddings** → Voyage AI → וקטורים 1024 ממדים
8. **שמירה ב-RAG** → טבלת `document_chunks` (עם practice_area + appeal_subtype)

#### נתיב ב: MCP Tool (מ-Claude Code)

```
tool: document_upload_training
params:
  file_path: "/path/to/file.docx"
  decision_number: "ARAR-24-8001"
  decision_date: "2024-06-15"
  subject_categories: ["היטל השבחה"]
  title: "שם ההחלטה"
  practice_area: "appeals_committee"
  appeal_subtype: "betterment_levy"
```

#### נתיב ג: Skill Command (אינטראקטיבי)

```
/upload-training
```
עונים על שאלות: נתיב קובץ, מספר החלטה, תאריך, קטגוריות.

---

### שלב 3: ביקורת (Proofreading QA)

**קריטי**: לפני שממשיכים לניתוח — **לבדוק כל החלטה שהועלתה**.

**מה לבדוק**:
- [ ] הטקסט המנוקה (`data/training/proofread/`) קריא ושלם
- [ ] לא נחתכו חלקים מהותיים
- [ ] ה-metadata נכון (מספר תיק, תאריך, קטגוריה)
- [ ] אין שאריות של artifacts מנבו
- [ ] appeal_subtype = `betterment_levy` (ולא `building_permit`)

**כלי בדיקה**:
```
GET /api/training/status  — סטטוס העלאה ועיבוד
```

---

### שלב 4: ניתוח סגנון (Style Analysis)

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

```
POST /api/training/analyze-style
```

**מה קורה**:
1. שליפת כל ההחלטות מ-`style_corpus` (לפי practice_area/subtype)
2. בדיקת תקציב tokens:
   - עד 900K tokens → pass יחיד (הכל ל-Claude בבת אחת)
   - מעל 900K → multi-pass (כל החלטה בנפרד + סינתזה)
3. **חילוץ דפוסים** באמצעות Claude:
   - נוסחאות פתיחה
   - ביטויי מעבר
   - סגנון ציטוט פסיקה
   - מבנה ניתוח
   - נוסחאות סיום
   - ביטויים אופייניים
   - זרימת טיעון
   - טיפול בראיות
4. שמירה בטבלת `style_patterns` עם תדירות, הקשר, ודוגמאות

**תוצר**: מדריך סגנון מבוסס-נתונים ספציפי להיטלי השבחה.

---

### שלב 5: ניתוח קורפוס (Corpus Analysis)

בדומה ל-`docs/corpus-analysis.md` שנבנה עבור רישוי ובנייה, צריך ליצור ניתוח מקביל:

**מה לנתח**:
- הרכב הקורפוס: כמה החלטות, תוצאות (קבלה/דחייה/חלקית)
- אורך פרק דיון טיפוסי
- נושאים ייחודיים להיטלי השבחה:
  - שומות (שומה מוסכמת, שומה אחרת, שמאי מכריע)
  - תכנית משביחה — זיהוי, פרשנות
  - מועד השבחה / "מועד אישור התכנית"
  - חישוב עליית ערך (לפני/אחרי)
  - פטורים (ס' 19 לתוספת השלישית)
  - שיעור היטל
  - דיני ראיות שמאיים
- ביטויי מעבר ייחודיים
- סגנון דיון — "קר ומקצועי" (לפי CLAUDE.md)
- השוואה לרישוי ובנייה (מה שונה)

**תוצר**: מסמך `docs/corpus-analysis-betterment.md`

---

### שלב 6: עדכון Content Checklists

הקובץ `lessons.py` מכיל צ'קליסטים לבלוק י (דיון) לפי סוג ערר.

**מה צריך**:
- ליצור `CONTENT_CHECKLISTS["betterment_levy"]` עם נושאים ייחודיים
- נושאים צפויים: שומות, תכנית משביחה, מועד, חישוב, פטורים, ראיות שמאיות
- הצ'קליסט ייבנה מתוך ניתוח הקורפוס (שלב 5)

---

### שלב 7: אימות Paperclip

לוודא שחברת CMPA מוגדרת נכון:

**בדיקות**:
- [ ] חברה CMPA קיימת ופעילה ב-Paperclip DB
- [ ] Issue prefix = CMPA
- [ ] Plugin `legal-ai` פעיל בחברה
- [ ] סוכנים (CEO, researcher, writer) מוגדרים
- [ ] tag_company_mappings נכון ב-legal-ai DB:
  - `betterment_levy` → `8639e837...`
  - `compensation_197` → `8639e837...`
- [ ] יצירת תיק 8xxx מנותבת נכון

**כלי בדיקה**:
```
GET /api/settings/tag-mappings
GET /api/paperclip/companies
```

---

## סיכום — סדר פעולות

| # | שלב | מה | כלי | זמן משוער |
|---|------|----|------|-----------|
| 1 | הכנה | איסוף קבצי DOCX, בדיקת פורמט | ידני | — |
| 2 | העלאה | העלאת כל ההחלטות + proofreading אוטומטי | Web API / MCP | דקות לכל החלטה |
| 3 | ביקורת | בדיקת כל טקסט מנוקה + metadata | ידני / Claude | כמה שעות |
| 4 | ניתוח סגנון | חילוץ דפוסים מהקורפוס | API analyze-style | ~30 דק |
| 5 | ניתוח קורפוס | מפת תוכן + נושאים + השוואה | Claude + מסמך | כמה שעות |
| 6 | צ'קליסט | יצירת content checklist להיטלי השבחה | עדכון קוד | — |
| 7 | אימות Paperclip | בדיקת הגדרות חברה + ניתוב | API / DB | — |

---

## הערות חשובות

### ההבדל בין רישוי ובנייה להיטלי השבחה (מ-CLAUDE.md)

| מאפיין | רישוי ובנייה (1xxx) | היטלי השבחה (8xxx) |
|---------|---------------------|-------------------|
| טון | חם יחסית | קר ומקצועי |
| תוכן | הקשר תכנוני רחב, אלמנטים אנושיים | יבש, ללא רגשות |
| נושאי דיון | תכניות, חניה, קווי בניין, שכנים | שומות, חישובי השבחה, פטורים |
| פסיקה | ס' 152, הלכת שפר, דיני הקלה | ס' 196-198, תוספת שלישית, שמאי מכריע |

### סינון RAG לפי סוג
כל ה-chunks נשמרים עם `appeal_subtype`, כך שחיפוש סמנטי בתיק היטל השבחה ימצא רק תקדימים רלוונטיים מהתחום — לא יערבב עם רישוי ובנייה.

### ניתוח סגנון נפרד
ייתכן שנצטרך **מדריך סגנון נפרד** להיטלי השבחה, כי הטון שונה מהותית. הניתוח בשלב 4 יחשוף את ההבדלים.

---

## סוכנים — שיתוף בין החברות

### עיקרון: אותם סוכנים, הקשר שונה

**אין צורך בסוכנים נפרדים** לכל חברה. הסוכנים (CEO, researcher, writer) עובדים לפי **מתודולוגיה** — ארכיטקטורת 12 בלוקים, CREAC, מבחן השופט — שחלה על כל סוגי העררים.

**מה שמשתנה אוטומטית לפי `appeal_subtype`**:

| רכיב | מקור | מנגנון הפרדה |
|-------|------|--------------|
| Style patterns | טבלת `style_patterns` | ניתוח סגנון נפרד per-subtype |
| Content checklists | `lessons.py` | key שונה: `building_permit` vs `betterment_levy` |
| תקדימים (RAG) | טבלת `document_chunks` | סינון לפי `appeal_subtype` בחיפוש |
| טון | style guide + patterns | דפוסים שונים מהקורפוס |

**למה שיתוף סוכנים עדיף**:
1. שיפור במתודולוגיה חל אוטומטית על שני התחומים
2. אין כפילות בתחזוקת סוכנים
3. ההפרדה היא **ברמת הנתונים**, לא ברמת הלוגיקה

**מה כן צריך לוודא**:
- [ ] הסוכנים ב-Paperclip מקושרים לשתי החברות (CMP + CMPA)
- [ ] כש-issue נפתח ב-CMPA, הסוכנים מופעלים באותו אופן
- [ ] ה-context שהסוכן מקבל כולל את ה-`appeal_subtype` הנכון
