-
Notifications
You must be signed in to change notification settings - Fork 0
plan
Build the system in narrow, reviewable layers. Do not start with a big autonomous agent that tries to do everything at once. The order should be:
- immutable source intake
- deterministic parsing and span tracking
- evidence extraction
- canonical skill graph
- person-state scoring
- tree rendering and explainability
- optional profile/wiki generation
This keeps the hardest part, skill inference, grounded in evidence from day one. The file-by-file synthesis contract is mandatory. Cross-file aggregation happens only after a file has yielded its own evidence.
Use Python for the first implementation. Reason:
- easier file parsing
- better graph and NLP libraries
- easier local model integration
- simpler JSON schema enforcement
If you later want parity with an existing Node CLI, wrap the Python core instead of reversing this decision early.
Deliverables:
- repo scaffold
- folder layout
- Pydantic models
- config file
- prompt files
- test fixtures
- empty CLI commands
Done when:
-
traccia initworks - schema validation works
- golden test fixtures load
Build:
- source catalog
- file fingerprinting
- parser registry
- parse-to-JSON normalized format
- span/offset preservation
- source-category classification for stronger vs weaker signal types
- ignore unchanged files
Done when:
- supported test files parse into a stable normalized document schema
- rerunning on unchanged inputs is a no-op
- source deletion and reingest logic works
Build:
- segmenter
- extractor prompt
- strict JSON output validation
- evidence typing
- weak-signal classification
- file-scoped extraction contract
- review queue for uncertain extractions
Done when:
- each parsed file can produce evidence JSON
- evidence items keep exact source spans
- invalid model output is rejected and retried safely
- extraction for one file does not depend on wider corpus context
Build:
- alias resolver
- node creation rules
- local-first canonical node registry
- optional taxonomy reference adapters
- skill registry
- merge / split review flow
Done when:
- repeated aliases map to the same node when appropriate
- ambiguous mappings go to review instead of silently merging
- new nodes get stable IDs
- external taxonomy references remain optional enrichment, not the backbone
Build:
- level model
- confidence model
- recency model
- skill decay rules
- historical peak state tracking
- first-seen / first-strong timeline tracking
- core-self centrality model
- consumption-evidence cap rules
Done when:
- every node can show current level, confidence, and freshness
- every node can show first seen, first strong evidence, and historical peak timing
- current mastery and identity-centrality remain separate signals
- adding new evidence updates only impacted states
- stale skills remain visible but flagged
- consumption-led evidence cannot push a node beyond L2
Build:
- edge registry
- parent/part/prerequisite/related rules
- cycle handling
- curated prerequisite imports
- manual edge curation
Done when:
- graph export is stable
- prerequisite edges come only from curated imports or explicit human curation
- cycles are either resolved or downgraded to
related_to
Build:
- node markdown renderer
- tree index renderer
- append-only log
- graph JSON export
- ASCII / Mermaid CLI output
- minimal custom graph browser
- Obsidian-friendly markdown export
Done when:
-
traccia treeis useful in the terminal -
traccia explain <skill>shows clear evidence and rationale - the markdown artifact folder is readable without the database
- the graph browser is useful for read-only traversal
- generated markdown remains pleasant to browse in Obsidian
Build:
- review queue browser in CLI
- accept/reject/lock commands
- manual alias additions
- hidden/private node flags
Done when:
- a user can safely curate the graph without editing the database directly
- locked nodes survive rebuilds
- review burden is low enough to be practical
Build:
profile/skill.md- strengths, gaps, and timeline summaries
- artifacts summary
- identity-centrality summaries
- strict cited export rules
Done when:
- the profile is generated from the graph, not directly from raw files
- all claims in the profile can be traced back to graph nodes and evidence
- uncited or sensitive claims are excluded by default
Include:
- local CLI
- minimal custom graph browser
- Obsidian-friendly markdown export
- markdown/text/pdf/docx/code ingestion
- evidence extraction
- canonical nodes + aliases
- skill state scoring
- explainability
- markdown + JSON exports
- full reflective profile set with strict cited export gates
Exclude:
- connectors
- multi-user auth
- cloud sync
- automatic course recommendation
- browser extension
- full personality graph / identity modeling
- recruiter or job-fit workflows
- fancy web app
- The LLM never writes into
raw/. - Every automatic change must be attributable to a pipeline step and version.
- Evidence extraction and scoring are separate steps.
- Manual locks override automation.
- New nodes from weak evidence must go to review.
- Tree rendering is a projection of the graph, not the source of truth.
- The profile view must depend on the graph, not bypass it.
- SQLite is the canonical derived state. Markdown and JSON are projections.
- Extraction is file-scoped first. Cross-file reasoning starts after evidence extraction.
- Local canonical nodes are the backbone. External taxonomies are optional references.
- Consumption-led evidence can reach at most L2.
- In MVP,
prerequisite_ofedges are curated-only. - Ambient platform signals must never be treated as equivalent to artifact-backed work.
- Current mastery and core-self centrality are separate output dimensions.
repo/
src/
traccia/
cli/
config/
parsers/
segmentation/
extraction/
canonicalization/
scoring/
graph/
rendering/
review/
storage/
config/
prompts/
tests/
fixtures/
golden/
docs/
Create a small corpus with:
- a project README
- code files
- notes
- a PDF
- a calendar export
- a chat export
Expected outputs:
- parsed documents
- extracted evidence
- graph JSON
- rendered node pages
- rerun on unchanged corpus
- expect identical outputs except timestamps where intentionally excluded
- modify one file
- confirm only impacted nodes change
- files containing API keys or secrets should not leak into public profile output
- ambiguous aliases should land in review queue
-
topicandskillremain distinct in storage throughSkillKind; renderers can group them visually when useful. - Strong-evidence auto-creation defaults to confidence
0.85. - Recency uses a conservative step curve: active through 90 days, warming through 180 days, stale through 365 days, historical after that.
- The strongest source weight belongs to shipped artifacts, code, authored docs, and concrete execution traces. Weak social, metadata, search, and self-presentation traces stay low weight.
- Auxiliary non-skill context remains source/evidence metadata in v1 instead of becoming first-class graph nodes.
These defaults should be recalibrated against a golden corpus rather than tuned by anecdote.
extract_evidence.mdcanonicalize_skills.mdscore_skill_state.mdrender_node_page.mdrender_tree_index.mdprofile_summary.md
Keep them small and role-specific.
The repository does not ship a personal demo corpus because realistic examples would be private. For local demos, use a synthetic or consented single-person data bundle with:
- one repo
- one project design doc
- one talk or presentation
- a month of notes
- selected calendar entries
- a few bookmarks or article summaries
This mix is enough to demonstrate:
- studied vs built distinction
- recency
- artifact-based leveling
- curated prerequisite suggestions
- explainability
Implement these before spending time on prompt polish:
- parser registry
- normalized document schema
- evidence JSON schema
- alias store
- stable IDs
- review queue
- graph projection rules
Without these, prompt tuning will not save the system.
After the first build works end-to-end, harden:
- caching
- retry logic
- structured logging
- prompt versioning
- migration scripts
- secret redaction
- export privacy controls
- graph diff tooling
The project is ready for real-world use when all of the following are true:
- one command can ingest a directory
- unchanged files are skipped
- at least 80 percent of displayed skill nodes have direct evidence links
- every node page explains why the node exists
- manual locks and review decisions persist
- graph export and markdown export remain consistent
- profile exports never contain uncited private claims
- the read-only graph browser and Obsidian export stay consistent with the canonical graph
After the CLI is stable:
- timeline / history mode
- connector adapters
- recommended next skills
- team-level aggregate maps
- import/export packs for portability
- broader whole-person archive projections beyond the skill graph
Do not start here. Start with correctness and provenance.