# Paliad Feature Roadmap

**Author:** cronus (inventor) | **Original date:** 2026-04-14 | **Rewritten:** 2026-04-17 (Phase J, after KanzlAI integration)
**Task:** t-paliad-013 (rewrite); originally t-patholo-011

---

## Strategic Position

Paliad is the **all-in-one platform for HLC patent practice**: knowledge tools plus Aktenverwaltung, behind one sidebar, one URL, one login.

It grew out of a pure knowledge platform (patholo.de, Q1 2026) and absorbed the KanzlAI case-management prototype on 2026-04-16 after the HL → HLC merger. The goal stays the same: every new associate's first bookmark, every partner's quick-reference, every PA's template source — and now also the place where a lawyer checks their next Frist before looking up the relevant UPC fee.

### Audience

- Patent lawyers and PAs across 7 offices (Munich, Düsseldorf, Hamburg, Amsterdam, London, Paris, Milan)
- Mix of German and English speakers — DE/EN toggle on every page
- Range from senior partners to new associates
- Daily work: drafting submissions, calculating costs, tracking deadlines, managing matters, researching case law

### What We Have (shipped — April 2026)

| Feature | Phase | Status |
|---|---|---|
| Supabase auth (@hoganlovells.com gate) | v1 | Live |
| Prozesskostenrechner (DE / UPC / EPA) | v1 | Live |
| Fristenrechner (deadlines with holiday adjustment) | v1 | Live |
| Lime-green branding + DE/EN i18n + sidebar | v1 | Live |
| File proxy + Downloads page (HL Patents Style.dotm) | 1.2 | Live |
| Link Hub with curated categories + youpc.org case-law link | 1.1 / 2.3 | Live |
| Gebührentabellen (GKG / RVG / UPC / EPA / PatKostG) | 1.3 | Live |
| Patentglossar (DE/EN, searchable) | 1.4 | Live |
| Kostenrechner enhancements (PDF export, URL sharing, scenario comparison) | 1.5 | Live (partial — Prozesskostensicherheit pending) |
| Gerichtsverzeichnis (court directory) | 2.2 | Live |
| Checklisten (interactive filing checklists) | 2.4 | Live |
| **Akten** (matter management, office-scoped visibility, collaborators) | 0.1 (A–D) | Live |
| **Fristen** (persistent deadline management, traffic-light cards, calendar) | 0.2 (E) | Live |
| **Termine** (appointments, calendar view) + **CalDAV sync** (AES-GCM at rest) | 0.3 (F) | Live |
| **Dashboard** (logged-in landing, server-rendered) | 0.4 (G) | Live |

### Design Principles

1. **Knowledge and practice live together** — tools and content bring people in; Aktenverwaltung keeps them there daily.
2. **Office-scoped by default** — an Akte belongs to one office; cross-office access is explicit via collaborator lists or a partner-toggled firm-wide flag. No "everyone sees everything" and no multi-tenancy machinery. See `docs/design-kanzlai-integration.md` §2.
3. **Self-serve over manual curation** — prefer structured data + search over hand-maintained pages.
4. **Ship incrementally** — each feature is independently useful.
5. **German content quality matters** — proper Umlaute, legal precision, no machine-translation feel.
6. **HTML-first, JS-enhanced** — server-rendered TSX with per-page client TS bundles. No react-query, no heavy client frameworks.

---

## Phase 0: Aktenverwaltung Foundation (shipped April 2026)

Ported and rebuilt from the retired KanzlAI prototype. Detailed phase breakdown and acceptance criteria live in `docs/design-kanzlai-integration.md` §8 (Phases A–J); this roadmap is the user-facing summary.

### 0.1 Akten (Matter Management) — office-scoped ✅ Done (2026-04-16, Phases A–D)

Persistent Akten (previously "cases" / "Mandate") with Parteien, audit trail (Verlauf), and per-Akte visibility. Every Akte has an `owning_office`, an explicit `collaborators` list, and a partner-togglable `firm_wide_visible` flag. Visibility is enforced both in Supabase RLS (`paliad.can_see_akte(akte_id)`) and at the application layer for defense in depth.

