agents/focus-area: auto-infer focus areas from task clustering #113

Closed
opened 2026-05-05 09:26:02 +00:00 by alvis · 0 comments
Owner

Goal

Auto-infer per-user focus areas (named clusters of related work) from Todoist projects + labels, and write them into agent:focus-area preferences via the inference framework (#111).

Depends on

  • #97 (embedding-based task clustering — provides the nomic-embed-text clustering primitive this builds on).

Inferred parameters

Key Shape Default
focusAreas { id, label, projectIds[], labelIds[], weight }[] empty
primaryArea id of currently-most-active area null

Method (sketch)

  • Embed task titles + project names with nomic-embed-text.
  • HDBSCAN or agglomerative cluster on recent (30d) tasks; weight by completion volume.
  • Generate human-readable labels for clusters via tip-generator LLM.
  • Surface top-N as suggested areas; user can confirm/rename/dismiss in admin (later).

Done when

  • Inference function plugged into the framework with TTL = 12h.
  • Cold-start uses no areas (agent emits a generic snippet).
  • FocusAreaAgent snippet reads primaryArea to bias the orchestrator prompt.
  • Tests cover: single-project user, many-project user, empty user.
## Goal Auto-infer per-user focus areas (named clusters of related work) from Todoist projects + labels, and write them into `agent:focus-area` preferences via the inference framework (#111). ## Depends on - #97 (embedding-based task clustering — provides the `nomic-embed-text` clustering primitive this builds on). ## Inferred parameters | Key | Shape | Default | |---|---|---| | `focusAreas` | `{ id, label, projectIds[], labelIds[], weight }[]` | empty | | `primaryArea` | id of currently-most-active area | null | ## Method (sketch) - Embed task titles + project names with `nomic-embed-text`. - HDBSCAN or agglomerative cluster on recent (30d) tasks; weight by completion volume. - Generate human-readable labels for clusters via `tip-generator` LLM. - Surface top-N as suggested areas; user can confirm/rename/dismiss in admin (later). ## Done when - Inference function plugged into the framework with TTL = 12h. - Cold-start uses no areas (agent emits a generic snippet). - `FocusAreaAgent` snippet reads `primaryArea` to bias the orchestrator prompt. - Tests cover: single-project user, many-project user, empty user.
alvis added this to the M2 — AI tips + multi-source signals milestone 2026-05-05 09:26:02 +00:00
alvis closed this issue 2026-05-06 06:54:37 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: alvis/oO#113