# Different words. The same idea.

> Source: <https://terraphim.ai/how-tos/synonym-search/>
> Published: 2026-10-11 00:00:00+00:00

Your project brief says **risk**. Later, you search for **concern**. Terraphim connects the two so a change of wording does not hide the decisions you need.

The inspiration came from [Jason Fried’s original Write_On video](https://x.com/jasonfried/status/2105403067793584590) and its idea of “alternative control”. It prompted Alex Mikhalev to return to Terraphim Editor, a Rust/WebAssembly project he had abandoned two years earlier, with a clear purpose: connect wording alternatives to a reusable knowledge graph and carry that meaning into search.

[Try Terraphim Editor](https://terraphim.ai/editor/) · [Install for VS Code](https://marketplace.visualstudio.com/items?itemName=applied-knowledge-systems.terraphim-it) · [Read the narration](https://terraphim.ai/demos/synonym-search/transcript.txt)

In our community garden brief, timber might arrive late. The team has decided to keep a backup supplier. Add **Concern** as an alternative to **Risk**, then swap between them. The other wording stays attached to the document.

Open **Knowledge graph** from the Markdown export menu. The editor shows **Risk ↔ Concern** and its actual definition:

```
synonyms:: Risk, Concern
```

Download the graph and the clean text. This explicitly shares the document's authored synonym groups as a Terraphim thesaurus; it does not silently change your active role. The saved example contains **Risk**, with no literal occurrence of **Concern**.

Use the graph downloaded from that editing session:

```
terraphim-grep concern --thesaurus knowledge-graph.json --paths corpus -C 2 --search-only --json
```

The actual result contains three risk passages and their related decisions, with file and line locations. No generated answer is requested.

Replace `--search-only` with `--answer` for synthesis:

```
terraphim-grep concern --thesaurus knowledge-graph.json --paths corpus -C 2 --json --answer
```

The video shows the generated summary and its references to the same three passages. Decisions remain decisions: the source does not establish whether they have been carried out. Check the evidence alongside any generated answer.

Editing and local search use your local data. Optional synthesis sends the retrieved passages to your configured model provider.

This supplier brief says **Risk**. Search for **Concern** using its exported graph, and both retrieval and synthesis find the same three passages. The generated answer points back to the brief's decisions and actions.

*A 44-second replay of saved tool results in Kilo, with captions and no audio.* It shows the saved Risk/Concern alternative, source lines and cited summary. The Kilo skills are under marketplace review; this is a configured integration.

[Download the brief, graph and actual results](https://terraphim.ai/demos/kilo-synonym-search/kilo-synonym-search-example.zip) · [Kilo setup guide](https://terraphim-skills.md/docs/kilo/) · [Recorded versions and checksums](https://terraphim.ai/demos/kilo-synonym-search/manifest.json)

Keep the words that describe a concept in the note that owns it. In this example, **Risk.md** contains the actual `synonyms:: Risk, Concern` property and embeds the community garden brief. The separate brief still says **risk**, never **concern**. The search-results note contains saved passages, with no synonym definition.

[Download the Obsidian demo vault ZIP](https://terraphim.ai/demos/obsidian-synonym-search/obsidian-synonym-search-example.zip). Extract it, open the included `obsidian-demo/vault` folder as an Obsidian vault, and open `Notes/Risk.md`. Open `Search results/Concern search.md` alongside it to inspect the saved output. No community plugins are required.

To reproduce the retrieval, install [terraphim-grep v1.21.19](https://github.com/terraphim/terraphim-clients/releases/tag/v1.21.19), open a terminal in the extracted `vault` directory, and run:

```
terraphim-grep concern --thesaurus "Knowledge graph/baseline-role.json" --paths "Notes/Projects" -C 2 --json --search-only
terraphim-grep concern --thesaurus "Knowledge graph/knowledge-graph.json" --paths "Notes/Projects" -C 2 --json --search-only
```

The released binary returned **zero passages** with the baseline graph and **three exact risk-and-decision passages** with the exported graph, at lines 7, 10 and 13. The commands search only the project brief directory, excluding the concept definition and saved results. Inspect the [baseline output](https://terraphim.ai/demos/obsidian-synonym-search/evidence/before-sharing.json), [synonym output](https://terraphim.ai/demos/obsidian-synonym-search/evidence/with-synonym.json), [execution receipt](https://terraphim.ai/demos/obsidian-synonym-search/evidence/verification.json) and [file checksums](https://terraphim.ai/demos/obsidian-synonym-search/manifest.json).

Terraphim’s `synonyms::` convention uses Logseq-compatible Markdown property syntax. Obsidian’s native aliases use YAML `aliases`. This example supplies the same graph exported by the editor explicitly: saving a note does not automatically rebuild the graph or synchronise the vault. Search runs in the CLI; Obsidian displays the notes and saved results. The capture reruns local retrieval only; the video above shows the separate synthesis comparison.

Prefer linked blocks? Open the same garden project in Logseq. The **Risk** concept page owns the wording relationship and embeds the project brief. Its properties are:

```
alias:: Concern
synonyms:: Risk, Concern
```

`alias::` gives the page another name inside Logseq. Terraphim’s `synonyms::` property records the words connected by the exported search graph.

`graph` folder. If you use a Logseq version with file graphs, open that folder directly.
From a terminal in the extracted `graph` folder, run:

```
terraphim-grep concern --thesaurus baseline-role.json --paths pages/Projects -C 2 --json --search-only
terraphim-grep concern --thesaurus knowledge-graph.json --paths pages/Projects -C 2 --json --search-only
```

The first search returns **zero passages**. The shared synonym graph brings back **three decisions**: keep a backup supplier, reserve a covered area and keep a volunteer reserve list. The commands search only the project notes, leaving concept definitions and saved results outside the search.

Compare the [baseline](https://terraphim.ai/demos/logseq-synonym-search/evidence/before-sharing.json) and [synonym search output](https://terraphim.ai/demos/logseq-synonym-search/evidence/with-synonym.json), or follow the [download instructions](https://terraphim.ai/demos/logseq-synonym-search/README.md). The CLI reads the included Markdown files; Logseq 2.0 imports a copy into its database. Use the extracted folder for these commands. [File checksums](https://terraphim.ai/demos/logseq-synonym-search/manifest.json) are included.

`--answer` when you want a summary alongside the source passages.
Searching for **concern** returns no passages before the graph is shared. With the graph, it finds all three **risk** passages and their related decisions. Compare the saved results [before sharing](https://terraphim.ai/demos/synonym-search/released-before-sharing.json), [with the synonym graph](https://terraphim.ai/demos/synonym-search/released-without-synthesis.json), and [with a generated summary](https://terraphim.ai/demos/synonym-search/released-with-synthesis.json).

Then try the same steps with a pair of words from your own project notes.

The video uses a sample project brief and synthetic British English narration. The graph and search results are saved outputs from the demonstrated workflow. [Recording details](https://terraphim.ai/demos/synonym-search/manifest.json) and [versions, commands and file checksums](https://terraphim.ai/demos/synonym-search/reproduction.json) are available with the downloads.