Shipped in Phases A (schema + RLS), B (services + sqlx pool), C (Fristenrechner → DB), D (Akten CRUD + onboarding + collaborator picker).

### 0.2 Fristen (Persistent Deadline Management) ✅ Done (2026-04-16, Phase E)

Persistent Frist list with traffic-light cards (rot / amber / grün / grau), detail page, month calendar, bulk-import from Fristenrechner ("Als Frist(en) speichern"). Visibility inherits from the parent Akte. Every mutation appends an `akten_events` row.

### 0.3 Termine + CalDAV Sync ✅ Done (2026-04-17, Phase F)

Termine CRUD (dual-mode: Akte-attached or personal), list/detail/calendar views, per-user CalDAV configuration. Bidirectional sync with a per-user goroutine on a 60s tick. Credentials encrypted at rest with AES-GCM keyed off `CALDAV_ENCRYPTION_KEY` (KanzlAI audit §1.3 fix). Passwords never returned in API responses.

### 0.4 Dashboard (Logged-in Landing) ✅ Done (2026-04-16, Phase G)

Server-rendered `/dashboard` for authenticated users: Frist summary (traffic lights), Akten summary, upcoming Fristen and Termine (7d), recent Verlauf. Zero client-side waterfall (audit §2.3 fix).

### 0.5 AI-assisted Frist-Extraktion — Deferred (Phase H)

Anthropic-based extraction of Fristen from uploaded court documents. **Not in current scope** — decision by m on 2026-04-16: "We don't want Anthropic API. We put this off for a while." The Dokumente tab on Akten detail stays as a "Kommt bald" placeholder. No `ANTHROPIC_API_KEY` needed on Dokploy today.

Open when revisiting: document upload + Supabase Storage alone (without AI) may still be worth shipping as a standalone Dokumente feature.

### 0.6 Notizen (polymorphic) — Pending (Phase I)

Schema exists (migration 005: `paliad.notizen` with polymorphic FK + CHECK constraint, RLS inherits from parent). Service, handlers, and UI component not yet shipped. Sized at ~4h in the integration design; pick up when cross-cutting notes become the next friction point.

---

## Phase 1: Foundation (Low effort, High impact)

Feature specs from the original roadmap. Items marked **✅ Done** were shipped in the pre-Aktenverwaltung April 2026 content push.

### 1.1 Link Hub ("Nützliche Links") ✅ Done (2026-04-14)

Curated, categorized page of external links relevant to daily patent practice. Categories cover Gerichte & Ämter, Recherche, UPC, Gesetze, and HL Intern. Lives at `/links`. Includes the youpc.org case-law entry that replaces the dropped §2.3 item. Users can suggest new links via an inline form.

### 1.2 More Downloads ✅ Done (page shipped — content pending)

Dedicated `/downloads` page with card-grid layout shipped (2026-04-14, `fd25998`). Current registry still holds only **HL Patents Style.dotm** — adding BuildingBlocks, legal writing templates, and the original Patentprozesskostenrechner.xlsm is a one-line registry edit per file, pending content selection from mWorkRepo.

### 1.3 Gebührentabellen (Fee Schedule Reference) ✅ Done (2026-04-14)

Interactive, tabbed fee schedule reference at `/tools/gebuehrentabellen`: GKG / RVG / UPC / EPA / PatKostG, with Streitwert quick-lookup and sortable tables per schedule version.

### 1.4 Patentglossar (DE/EN) ✅ Done (2026-04-14)

Searchable bilingual glossary at `/glossar` with client-side filter, category tags (prosecution / litigation / UPC / EPA), and a "Begriff vorschlagen" feedback form. Loaded from static JSON at server startup.

### 1.5 Kostenrechner Enhancements ✅ Partial (2026-04-14)

- **PDF Export** — shipped (print CSS).
- **Scenario Comparison** — shipped (side-by-side diff).
- **URL Sharing** — shipped (query-param state).
- **Prozesskostensicherheit** — pending. Calculation logic not yet implemented; only the glossary term exists. Kühnen 16th ed. Rn. E.47 ff. formula is still the target reference.

---

## Phase 2: Content Hub (Medium effort, High impact)

### 2.1 Verfahrensleitfäden (Procedure Guides) — Pending

