Ahmadreza Azimi Kohnabi211 downloadsExamined Human dashboards and guarded native EQH data import on desktop and mobile.
Examined Human is a local-first Obsidian plugin for planning, recording, and reviewing a life through one connected body of information.
You write ordinary Markdown forms. Examined Human validates them, asks for confirmation before importing them, and turns the resulting history into a calendar and a set of dashboards for time, commitments, money, food, exercise, milestones, and health records.
The connecting idea is an engagement: anything you meaningfully engage with, such as a person, relationship, course, project, practice, responsibility, hobby, or long-term goal. Sessions, transactions, milestones, and plans can all point to the same engagement.
Examined Human runs on desktop and mobile. Your notes and database remain in your vault. It does not require an account, server, Python installation, or cloud service.
Current release: 0.9.6 Requires Obsidian 1.8.7 or newer
This README is the user manual and feature reference. The current working build includes features under review; see CHANGELOG.md for changes awaiting release. A version number alone does not identify which review features are installed.
The usual rhythm is:
Daily history acts like a receipt: changing a note does not silently change its imported data. You can explicitly reimport a complete Daily Form for today or a past date after reviewing a red replacement warning and confirming deletion of the old day. Future Daily Forms can be reviewed but cannot be imported. Weekly plans and budgets can be updated by importing the same period again.
If you are new, the shortest useful path is: create and test an empty database, copy the explained Daily Form into your journal workflow, seed one engagement through its Admin Events section, and import that form. You can add foods, accounts, exercises, Weekly plans, and budgets only when you need them.
When Examined Human is available in the Obsidian Community plugins directory:
main.js, manifest.json, and styles.css from the same Examined Human release..obsidian/plugins/examined-human/.Do not copy data.json from another vault. It contains settings that belong to that vault.
Complete these steps in order. The first six establish a real, usable installation. Step 7 is an optional disposable practice run; step 8 covers regular-use preferences.
Open Settings → Community plugins → Examined Human.
In Database path, enter the location of the database relative to the root of your vault. For example:
EH.db puts it at the vault root.data/EH.db puts it inside a data folder.Do not enter a Windows drive path, an absolute path, or a path outside the vault.
Then choose one route:
.db file.Select Test connection. Continue only after Obsidian reports that the Examined Human database is OK.
If you are connecting an older pre-1.0 database and Settings offers an upgrade, make an independent copy first, preview the upgrade, read the confirmation carefully, and then decide whether to proceed.
In the same settings page, set Journal folder to the vault-relative folder that contains your Daily Notes. Examined Human searches its subfolders too, so a value such as Journal can cover folders like Journal/2026/daily.
Leave the field blank only if you intentionally want the vault root to be the Journal folder. The recommended Daily Note filename is YYYY-MM-DD.md.
The recommended Form discovery option is Only unimported EH Form notes. It lets you explicitly tell Examined Human which notes to inspect and avoids scanning unrelated Markdown.
The alternative, Every note in Journal folder, also considers unmarked notes in the Journal folder. It can be useful during migration, but it is broader and may be slower in a large vault.
EH form to note metadataFor the recommended discovery mode, put this YAML frontmatter at the very top of every note that contains a form:
---
EH form: unimported
---
EH form: true is also accepted. Matching is case-insensitive.
The marker tells the plugin that the note is ready to be discovered:
unimported or true: inspect this note.imported: its importable Daily, Weekly, and Medical Forms are complete.false: deliberately ignore this note.After all eligible Daily Forms (past or today), Weekly Forms, and Medical Forms in a note have been imported, Examined Human normally changes the marker to imported. Budget imports and mutable planning updates do not change it because those plans remain editable.
The repository includes both explained and minimal versions:
Medical Forms are also available:
All eight forms also have Persian versions and a Persian usage guide. Persian names, notes, explanations, and examples are supported. Parser keywords, section headings, command/type codes, weekday labels, and numeric date/time syntax remain unchanged; the Persian guide explains these boundaries. This translates the templates, not the plugin interface or its calendar system.
The Daily templates group Medication and Symptoms under Medical, and Transactions and Valuation Rates under Financial. Existing databases need the confirmed Settings → Examined Human → General → Tools and maintenance → Update to schema v1 action before importing health entries. Read Health records for catalog setup, Medical import/reimport, and the plain records dashboard.
Start with the explained forms. Use the minimal forms after the entry formats feel familiar.
Copy the forms into your Obsidian template system or paste them into notes manually. If you do not use the Templater community plugin, replace EH form: <% "unimported" %> with EH form: unimported, and replace date expressions such as <% tp.file.title %> with the real ISO date yourself. Weekly start/end expressions must also be replaced with actual dates.
Keep these structural elements unchanged:
#### EH Daily Form, #### EH Weekly Form, #### EH Budget Form, or #### EH Medical Form heading;ENTRIES: markers;#### END marker.A note may contain one form of each kind. The form's internal dates determine what it represents; the filename alone does not.
The current Daily templates intentionally omit sleep_hours, calories, protein_g, studied, worked, and exercised. Those values are calculated during assessment and import, displayed in the report, and stored in the database without requiring duplicate manual entries.
An empty database knows the allowed general types, but it does not know the names from your life. Before logging sessions, create at least one engagement. Add the other kinds of records only when you intend to use their sections:
The quickest first seed is a Daily Form dated yesterday or earlier. Leave its ordinary sections blank and put your creation commands under Admin Events → ENTRIES:. For example, replacing these names and values with real ones:
ENGAGEMENT_CREATE | Learning Examined Human | practice | active |
ACCOUNT_CREATE | Cash | cash | USD |
EXERCISE_CREATE | Walking | cardio
FOOD_CREATE | Oats | grain | 389 | 16.9 | 66.3 | 6.9 | 0.01 | 10.6 | 0 | plain oats | [oatmeal]
If you only want to begin tracking time, the engagement row is enough. Do not invent nutrition figures for real foods; use values you trust.
Open the seed note, run Examined Human: Import Daily Form from Active File, review the validation preview, and confirm the import. Creation rows are staged evidence until this import succeeds.
The full Daily validator stages Admin Events in a disposable copy before resolving the rest of the form. This means the same form may create an engagement, food, account, exercise, medication, symptom, type, or alias and then use it in that day's entries. Import a setup Daily Form before importing a separate Medical Form that uses its new measurements or procedures. The real database is still changed only after confirmation.
You can later use the Command Center to prepare new records and aliases through forms instead of typing commands manually.
After your minimum seed import succeeds, you may want to explore immediately without filling your real history with experiments.
sandbox/EH-demo.db.Demo Project, Demo Cash, Demo Meal, and Demo Exercise.For health practice, follow the fictional health examples or the combined Medical/Daily review set. First stage and import the required catalog definitions in the temporary database; then import the example forms yourself. Do not import fictional health records into your real history. Your Journal folder and discovered notes do not become isolated just because you switch databases, so select only the intended demo notes.
The demo database is independent. Nothing seeded in your real database is automatically copied into it. You may keep the demo for later practice or delete it after switching back to the real database and verifying the connection.
Before regular use, review these settings:
0 keeps every Examined Human backup; a positive whole number keeps that many newest backups.On Obsidian 1.13 and later, Examined Human preferences are organized into searchable General, Nutrition, Financial, Styling, and Exercise pages. Older supported Obsidian versions render the same preferences as a single categorized page.
Examined Human deliberately separates preparation from import:
EH form marker or the broader Journal-folder mode.Dashboard buttons that say Stage do not finish an import. They add reviewable text to a chosen unimported Daily Form, which may be past, today, or future. A future form can receive staged changes, but cannot be finalized until its date arrives. The database changes only when the appropriate form import later succeeds.
A Daily Form can contain observed metrics, a general daily note, sessions, meals, medication, symptoms, transactions, valuation rates, exercise details, milestones, Stoicism notes, and Admin Events.
Session rows use either interval | engagement | notes for a typeless session or interval | type | engagement | notes when an explicit session type is needed. The four-field form may also leave the type field blank. Typeless sessions inherit their engagement type for calendar color. If the form contains Exercise Details, exactly one session must use type exercise; all of that form's exercises and sets attach to that session.
Calories and protein are calculated from every structured food row, including snacks, and are displayed to two decimal places. The plugin also derives studied, worked, and exercised from session/engagement types: study or course counts as study, work counts as work, and exercise or fitness plus structured exercise rows count as exercise. Sleep is calculated from matching sleep sessions during a configurable 24-hour assessment window, defaulting to 21:00 on the previous date through 21:00 on the assessed date; a session type, engagement type, or canonical engagement name of sleep qualifies. Split an overnight sleep into one session ending at 23:59 and another beginning at 00:00 on the next date.
If a same-form Admin Event creates a food or food alias used by Meals, use the full Daily import. The separate Meals-only action cannot persist the new food definition by itself and will instead tell you to import the Daily Form first.
Use Examined Human: Import Daily Form from Active File while the note is open, or work from Daily Assessment.
Edit the complete EH Daily Form for the date, then run Import Daily Form from Active File again or select the imported date in Daily Assessment and choose Reimport…. Both routes show the same red warning, the counts of old rows to remove, and the new assessment. Check the acknowledgement and choose Delete and reimport [date] only when the complete form is ready.
Reimport deletes all old daily records for the selected date and fills them anew from the new form. This is a complete replacement, not a merge. Anything missing from the form will be removed, including records added through another tool. A database backup is created first.
Replacement covers daily metrics, sessions and their exercise sets, transactions, meals and nutrition assessments, Stoicism entries, the day's milestones and measurements, valuation rates, Medication/Symptoms entries and recording states, and daily import/projection records. Separately imported Medical reports are retained. Old row IDs are discarded. Blank optional sections remove the corresponding old entries; the normal required form sections and validation rules still apply. Other dates are left alone.
Shared foods, engagements, accounts, exercises, aliases, and Weekly/Budget plans are retained. The Admin Events section must be empty during reimport. Remove previously executed commands before trying again: deleting those commands from the note does not undo their earlier shared changes. Apply new catalog changes through a separate, not-yet-imported Daily Form. If a milestone belonging to this day has measurements from another or unknown date, or another cross-date link is inconsistent, replacement is blocked until those links are resolved. Changing or removing a dated valuation rate can change financial displays for later dates that carry that rate forward.
The plugin validates the replacement in memory, creates a backup, and performs deletion and reinsertion together. Validation, stale-preview, WAL, or backup failures leave the old records intact. If the note or database changes after preview, review it again before confirming. Repeating a successful reimport replaces the day again rather than accumulating duplicate sessions, transactions, meals, or other entries.
If automatic cleanup removed the source form, restore it from your note history or write a complete replacement form before reimporting. Imported days remain available in Daily Assessment even when the note is marked EH form: imported; the active-file command also works without changing that marker. If the note has moved, mark its replacement unimported and use Discover forms, or use the active-file command directly.
A Weekly Form covers exactly seven days. It holds a direction, commitments, and a planning grid. Import it with Examined Human: Import Weekly Form from Active File or from Weekly Assessment.
Importing records the weekly plan, and its current or future sessions appear directly in the Calendar dashboard even when no Daily Notes have been created yet. The latest imported version of that week is the one the calendar uses.
Sync week is a separate, optional action that can copy current and future planned sessions into empty Daily Form Sessions sections. Use it only when you want those rows materialized in the notes; existing occupied sections are not silently overwritten.
Importing the same starting date again updates that week. Planned sessions remain intentions; completed time comes from historical Daily Forms.
A Budget Form describes targets and expected movements for a non-overlapping period of at least four days. Import it with Examined Human: Import Budget Form from Active File or from the Financial Dashboard.
Negative targets represent expected spending or liabilities; positive targets represent expected income or assets. Expected movements are plans only. They do not create transactions, reminders, or notifications.
Importing the same start and end dates again updates that budget.
The Command Center manages your canonical foods, engagements, exercises, accounts, health catalogs, aliases, and valuation rates. Its actions are intentionally staged into a selected unimported Daily Form so you can read the exact change before importing it.
The Financial Dashboard uses the same pattern for opening balances and reconciliations: it stages a normal, clearly marked transaction in a Daily Form. The Daily Form import is the step that applies it.
Medical Forms and Daily Medication/Symptoms use the plugin's normal review-and-confirm import workflow. New databases are ready for them. For an older database or an earlier medical review build, open Settings → Examined Human → General → Tools and maintenance → Update to schema v1, review the upgrade, and confirm. It creates a verified backup and enables the current health features, including removal of the old People setup. Loading an updated plugin does not upgrade your database automatically. Technical migration details are in DEVELOPMENT.md.
Each vault represents one owner; use separate vaults for different people's records. There is no People catalog or person field to set up.
Open Command Center → Health to inspect existing measurements, symptoms, medications, procedures, units, value types, and aliases. Search by name, alias, unit, or measurement type. Choose Add or Edit and stage, fill the required fields, then review and stage the command into an unimported Daily Form. Finally import that Daily Form and confirm its preview to apply the catalog change with a backup. Staging alone does not change the database. New medications and symptoms may be used elsewhere in that same Daily Form. An already-imported Daily Form must have empty Admin Events for reimport; stage new catalog changes in an unimported form instead.
EH form: unimported metadata and its Admin Events → ENTRIES: area. A setup-only Daily Form may leave its ordinary entries blank.| Catalog | Required fields | Optional fields |
|---|---|---|
| Measurement | Canonical name; value type number, qualitative, or text; unit for number only |
Aliases |
| Medication | Canonical product name; dose unit | Aliases |
| Symptom | Canonical name | Aliases |
| Procedure | Canonical name | Aliases |
The editor accepts one alias per line. Use equivalent spellings for the same record, not different medicines, strengths, body sites, or tests. Names cannot contain a pipe or line break; editor aliases also cannot contain commas or square brackets. Names and aliases resolve case-insensitively within their catalog. A health UPDATE replaces the complete alias list: retain every alias you still want; leaving it empty clears the list. There is no Health delete action in this build.
A measurement requires a name and a number, qualitative, or text value type. Numeric measurements and medications also require a canonical unit; qualitative/text measurements have no numeric unit. Symptoms and procedures need only a canonical name. Aliases are optional, one per line in the editor; an update replaces the complete alias list shown. The importer resolves names and aliases; it does not infer units or convert quantities. Previously imported unit/type snapshots remain unchanged. Existing review databases need the Settings medical migration once to remove the old owner fields; new databases already use this single-owner setup.
Command Center generates these rows for you. For manual entry or Batch staging, put them below Admin Events → ENTRIES: in a Daily Form, not in the Medical Form. Names below are placeholders, not a ready-made catalog.
MEASUREMENT_CREATE | name | value_type | unit | [aliases]
MEASUREMENT_UPDATE | existing measurement | new_name | value_type | unit | [aliases]
MEDICATION_CREATE | name | dose_unit | [aliases]
MEDICATION_UPDATE | existing medication | new_name | dose_unit | [aliases]
SYMPTOM_CREATE | name | [aliases]
SYMPTOM_UPDATE | existing symptom | new_name | [aliases]
PROCEDURE_CREATE | name | [aliases]
PROCEDURE_UPDATE | existing procedure | new_name | [aliases]
For UPDATE, the existing name may be a canonical name or a unique alias. Keep all fields, including blank units for qualitative/text measurements and the final alias field. Use [alias one, alias two] in command rows; an empty alias field or [] means no aliases. CREATE also accepts omission of its final alias field. There are no People commands.
These fictional setup commands illustrate the empty fields. Import them only in a disposable database:
MEASUREMENT_CREATE | Demo glucose | number | mg/dL | [Demo blood sugar]
MEASUREMENT_CREATE | Demo imaging impression | text | | []
MEDICATION_CREATE | Demo medicine 10 mg tablet | tablet | []
SYMPTOM_CREATE | Demo headache | [Demo head pain]
PROCEDURE_CREATE | Demo ultrasound | []
Full Daily validation applies these commands before resolving that form's health rows. They are not applied by a Medical import, a Meals-only import, or the Calendar's session projection. After a successful Daily import, remove already-executed Admin Events before any full-day reimport; their catalog changes remain in place. Stage later changes in another unimported Daily Form.
Open a source note and run Import or reimport Medical Form from Active File. The preview shows its title, dates, section states, measurements, units, notes, and procedures. Confirmation creates a durable import with a backup; the Markdown form is retained. Reimport from the same source note replaces that report after an explicit acknowledgement. Omitted measurements and procedures are deleted; other reports and shared catalogs are retained. The preview counts the old rows being replaced. Changed source text, a stale database snapshot, uncheckpointed WAL, or backup failure blocks persistence.
The source note path identifies an imported report. To move the note, obtain its ID from Medical Dashboard and add report id: ID to its header before reimporting from the new path. The ID must identify an existing native import. Reusing a source document already attached to another native report is refused; reports are never matched merely by title or date.
A Medical report does not require a Daily Form for its report date, a session, or an engagement. Its catalog definitions must already exist. Keep exactly one Medical Form per source note; that note may also contain a Daily, Weekly, or Budget Form, but each form has its own import action. Completing only the Daily import does not import the report. Medical source forms are always retained automatically.
Medical Dashboard lists imported EH Medical Forms only in a left-hand navigator. Select a report to see its measurements and procedures in imported order. Long report names wrap; the navigator scrolls vertically only. There are no charts or laboratory-category groupings. The list is newest first and paginated at 50 reports. Daily medication and symptoms stay in Daily Assessment and the Calendar's Daily Log view. Refresh rebuilds the shared database boundary and preserves the selected report and scroll positions; background updates show a notice until you refresh.
Four fictional manual-import examples and catalog setup instructions cover a laboratory report, an imaging report, a Daily Form with medication/symptoms, and a Daily Form with explicit none. Use a disposable database for those examples.
The Medical Dashboard review set contains five unimported source notes dated October 20–25, 2026. Each note pairs a Daily Form with a Medical Form so both dashboards can be reviewed, including explicit none, unrecorded sections, repeated results, and imaging findings.
The collection workflow has two parts:
none records an absence.The scope is high-quality collection: preserve identities, observations, context, dates, and source material. Report generation and interpretation are outside this collection design.
Current Daily Forms group their entries as follows. Older flat ##### Medication, ##### Symptoms, ##### Transactions, and ##### Valuation Rates headings remain readable, but do not duplicate a section in both formats.
##### Medical
###### Medication
ENTRIES:
###### Symptoms
ENTRIES:
##### Financial
###### Transactions
ENTRIES:
###### Valuation Rates
ENTRIES:
The sections appear in both Daily Form templates:
| Section | Entry format | Meaning |
|---|---|---|
| Medication | time (hh:mm) | medication | amount | notes |
One dose actually taken; its canonical medication definition supplies the amount's unit. |
| Symptoms | time (hh:mm) | symptom | notes |
One symptom occurrence, with its context in the person's own words. |
Every field in these rows is required. Times use 24-hour HH:mm; medication amounts must be positive numbers; names can be canonical names or aliases. Notes hold context such as route for medication, or onset, duration, severity, and interference with work for symptoms. There is no separate symptom severity field and no optional-column variant. Use none in a notes field when there is no additional context. Missing facts must not be filled with guessed times, identities, or amounts.
Medication must be defined in the Medications catalog with a dose unit. Each canonical record requires a name and one dose unit, such as tablet, mL, or mg, and identifies the product's strength and formulation where relevant. Aliases point to the same canonical medication record. A bare medication name without a defined unit is insufficient for recording an amount.
For a product named Example medicine 10 mg tablet with dose unit tablet, an amount of 1 means one tablet, not one mg. An alias must identify the same product, not silently combine different strengths or formulations. The entering person or agent checks the canonical unit, converts only when the conversion is established, and retains the original amount and unit in notes when converted. Resolve missing catalog records or units instead of guessing. The stored intake record retains the unit used at entry so a later catalog edit cannot relabel historical doses. Prescriptions, planned doses, and skipped doses do not belong in Medication.
The symptom catalog groups equivalent symptom names while retaining each entry's original notes. Headaches, runny nose, abdominal pain, drowsiness, brain fog, and everyday allergic symptoms or reactions belong here. A clinician's documented finding belongs in the Medical Form for that report. Repeated occurrences can have separate timestamped rows. Use Command Center → Health to stage canonical health records and aliases as Daily Admin Events, then confirm a full Daily import.
For example, these are symptom rows:
10:30 | Headache | Started while working; distracting, but I continued.
14:15 | Brain fog | Felt fuzzy and struggled to follow my reading.
To explicitly record a symptom-free day, write:
##### Medical
###### Symptoms
ENTRIES:
none
The same standalone none in Medication means no medication was taken that day. It must be the only entry in that section. An empty or omitted section means unrecorded, never none, zero, or a negative observation. The two sections are independent. A none used inside a row's notes field means only that there are no additional notes.
Use the explained Medical Form or the minimal Medical Form. It begins with #### EH Medical Form, has one Measurements section and one Procedures section, and ends with #### END. There are no separate sections for Vital Signs, Conditions, or Allergies.
The header records shared context once:
| Field | Definition |
|---|---|
report |
Required: a descriptive title for this source report or consultation record. |
performed |
Sample collection, examination, or treatment date; use YYYY-MM-DD, optionally followed by HH:mm. A report covering several days can use YYYY-MM-DD to YYYY-MM-DD. |
reported |
Date the report was issued or the clinician documented the findings, optionally followed by HH:mm; distinct from when it was received or entered. |
report id |
Blank on initial import; use the stored report ID when reimporting a moved source note. |
source |
Vault-relative path to the original report or consultation note. |
Unknown header dates or an unavailable source path stay blank. A filename is not evidence of when a sample was collected. When a hospital summary or another complex report contains entries from different dates, preserve each known date, time, page, or location in the relevant row's notes. Do not assign the report's issue or discharge date to every measurement or procedure. Keep the source document available for details that are not extracted.
Measurements use measurement | value | notes. A measurement is the thing observed; its catalog definition supplies a canonical name, aliases, accepted value type, and a unit when applicable. A value is the result recorded for this observation. The word value includes qualitative and textual results as well as amounts.
| Example measurement | Example value | Intended value type |
|---|---|---|
| Systolic blood pressure | 118 |
Numeric, in the catalog unit. |
| Blood in urine | no |
Qualitative. |
| Urine protein | trace |
Qualitative. |
| A laboratory measurement | <0.01 |
Numeric with its comparison operator preserved. |
| Chest X-ray impression | Written conclusion from the report | Text. |
| Clinician assessment | The clinician's recorded assessment | Text. |
The examples describe entry shapes, not facts about a user. Accepted values depend on the measurement. No, negative, trace, indeterminate, and not performed must retain their distinct meanings where applicable; do not force them into numeric zero or infer them from a missing result.
For numeric measurements, the entering person or agent converts the source value into the catalog's unit when the conversion is established. Preserve the original value and unit in notes when converting, and retain the source report's reference range and flag when supplied. Resolve uncertain conversions instead of guessing. The database record snapshots the unit used at import so later catalog edits cannot relabel historical values. A bare number alone cannot prove that a conversion was correct.
Use separate rows for each component result of a panel such as a CBC. Preserve distinctions such as left/right or specimen when they identify different measurements; aliases must not collapse different measurements. Multiple observations of the same measurement in one report remain separate rows, with their dates and context in notes.
X-ray, ultrasound, endoscopy, and other narrative findings fit the same format: extract clearly identifiable measurements and preserve useful written findings or the report's impression as text-valued rows. Do not force every sentence into a number or yes/no answer. Long text may wrap visually in the editor; retain the original report for the full narrative. Keep each row on one physical line. Encode a literal pipe as \|, a line break inside a field as \n, and a literal backslash as \\. All row fields must be nonempty; none in a notes field means no additional context.
Procedures use procedure | notes. The canonical procedure name or alias identifies what was done; notes retain its known date, time, site, laterality, and other context. Examples include chest tube insertion, chest tube removal, endoscopy, and ultrasound. Findings from those procedures belong in Measurements in the same form. A recommendation or order must not be entered as though the procedure was performed.
Leave an unrecorded Medical section blank. A standalone none is an explicit assertion of no entries for that section and must not be mixed with rows. A negative value in one measurement row applies only to that measurement. Further sections and additional columns are unnecessary for the agreed collection workflow.
Examined Human checks for database changes in the background. These checks leave the page you are reading in place. If the database or the note being assessed changes, the tab shows Updated data available (or Source note updated) with a Refresh button. You can finish reading before loading the changes. Unchanged checks stay invisible.
Choosing Refresh reloads the database and all open EH tabs while preserving their scroll positions, including assessment timelines and sidebars. The Calendar also keeps its exact horizontal position. Your own confirmed import actions still refresh the open tabs when they finish. A source notice concerning a WAL checkpoint means you must first close or checkpoint the external database writer before refreshing.
After an import succeeds, you have three valid choices:
Medical Forms have no automatic cleanup switch: import always retains them. You may remove a Medical source note manually, but its dashboard link will no longer reach the original note and you will need to reconstruct the complete form to reimport it. Keep the original attached report independently. Cleanup of an imported Weekly plan does not remove its stored future Calendar sessions.
Remove source material only after confirming that the import succeeded and the information appears correctly. Deleting an unimported form also discards staged changes that have not yet been applied. If automatic cleanup notices that the form changed after validation or cannot identify one exact block, it safely leaves the note untouched; the completed database import is not falsely reported as failed.
Select the Stoic portico icon in Obsidian's right sidebar to open the Examined Human dashboard navigator. It is added when the plugin loads; the matching ribbon icon and Examined Human: Open dashboard navigator command also reveal it.
Each dashboard has a simple Lucide line icon and a colored selection accent. Select its name to replace the dashboard in the current EH tab. If the main tab contains a note, another plugin, or a pinned dashboard, EH opens a new tab instead. Selecting the dashboard already visible keeps its current display.
To open an additional tab, Ctrl-click on Windows/Linux or Cmd-click on macOS, middle-click, or use the ↗ button beside the dashboard name. The same ↗ button is always available on mobile. The mobile sidebar closes after a selection so you can see the dashboard.
The small summary above the list shows recorded time as hh:mm, the number of sessions and participating engagements, and recorded days across all history through today. It counts canonical session records; planned sessions are excluded. Background changes show an update notice until you refresh. The refresh button rereads the selected database and refreshes all open EH views.
Dashboard commands remain available in the Obsidian command palette, prefixed with Examined Human:. Each dashboard-opening command opens a separate tab, even when that dashboard is already open.
The calendar shows sessions on a horizontally scrollable sequence of days and a vertical 24-hour timeline. Past days use canonical imported sessions. Future days use only sessions stored from the latest imported Weekly Form, so future Daily Notes cannot accidentally change the plan. Today combines the eligible Daily Form (or today's canonical import) with the Weekly Form: Daily intervals win conflicts, while non-overlapping Weekly sessions remain visible. Click a session for its exact time, duration, type, notes, exercise details, milestones, and any data-quality warning.
Use it to answer: When did I spend time, and what did I spend it on?
Click a date heading such as SAT Oct 24 to open its Daily Log in a pop-up over the Calendar. It uses the same Daily Assessment report, including medication and symptoms, with no import, reimport, Meals import, or correction controls. The bottom note directs imports to Daily Assessment. Imported days show stored records; pending Daily Forms show their validated preview. The requested date is retained even outside the recent-note list. Closing the pop-up returns to the unchanged Calendar and its scroll position.
On wider desktop panes, the day timeline uses the Calendar's configured desktop day width, with only the Time by engagement/session type summary on the right. Long time summaries scroll within that section. Foods, finance, exercises, medical entries, and notes remain full width below. Narrow panes and phones retain the full-width stacked report.
The time chart can switch between Time by engagement and Time by session type, both here and in the active-file import preview. Session-type grouping uses the explicit session type, falling back to the engagement type when blank. Related types are combined: academic/course/certification/exam time becomes Study; career/startup time becomes Work; authorship/article/book/speech time becomes Writing; fitness becomes Exercise; relationship becomes Social; and Chore joins Maintenance. Reading, Research, Thinking, Practice, Meditation, and Leisure stay separate. An engagement named exactly Sleep always has its own Sleep category. This changes only the chart, not stored records or the inferred daily activity flags; totals use hh:mm.
Daily Assessment lists discovered forms and imported days, newest first. It previews and validates Daily Forms, imports past dates or today, offers explicit full-day reimport for imported dates, refuses future dates, and displays the same report used by the active-file import command. That report includes manual and inferred metrics, the session calendar, foods with nutrient totals, transactions with unit totals and valued net flow, exercise sets, and notes. Hard validation errors hide the report and expose the available resolution actions first.
When a form refers to an unknown engagement, food, exercise, or account, Daily Assessment can help stage the missing canonical record or alias into that unimported note. Revalidate after staging.
Use it to answer: Is this day ready to import, and what exactly happened that day?
Weekly Assessment shows the week's direction, commitments, planned sessions, actual time by engagement, and planned-versus-actual differences. For current and future weeks, it can preview and sync the planning grid into empty Daily Form Sessions sections.
Use it to answer: What did I intend to do this week, and where did the week actually go?
The Engagement Dashboard brings everything about one engagement together. Search by its canonical name or an alias, choose a date range, and review its status, dates, session time, activity trend, session types, recent sessions, lifetime milestones, linked financial totals, and transaction ledger.
Use it to answer: What is the complete story of this project, relationship, practice, course, or goal?
The Financial Dashboard shows balances as of a selected date, account and net-worth history, period inflow and outflow, financial activity by engagement, recent transactions, active budget targets, and expected movements. You can inspect one account or all accounts and use native units or your configured valuation view when rates are available.
It can also stage an opening balance or reconciliation into a Daily Form. A period's net flow is activity during that period; it is not the same thing as an account balance.
Use it to answer: What do my accounts show, how did money move, and how does that compare with the plan?
The Nutrition Dashboard shows calorie and protein trends, meal and food breakdowns, diet adherence, data coverage, and leisure-meal debt for assessed days. Snacks contribute to daily calories but do not count directly as one of the three main meal opportunities.
Use it to answer: What did I eat, how complete is the evidence, and am I following the rules I configured?
The Exercise Dashboard shows training days, workout time, detail coverage, exercise volume, performance maxima, distance, measured duration, muscle exposure, and recent workouts. Ordinary exercise sessions still appear even when you did not record structured sets.
Use it to answer: How consistently am I training, and what does the recorded performance show?
The Command Center is the maintenance workspace for engagements, foods, exercises, accounts, health catalogs, aliases, valuation rates, and batches of Admin Events. Search existing records, prepare changes, choose an unimported Daily Form, review the proposed rows, and stage them. Its Health tab lists measurements, symptoms, medications, and procedures with their names, units, types, and aliases. Add or edit there to stage the corresponding Daily Admin Events. Raw Admin Events can also maintain the type vocabularies with SESSION_TYPE_ADD, SESSION_TYPE_REMOVE, ENGAGEMENT_TYPE_ADD, and ENGAGEMENT_TYPE_REMOVE; removal deactivates a type for new input without deleting historical references.
Use it to answer: What canonical names does my system know, and what correction should I stage next?
Choose Medical in the EH sidebar or run Examined Human: Medical Dashboard. The left-hand navigator lists only imported EH Medical Forms, newest first, with up to 50 reports per page and vertical-only scrolling. On narrow screens the navigator moves above the details. Select an item to replace its details in place; this does not open a separate tab.
A report shows its report ID, dates, recording states, measurements, raw values, original units, notes, and procedures. A Daily medical log shows actual medication intakes, dose units, symptom occurrences, and the distinction between none and unrecorded. Rows retain their imported order rather than being alphabetically regrouped. Open source note opens the source note; Refresh reloads all EH views while preserving selection and scroll positions. Unimported source forms do not appear as imported records, and the dashboard does not currently provide trends, charts, laboratory categories, or medical interpretation.
Use it to answer: What did this report or Daily medical log actually record, and where is its source?
EH form: unimported in its frontmatter.Use Examined Human: Reload EH.db and refresh all dashboards whenever you want every open view to reread the selected database immediately.
For a manual installation, confirm that .obsidian/plugins/examined-human/ contains main.js, manifest.json, and styles.css directly—not inside another nested folder. Reload Obsidian and check that the plugin is enabled under Community plugins.
Confirm that the Database path ends in .db, is relative to the vault root, and points to the database you intended. For a new installation, create the database before testing it. For an existing database, make sure the file is actually inside this vault.
Check all four boundaries:
EH form: unimported or EH form: true at the top;#### END.If you chose Journal-folder discovery, also verify the configured Journal folder. If you chose the recommended marker-based mode, the form can be anywhere in the vault.
Sessions and plans need a known engagement; transactions also need a known account; meals need a known food; structured exercise rows need a known exercise. Correct a misspelling, use an existing alias, or stage the missing canonical record through Daily Assessment or Command Center, then revalidate.
A full Daily Form may create the missing record or alias under Admin Events and use it elsewhere in that same form. If the Daily report accepts it but the separate Meals panel says Import Daily first, use the main Daily import so the canonical food and meal are committed together.
Use three fields for an ordinary session: interval | engagement | notes. Use four fields only when you need an explicit session type: interval | type | engagement | notes. Typeless sessions inherit the engagement type for calendar color. The older blank-type form, interval | | engagement | notes, is also accepted. Weekly planning-grid cells use semicolons and still reserve their first position for an optional type: ; engagement ; notes.
That is expected. A Daily Form can be finalized only for today or a past date. Future Calendar sessions must come from an imported Weekly Form; wait until the Daily Form's date before importing it as canonical fact.
Close or finish the write in the other SQLite application, then use Examined Human: Reload EH.db and refresh all dashboards. Do not replace the database file while another application still has unfinished changes.
The general connection test and the optional health feature have different requirements. Run Settings → Examined Human → General → Tools and maintenance → Update to schema v1 for the selected database, review and confirm, then refresh. Earlier medical review databases also need this action to remove their old People fields. New databases need no separate health upgrade. The current Daily templates contain Medical sections, so an older database requires the upgrade even when those sections have no entries. If the action says the database is already current but Health still fails, check the selected database path and reload the plugin.
Staging changes only the selected note. Open that Daily Form and complete its confirmed Daily import, then refresh Command Center. A new medication or symptom can be defined and used in that same Daily import. A separate Medical Form must wait until its setup Daily Form is imported. Future-dated setup forms cannot be finalized yet; use an unimported form dated today or earlier if the definition is needed now. Check that setup and report imports use the same selected database.
Create one from the Daily template, set a valid date and EH form: unimported, and ensure the discovery mode includes its location. Use Discover forms if needed. Keep an Admin Events section with a standalone ENTRIES: marker. An already-imported day is not a target for new Admin Events; use a different unimported day. The picker also omits unimported dates earlier than your earliest imported day; use a suitable later date (today works if it has not been finalized).
Use Daily Medication for actual doses taken and Daily Symptoms for experiences such as a headache or reaction. Use one Medical Form for one source report or consultation, including all of that report's findings and performed procedures. A panel with many results is still one report; a written imaging impression is a text-valued measurement. Define the appropriate catalog records through Command Center first. Do not use blank or none to invent a negative finding, and do not enter prescriptions as actual doses taken.
No automatic conversion or rewriting occurs. Imported measurements keep their unit and value-type snapshots; medication intakes keep their dose-unit snapshots. Catalog names and aliases are shared, so renaming a canonical record can change its displayed name on older entries. For a genuinely different medicine, strength, formulation, test, or unit convention, prefer a distinct canonical record rather than relabeling one identity. Review the unit before entering or reimporting any amount.
Refresh and check the selected database. A Daily medical log appears only after the full Daily Form is imported and at least one health section contains rows or explicit none; a day with both sections unrecorded has no entry in this list. A Medical Form requires its own separate import even when its source note also contains an imported Daily Form. Use Older and Newer when more than 50 records are available. Staged catalog definitions and unimported notes are not imported medical records.
The Health catalogs command now opens Command Center → Health; the old direct-save dialog has been replaced by normal Daily staging. People selection has been removed. Each vault represents one owner; keep another person's records in a separate vault.
Use the ↗ button beside a dashboard in the EH sidebar to open a new tab on mobile or desktop. Normal selection reuses an unpinned EH dashboard tab. Update notes appear after a changed review-build notice and can also be opened from Settings. The notice is width-limited on laptops and scrollable on smaller screens; dismissing it does not change any records.
Keep independent vault backups, especially before connecting or upgrading an existing database.
Examined Human does not provide reminders, notifications, automatic exchange rates, market-price fetching, recurring transactions, recurrence rules, calendar synchronization, or automatic repair of ambiguous old data. Sessions that cross midnight must be split across two dates.
Medical import supports recorded findings and procedures; it does not provide clinical interpretation, automated unit conversion, OCR, or image analysis.
These limits keep the system focused on deliberate recording, reviewable plans, and evidence you control.
Build instructions, validation commands, repository structure, database and import architecture, safety invariants, and release guidance are in DEVELOPMENT.md. User-visible release history is in CHANGELOG.md.
This project began as a fork of seonggoos/obsidian-schedule-calendar. Its Obsidian view scaffolding and overlap-layout foundation were adapted for a different data source and interaction model.
MIT — Copyright (c) 2026 seonggoos and Copyright (c) 2026 OssAhmad.