# 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).