Step-by-step visual guides for UPC Infringement, UPC Revocation, UPC Provisional Measures, German Infringement, German Nullity, EPA Opposition, EPA Appeal. Timeline + step descriptions + cross-links to Fristenrechner pre-filled for the proceeding type. Content exists in mWorkRepo (UPC Know-How, UPC Training); needs structuring.

**Effort:** ~8h code + ~6h content per guide | **Impact:** Very High

### 2.2 Gerichtsverzeichnis (Court Directory) ✅ Done (2026-04-16)

Reference page at `/gerichte` with entries for every relevant UPC division, German court (LG / OLG / BGH / BPatG), DPMA, EPA, and national courts in NL / UK / FR / IT. Searchable + filterable by type and country.

### 2.3 UPC Rechtsprechungsübersicht — Dropped

Explicitly removed 2026-04-16. Rationale: youpc.org already maintains a curated UPC case-law database with 1,600+ decisions. Replaced with a prominent youpc.org entry in the Link Hub under "Recherche" (commit `4526942`). Re-add only if youpc.org shuts down or if HLC needs firm-specific takeaways attached to decisions.

### 2.4 Checklisten (Interactive Checklists) ✅ Done (2026-04-16)

Interactive checklists at `/checklisten` for UPC Statement of Claim, Statement of Defence, Confidentiality Application, Representative Registration, BPatG nullity, EPA Opposition, nUPCMS filing. Checkbox state persisted in `localStorage` per user; print-friendly layout; feedback form per list.

---

## Phase 3: Platform Features (Higher effort, Transformative)

### 3.1 Suchfunktion (Global Search) — Pending

Search across all Paliad content — glossary, Gerichte, Leitfäden, Checklisten, links, and eventually Akten (scoped by visibility). Build the index at startup from JSON sources + DB. Expose `GET /api/search?q=...`.

**Effort:** ~6h | **Impact:** High

### 3.2 Vorlagenbibliothek (Template Library) — Pending

Evolve `/downloads` from a flat card grid into a proper template library with preview, category filters (Schriftsätze, Vorlagen, Tabellen, Blöcke), and metadata. Distribution channel for the HL Model Documents project and BuildingBlocks.

**Effort:** ~8h | **Impact:** High

### 3.3 Schulungsbereich (Training Hub) — Pending

Self-serve onboarding and continuing education at `/schulung`. New-associate guide, UPC training material, video guide links, HL Patents Style tutorial, nUPCMS filing guide, FAQ.

**Effort:** ~6h code + ~10h content | **Impact:** Medium-High

### 3.4 Benachrichtigungen (What's New) — Pending

Changelog + "neu seit letztem Besuch" badge in the sidebar. JSON-backed changelog, `localStorage` last-seen timestamp, optional browser push.

**Effort:** ~3h | **Impact:** Medium (retention)

---

## Phase 4: Advanced (High effort, Long-term)

### 4.1 KI-Recherche (AI-Powered Research) — Pending (AI features deferred alongside Phase H)

