Files
nexa/docs/02-roadmap.md
T
Claude 17c7f5033f Stage embeddings: ship Path A (text) now, prepare Path C (text+visual) additively
Decision (Q15 resolved): start with text-only via TEI + bge-m3 in Phase 3.1,
prepare data shapes so Phase 3.2 (visual collection via infinity + jina-clip-v2)
is a pure additive operation — no rename, no schema migration, no n8n rewiring.

Concretely:
- Qdrant collection renamed nexa_knowledge → nexa_knowledge_text (1024-dim
  for bge-m3) with modality-aware payload (modality, source_type, media_uri,
  graph_iri, content_hash, context). Visual placeholder schema committed
  alongside (qdrant_schema_visual.json, 768-dim, jina-clip-v2).
- Image attachments captured in 3.1 are recorded in GraphDB as nexa:Note with
  nexa:modality "image" + nexa:pendingVisualIndex true; the 3.2 backfill
  workflow picks them up and embeds. No data lost between phases — the queue
  is the GraphDB itself.
- RDF schema (docs/08) gains nexa:modality, nexa:mediaUri,
  nexa:vectorCollection, nexa:pendingVisualIndex from day one.
- docs/02 roadmap split: 3.1 = text RAG (Path A), 3.2 = visual collection
  (Path C), 3.4 = Ontotext GraphDB.
- docs/09 grows a "Phase add-on: visual collection (Phase 3.2)" section with
  the TEI→infinity swap, second collection create, LiteLLM second model
  registration, and the SPARQL-driven backfill query.
- New open questions: Q16 (queue ergonomics + does SAIA already proxy an
  embed model?), Q17 (reuse Immich's CLIP for photo-library queries?).
- docs/03 + CLAUDE.md updated so future runs use the new collection names
  and don't re-decide the staging.
2026-05-04 21:33:59 +00:00

2.6 KiB

02 — Roadmap & Phases

Iterative build-out, value-first. Each phase is shippable on its own.

Phase 1 — The Spine (connectivity)

Focus: datapath between Memos, n8n and SAIA. Milestone: Nexa replies on Memos and answers simple questions.

  • 1.1 Memos ↔ n8n bridge — webhook ingress, content filter, comment-back.
  • 1.2 SAIA integration — call LiteLLM proxy from n8n; chat via Memos comments.
  • 1.3 Git-sync — periodic export of n8n workflows into this repo.

Phase 2 — Senses (input channels)

Focus: e-mail filter and the Work-vs-Personal router. Milestone: Nexa distinguishes work tasks from personal tasks without manual tags.

  • 2.1 Email butler — filter & summarize the ~20 daily personal mails.
  • 2.2 RSS morning digest — curated daily summary in Memos.
  • 2.3 Bluesky antenna — store liked posts as knowledge snippets.

Phase 3 — Memory (Qdrant & RAG)

Focus: Qdrant + graph layer for retrieval-augmented answers. Milestone: RAG works — Nexa answers from archived notes; images captured today are queued for visual indexing later.

  • 3.1 Text RAG (Path A) — TEI + bge-m3, single Qdrant collection nexa_knowledge_text. #nexa:ask reads it before answering. Image attachments are recorded as nexa:Note with pendingVisualIndex but not embedded yet.
  • 3.2 Visual collection (Path C) — swap TEI → infinity, add jina-clip-v2, create nexa_knowledge_visual, backfill all queued image notes. RAG workflow gets a parallel branch for visual hits. See 09 § "Phase add-on: visual collection".
  • 3.3 S3 long-term archive — Qdrant snapshots (both collections) to the S3 server.
  • 3.4 Ontotext GraphDB — SPARQL pillar; structural queries combined with vector hits in #nexa:ask. See 08.

Phase 4 — Motor (organization & action)

Focus: calendar integration and time-boxing. Milestone: Nexa proactively proposes morning focus slots in the work calendar.

  • 4.1 Nextcloud Tasks sync — bidirectional status sync (Memos ↔ NC Tasks).
  • 4.2 Time-boxing agent — calendar-aware slot suggestions.
  • 4.3 Karakeep curation — automated review cycle for saved links.

Phase 5 — Daily integration (polish)

Focus: Home Assistant Voice and monitoring. Milestone: Nexa speaks via HA-Voice and surfaces critical system states proactively.

  • 5.1 HA Voice — Wake-word integration, Wyoming protocol.
  • 5.2 System monitoring — Proxmox / Backrest alerts into the Memos system feed via ntfy.