Add user profile, goals-as-priority lens, and relationship maintenance#176
Open
yustme wants to merge 1 commit into
Open
Add user profile, goals-as-priority lens, and relationship maintenance#176yustme wants to merge 1 commit into
yustme wants to merge 1 commit into
Conversation
Give Scout a qualitative model of the user it serves, filling three gaps
found while surveying chief-of-staff/second-brain agents:
- Profile + communication contract: knowledge-base/profile/{about-you,
communication,goals}.md. about-you is Scout-maintained (derived from
connectors + the user's own Claude Code sessions, confidence-tagged,
never clobbering hand edits); communication.md is the authoritative
contract for language/tone/length/cadence/escalation, refined by the
feedback loop. Files use `kind: profile` (no `type:`) so the ontology
parser ignores them.
- Goals as a prioritization lens: confirmed goals in goals.md order items
within an urgency band and drive a digest goals/neglect lens. Strictly
secondary — never overrides the deadline-distance ceiling or surfaces
noise. Goals are Scout-proposed from activity, user-confirmed.
- Relationship maintenance: last_interaction on person entities + a
briefing-time relationships phase that surfaces cadence-aware reconnect
nudges and aging promises, low-key and contract-governed.
Integration: new core phase 00-about-you (read profile first, comms
authoritative) lands in every assembled brain file; action-items,
kb-management, claude-sessions, and feedback-processing teach Scout to
read/derive/refine the profile.
Migration for existing vaults: profile seeds replay idempotently on
upgrade (recorded as profile-files-v1), the first post-upgrade run
backfills derived data, and a new /scout-profile command runs a
gap-filling interview that asks only about what's still missing.
Tests: tests/unit/test_profile_seed.py covers install/upgrade seeding,
edit preservation, parser invisibility, migration idempotence, and phase
assembly into SKILL/DREAMING/RESEARCH.
Collaborator
|
cc @AdamVyborny - I feel like we're getting to the point where we need to figure out how to let users have more configurable control over what sort of Scout features they use. My first thought is to go straight with Skills, but it's more complicated than that. Honestly, I think it's worth chatting about for a bit to capture our thoughts. Some things here are universal enough to be merged, but I see a few bigger issues that need to be thought about:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
Gives Scout a qualitative model of the user it serves. While surveying chief-of-staff / second-brain agents, three gaps stood out that Scout lacked (verified by grepping
phases/): no qualitative user profile or communication contract, no goals layer filtering prioritization, and task-centric (not relationship-centric) tracking.Guiding principle: auto-derive first, minimal manual input, value only where data can't reach. Scout derives most of the profile from connectors + the user's own Claude Code sessions and keeps it fresh (confidence-tagged, feedback-driven). Manual input is capped at one optional setup question.
Changes
Profile + communication contract —
knowledge-base/profile/about-you.md— Scout-maintained snapshot (identity, key people, focus, working rhythm); derived, confidence-tagged, never clobbers hand edits.communication.md— authoritative contract for language / tone / length / cadence / escalation; refined by the feedback loop.goals.md— confirmed + proposed goals.kind: profile(notype:) so the ontology parser ignores them.Goals as a prioritization lens —
action-items.mdRelationship maintenance —
relationships.md(briefing-time) +last_interactionon person entitiesIntegration
00-about-you.md(empty mode → every assembled brain file): read profile first, comms contract authoritative.kb-management,claude-sessions,feedback-processingteach Scout to read / derive / refine the profile.Migration for existing vaults
upgrade()(recorded asprofile-files-v1), never clobbering edits./scout-profilecommand: a gap-filling interview that asks only about what's still missing./scout-setupadds one optional question;/scout-updatepoints users to/scout-profile.Tests
engine/tests/unit/test_profile_seed.py— install/upgrade seeding, edit preservation, parser invisibility, migration idempotence, and phase assembly into SKILL/DREAMING/RESEARCH. Full suite: 885 passing (one pre-existing flaky fswatch integration test passes in isolation).