feat(search): NL search — modern German + EN/ES translation rendering #741

Closed
opened 2026-06-06 12:16:47 +02:00 by marcel · 0 comments
Owner

Part of epic #735. Post-v1. Depends on the NL search v1 backend being live (Ollama infrastructure exists).

Goal

One tap on a letter turns the 1910s-German transcription into readable modern German (and optionally EN/ES) rendered alongside the original. The single biggest unlock for the younger reader persona (phones, don't read Kurrent or archaic German).

Scope

  • New endpoint or action on the document detail page: "Übersetzen / Translate"
  • Ollama (same instance as NL search) generates the modern-German rendering from the transcription text
  • Result stored as a new artifact alongside the transcription (not regenerated on every view)
  • EN/ES rendering optional — same pipeline, different prompt
  • Permission model: any authenticated user can trigger translation; output is cached per document

Open questions before implementation

  • Storage: new document_translations table (locale + content + generated_at) or extend Document entity?
  • Who can trigger/re-trigger translation? Any user or WRITE_ALL only?
  • Show original + translation side-by-side, or toggle?
Part of epic #735. Post-v1. Depends on the NL search v1 backend being live (Ollama infrastructure exists). ## Goal One tap on a letter turns the 1910s-German transcription into readable modern German (and optionally EN/ES) rendered alongside the original. The single biggest unlock for the younger reader persona (phones, don't read Kurrent or archaic German). ## Scope - New endpoint or action on the document detail page: "Übersetzen / Translate" - Ollama (same instance as NL search) generates the modern-German rendering from the transcription text - Result stored as a new artifact alongside the transcription (not regenerated on every view) - EN/ES rendering optional — same pipeline, different prompt - Permission model: any authenticated user can trigger translation; output is cached per document ## Open questions before implementation - Storage: new `document_translations` table (locale + content + generated_at) or extend `Document` entity? - Who can trigger/re-trigger translation? Any user or WRITE_ALL only? - Show original + translation side-by-side, or toggle?
marcel added this to the Archive Intelligence — NL Search milestone 2026-06-06 12:16:47 +02:00
marcel added the P3-laterfeature labels 2026-06-06 12:19:03 +02:00
Sign in to join this conversation.
No Label P3-later feature
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: marcel/familienarchiv#741