Claude-powered chat grounded in Paliad content (glossary, guides, case law, fee tables, and — with visibility enforcement — a user's own Akten/Fristen). Every answer cites sources. Requires guardrails; requires a solid content foundation (Phases 1–3). Currently blocked by the same "no Anthropic API" decision as Phase H; revisit when that decision flips.

### 4.2 Fristenkalender ✅ Done (Phase F)

Originally "export deadlines as .ics / CalDAV sync". Subsumed by Phase 0.3 Termine + CalDAV Sync — bidirectional sync with encrypted credentials at rest. The Fristenrechner's "Als Frist(en) speichern" button is the entry point from quick-calc into persistent Fristen; Fristen themselves appear in the user's CalDAV calendar via Termine linkage.

### 4.3 Collaborative Annotations — Pending (partial via 0.6 Notizen)

The polymorphic `paliad.notizen` table already covers per-Akte / per-Frist / per-Termin / per-AkteEvent notes (Phase I). "Annotations on published knowledge content" (e.g., per-glossary-term practitioner tips) is a separate scope and still pending. Requires moderation UI.

### 4.4 Mandantenkosten-Report (Client Cost Report) — Pending

Branded PDF cost estimate generated from Kostenrechner data: HL logo, matter reference, date, scenario comparison, editable cover letter. One-click replacement for today's manual Excel-to-memo workflow.

**Effort:** ~10h | **Impact:** Medium-High (client-facing)

---

## Prioritized Backlog

Phase 0 (Aktenverwaltung) items are **Done** as of April 2026. Remaining work ordered by priority.

| # | Feature | Phase | Effort | Impact | Priority | Status |
|---|---|---|---|---|---|---|
| 0.1 | Akten (matter mgmt) | 0 | — | Foundational | **P0** | ✅ Done |
| 0.2 | Fristen (persistent) | 0 | — | Foundational | **P0** | ✅ Done |
| 0.3 | Termine + CalDAV | 0 | — | High | **P0** | ✅ Done |
| 0.4 | Dashboard | 0 | — | High | **P0** | ✅ Done |
| 1.1 | Link Hub | 1 | 2h | High | **P0** | ✅ Done |
| 1.3 | Gebührentabellen | 1 | 4h | Med-High | **P0** | ✅ Done |
| 1.4 | Patentglossar | 1 | 5h | Medium | **P1** | ✅ Done |
| 2.2 | Gerichtsverzeichnis | 2 | 8h | Med-High | **P1** | ✅ Done |
| 2.4 | Checklisten | 2 | 7h | High | **P1** | ✅ Done |
| 1.5 | Kostenrechner enhancements | 1 | 6h | High | **P1** | ✅ Partial (PDF/URL/compare done; Prozesskostensicherheit pending) |
| 1.2 | More Downloads (content) | 1 | 1h/file | Medium | **P1** | ⬜ Page shipped; content pending |
| 0.6 | Notizen (service + UI) | 0 | 4h | Medium | **P2** | ⬜ Schema done, service pending |
| 2.1 | Verfahrensleitfäden | 2 | 14h | Very High | **P2** | ⬜ Pending |
| 3.4 | Benachrichtigungen | 3 | 3h | Medium | **P2** | ⬜ Pending |
| 3.1 | Suchfunktion | 3 | 6h | High | **P3** | ⬜ Pending |
| 3.2 | Vorlagenbibliothek | 3 | 8h | High | **P3** | ⬜ Pending |
| 3.3 | Schulungsbereich | 3 | 16h | Med-High | **P3** | ⬜ Pending |
| 4.4 | Mandantenkosten-Report | 4 | 10h | Med-High | **P3** | ⬜ Pending |
| 0.5 | AI Frist-Extraktion (Phase H) | 0 | 4h | High | **Deferred** | ⏸ Anthropic API decision pending |
| 4.1 | KI-Recherche | 4 | 20h | Transformative | **Deferred** | ⏸ Tied to Phase H decision |
| 4.3 | Collaborative Annotations (published content) | 4 | 15h | High | **P4** | ⬜ Pending |

---

## Architecture Notes

### Data Strategy

The data model is split:

- **Phase 0 (Aktenverwaltung)** — Supabase tables in the `paliad` schema with office-scoped RLS (`paliad.can_see_akte(akte_id)`). User-generated data lives here: Akten, Fristen, Termine, Parteien, Dokumente, Notizen, Verlauf, User profiles, CalDAV config. Migrations embedded into the Go binary via `embed.FS` and applied by `golang-migrate` at server startup.
- **Knowledge platform (Phases 1–2)** — static JSON data loaded at server startup. Content lives in git; content updates = git commits = automatic deploy.
- **Feedback tables** (`link_suggestions`, `checklisten_feedback`, `gerichte_feedback`) — `paliad` schema, firm-wide visibility.

When static content grows past what's practical in JSON (Phase 3+), migrate specific content types to Supabase tables with a simple admin API. Don't mass-migrate — move what benefits from search/filtering/mutation.

### Visibility Invariant

The office-scoped visibility predicate is **defined once** in SQL (`paliad.can_see_akte(akte_id uuid)`) and reused by every RLS policy on every table that carries an `akte_id`. `AkteService.GetByID` mirrors the predicate at the application layer for defense in depth; every child service (`FristService`, `TerminService`, `ParteienService`, …) routes through `AkteService.GetByID` before operating on its own row. **Never duplicate the predicate.** See `docs/design-kanzlai-integration.md` §2 and the Phase E memory episode for the architecture invariant.

### Content Pipeline

New knowledge content follows this flow:
1. Practitioner identifies need (or new case law / template).
2. Content written/curated (by knowledge lawyer or contributor).
3. Added to Paliad repo as JSON/markdown.
4. PR reviewed and merged.
5. Auto-deploy via Dokploy webhook (push to `main` → Gitea webhook → Dokploy).

### Navigation

The sidebar has six grouped sections (see `docs/design-kanzlai-integration.md` §6):

```
— ÜBERSICHT —
  Dashboard

— ARBEIT —
  Akten
  Fristen
  Termine

— WERKZEUGE —
  Kostenrechner
  Fristenrechner          (stateless quick calc; distinct from /fristen)
  Gebührentabellen

— WISSEN —
  Glossar
  Checklisten
  Gerichtsverzeichnis
  Leitfäden               (future — Phase 2.1)

— RESSOURCEN —
  Downloads
  Nützliche Links

— EINSTELLUNGEN —
  CalDAV
```

### What Paliad Is

Paliad is the all-in-one platform for HLC patent practice:

- **Knowledge platform** — curated content, practical tools, quick reference (Glossar, Gebührentabellen, Checklisten, Gerichtsverzeichnis, Leitfäden, Links, Downloads).
- **Aktenverwaltung** — Akten, Fristen, Termine, Parteien, Dokumente, Notizen, Verlauf (audit trail). Office-scoped visibility with explicit collaborator lists for cross-office teams. Personal calendar sync via CalDAV. AI-assisted Frist extraction is designed but deferred.

What Paliad is *not*:

- **Not a billing tool** — HLC has firm-wide billing infrastructure.
- **Not a beA gateway** — out of scope; lawyers use existing beA software.
- **Not a document management system** — SharePoint / netDocuments stay in their lane.
- **Not a CMS** — content lives in git, not a database with a CMS UI.

---

## Longer-Term Open Questions

- **Outlook / Exchange sync (Phase K).** CalDAV covers Apple iCloud + `dav.msbls.de`. HLC lives on Outlook + Exchange; Exchange's CalDAV support is limited. A follow-on "Phase K" would add an EWS / Microsoft Graph backend behind the same sync abstraction. Decide based on internal feedback to Phase F.
- **Practice-group walls.** Today, `practice_group` is filter-only metadata. If a partner asks for "Patents Litigation can't see Patents Prosecution Akten", the schema is ready to extend the `paliad.can_see_akte` predicate. Don't build until asked.
- **External counsel access.** Bringing in an outside boutique on a specific Akte currently means adding them as a user (not possible without the HLC email domain). A future `external_collaborators` table with scoped RLS would cover it.
- **Read-only archive post-closure.** Add `is_archived` on `paliad.akten`, deny mutations via RLS. Cheap follow-on.
- **AI revisit.** The Phase H / 4.1 pause is a decision, not a technical block. When Anthropic API goes back on the table, both AI extraction (Phase H) and KI-Recherche (4.1) can be unblocked.
- **Supabase Auth SMTP routing.** Confirmation / password-reset / magic-link mails from `ydb.youpc.org` still go through Supabase's default sender. Routing them through Paliad's SMTP (`mail@paliad.de`) is a one-line GoTrue config change, but youpc's Supabase is shared with youpc.org, so the global SMTP settings can't be flipped without rebranding youpc.org's auth mails too. Resolution paths (lowest-effort first):
  1. Move Paliad to its own Supabase project and configure SMTP there.
  2. Wait until the youpc instance exposes per-project SMTP (Supabase Pro / self-hosted upgrade).
  3. Write a custom GoTrue webhook that Paliad's Go server intercepts and re-sends via `MailService`.

  For now the inbox-facing mails (reminders + invitations) go through Paliad's SMTP; identity-bootstrap mails stay on the default sender — acceptable for the current HLC pilot. Tracked as part of t-paliad-021 completion (2026-04-20).
