Nachiket Tanksale138 downloadsA Markdown-first research and project operating system for Obsidian. Connect projects, tasks, daily work, ideas, reading, and career opportunities.
Install ResearchFlow from the Community Plugins
A Markdown-first research and project operating system connecting ideas, projects, tasks, daily work, reading, and career opportunities.
ResearchFlow is a Markdown-first research and project operating system for Obsidian.
It connects:
The central idea is simple:
Connect what you think about, what you build, what you read, what you work on, and where you want to go next.
Version: 0.9.2
ResearchFlow is an actively developed alpha. The current implementation combines the original foundation with the v0.2--v1.0 roadmap features.
The plugin is intentionally local and Markdown-first. Your vault remains usable as normal Obsidian Markdown even without the plugin.
ResearchFlow treats your research workflow as a connected graph rather than a collection of unrelated folders.
ResearchFlow
│
┌─────────────────┼─────────────────┐
│ │ │
Ideas Projects Career
│ │ │
│ Tasks │
│ │ │
└────────────── Daily ───────────────┘
│
Reading / Results
A typical workflow can look like:
Reading
↓
Research Idea
↓
Project
↓
Task
↓
Daily Work
↓
Result / Artifact
↓
Career Opportunity
The relationships are represented using normal Markdown, YAML frontmatter, and Obsidian wikilinks.
The ResearchFlow home view provides a single landing page for your work.
It currently shows:
The dashboard is intended to answer:
What is happening, what is blocked, and what needs my attention?
Projects are the primary unit of active work.
A project stores:
Example:
---
type: project
domain: ML
status: active
priority: high
progress: 45
start: 2026-08-01
deadline: 2026-09-15
blocker:
attention: false
next_action: Run the baseline experiment
last_activity: 2026-08-18T20:30:00
project_kind: research
---
Project progress is derived from task completion.
Completed tasks
---------------- × 100
All project tasks
The task state is therefore the source of truth rather than manually maintaining a percentage.
Tasks can be simple work items while still having their own Markdown page.
A task can contain:
Example:
---
type: task
status: todo
priority: medium
project: "[[Astronomy Agent]]"
created: 2026-08-18
work_date: 2026-08-18
due:
---
Every task can belong to a project.
When a task is created:
Task
├──► Project
└──► Daily Note
The project task list is maintained automatically.
Daily notes are the common record of what actually happened during the day.
A single day can contain work on multiple projects:
2026-08-18
OpportunityAgent
Astronomy Agent
Ising Research
The daily note contains:
Tasks scheduled for a date are automatically represented in the corresponding daily note.
Task completion is synchronized across views.
┌──────────────┐
│ TASK │
│ status=todo │
└──────┬───────┘
│
┌───────────┼───────────┐
▼ ▼ ▼
Landing Daily Project
│ │ │
└───────────┴───────────┘
│
▼
status = done
Changing a task in the daily workflow updates the underlying task object and consequently updates project progress and dashboard state.
Completed tasks are removed from the dashboard's active daily task list.
Ideas are captured before they become projects.
ResearchFlow distinguishes between:
and supports domains such as:
An idea can contain:
Example:
---
type: idea
domain: Quantum
kind: research
status: seed
priority: medium
created: 2026-08-18
project:
---
Reading items are structured objects rather than an unstructured bookmark dump.
A reading item tracks:
Example:
---
type: reading
reading_type: paper
status: unread
added: 2026-08-18
read:
url: https://example.com/paper
project: "[[Astronomy Agent]]"
---
The dashboard provides a reading queue.
Career opportunities are stored as Markdown objects and surfaced in the ResearchFlow dashboard.
A career opportunity can track:
Example:
---
type: career
company: Example AI
role: ML Researcher
deadline: 2026-09-01
match: 87
status: saved
applied:
feedback:
documents:
project: "[[LLM Research]]"
source: https://example.com/job
---
Career opportunities are sorted by deadline in the dashboard.
ResearchFlow supports importing career opportunities from a CSV export.
The intended workflow is:
OpportunityAgent
│
▼
CSV export
│
▼
ResearchFlow Career objects
│
▼
Career dashboard
CSV import is deliberately used as the initial integration boundary rather than requiring a direct dependency between the two projects.
ResearchFlow tracks project health using available project metadata and activity.
Health takes into account factors such as:
Projects without recent activity are surfaced as stale.
The current default stale threshold is 14 days.
Projects can explicitly declare blockers:
blocker: Waiting for dataset access
and attention:
attention: true
The dashboard separates these into:
🔴 BLOCKERS
🟠 ATTENTION
⚠ STALE PROJECTS
This makes unresolved work visible without requiring manual searching through project notes.
ResearchFlow can generate a weekly Markdown summary.
The summary provides a place for:
The generated summary remains a normal Markdown file inside the vault.
ResearchFlow includes a relationship validation command.
It checks for issues such as:
work_dateUse:
Command Palette → ResearchFlow: Validate ResearchFlow Relationships
ResearchFlow currently provides commands for:
Command Purpose
Open Home Open the ResearchFlow dashboard
New Project Create a project
New Research Idea Create an idea
New Task Create a task
Open Today's Daily Note Open/synchronize today's daily note
New Reading Create a reading item
New Career Opportunity Create a career opportunity
Import Career CSV Import OpportunityAgent-style career data
Generate Weekly Research Summary Generate a weekly research summary
The default structure is:
02_Projects/
03_Ideas/
04_Tasks/
05_Career/
06_Reading/
07_Daily/
These folders can be changed from the ResearchFlow settings tab.
ResearchFlow creates the folders automatically if they do not exist.
ResearchFlow uses Markdown files with YAML frontmatter.
Project
│
├── Tasks
│ └── work_date → Daily
│
├── Reading
│
├── Ideas
│
└── Career
Daily
├── Tasks
├── Work Log
├── Decisions
├── Blockers
├── Ideas
├── Reading
└── Career
The important design principle is:
Objects are stored once; relationships are represented through links and metadata.
ResearchFlow does not require a proprietary database.
Your information remains in:
If ResearchFlow disappears tomorrow, your vault remains usable.
ResearchFlow prefers relationships over duplicated information.
For example:
project: "[[Astronomy Agent]]"
allows the same task to appear conceptually in:
without creating separate copies of the task.
For task completion:
Task file
│
├──► Daily view
├──► Project progress
└──► Dashboard
The task's status is authoritative.
Project progress is derived from project tasks rather than being an independent manually maintained number.
The core plugin does not require:
All core data lives in your Obsidian vault.
The version roadmap describes the evolution of ResearchFlow.
Potential future capabilities include:
ResearchFlow is built using:
Install dependencies:
npm install
Development build:
npm run dev
Production build:
npm run build
The production build generates:
main.js
inside the plugin directory.
For development, use a separate Obsidian test vault rather than your primary vault.
obsidian-research-flow/
│
├── manifest.json
├── package.json
├── tsconfig.json
├── esbuild.config.mjs
├── README.md
├── LICENSE
│
└── src/
└── main.ts
npm install
npm run build
<Vault>/.obsidian/plugins/obsidian-research-flow/
manifest.json
main.js
styles.css
ResearchFlow is still an alpha release.
Known limitations include:
styles.css.ResearchFlow is not intended to become another generic task manager.
The goal is to make the following loop easy:
Think
↓
Capture an idea
↓
Explore / read
↓
Turn it into a project
↓
Break it into tasks
↓
Work on it daily
↓
Record decisions and results
↓
Connect the outcome to future work
The system should help answer four questions quickly:
Apache License 2.0.