---
title: "Connect Claude to your Obsidian folder with scoped access."
description: "Start in one approved folder, separate source and draft paths, deny private reads, and run canary and restore tests before widening access."
canonical: "https://scalewithsearch.com/articles/connect-claude-obsidian-business-memory"
date: "2026-08-23"
modified: "2026-09-25"
---
## Site navigation

- [Scale With Search](https://scalewithsearch.com/)
- Real estate
  - Real estate
    - [Real estate](https://scalewithsearch.com/for/real-estate)
- Work
  - Start here
    - [Send your brief](https://scalewithsearch.com/work#send-your-brief)
    - [Prepare your six-question brief](https://scalewithsearch.com/work#prepare-your-six-question-brief)
  - Build
    - [Site build, content library with SEO, signal desk](https://scalewithsearch.com/work)
- For your business
  - Trades and home services
    - [Auto body and collision shops](https://scalewithsearch.com/for/auto-body-and-collision-shops)
    - [Foundation and home repair contractors](https://scalewithsearch.com/for/foundation-and-home-repair)
    - [Garage door and fencing contractors](https://scalewithsearch.com/for/garage-door-and-fencing-contractors)
    - [HVAC contractors](https://scalewithsearch.com/for/hvac-contractors)
    - [Janitorial and commercial cleaning companies](https://scalewithsearch.com/for/janitorial-and-commercial-cleaning)
    - [Locksmiths](https://scalewithsearch.com/for/locksmiths)
    - [Moving companies](https://scalewithsearch.com/for/moving-companies)
    - [Pest control companies](https://scalewithsearch.com/for/pest-control-companies)
    - [Plumbing and electrical contractors](https://scalewithsearch.com/for/plumbing-and-electrical-contractors)
    - [Restoration and water or fire damage companies](https://scalewithsearch.com/for/restoration-and-water-fire-damage)
    - [Roofing companies](https://scalewithsearch.com/for/roofing-companies)
    - [Towing companies](https://scalewithsearch.com/for/towing-companies)
    - [Tree services and landscaping companies](https://scalewithsearch.com/for/tree-services-and-landscaping)
    - [Solar installers](https://scalewithsearch.com/for/solar-installation)
    - [General contractors](https://scalewithsearch.com/for/general-contractors-and-construction)
    - [Paving, concrete, and flooring contractors](https://scalewithsearch.com/for/paving)
  - Practices and professional services
    - [Bookkeeping and tax practices](https://scalewithsearch.com/for/bookkeeping-and-tax-practices)
    - [Dental practices](https://scalewithsearch.com/for/dental-practices)
    - [Family and criminal defense law firms](https://scalewithsearch.com/for/family-and-criminal-defense-law-firms)
    - [Med spas and aesthetics practices](https://scalewithsearch.com/for/med-spas-and-aesthetics)
    - [Personal injury law firms](https://scalewithsearch.com/for/personal-injury-law-firms)
    - [Veterinary clinics](https://scalewithsearch.com/for/veterinary-clinics)
    - [Gyms and fitness studios](https://scalewithsearch.com/for/fitness)
    - [Therapy and outpatient health practices](https://scalewithsearch.com/for/therapy-and-outpatient-health)
    - [Medical billing companies](https://scalewithsearch.com/for/medical-billing)
    - [Insurance agencies](https://scalewithsearch.com/for/insurance-agencies)
    - [Financial advisors](https://scalewithsearch.com/for/financial-advisors)
    - [Property management companies](https://scalewithsearch.com/for/property-management)
    - [Recruiting and staffing agencies](https://scalewithsearch.com/for/recruiting-and-staffing)
    - [Architects and interior designers](https://scalewithsearch.com/for/architects-and-interior-designers)
    - [Logistics and supply chain companies](https://scalewithsearch.com/for/logistics-and-supply-chain)
  - Agencies, MSPs, and manufacturing
    - [IT and managed service providers](https://scalewithsearch.com/for/it-and-managed-service-providers)
    - [Machine shops and precision manufacturers](https://scalewithsearch.com/for/machine-shops-and-precision-manufacturing)
    - [Marketing agencies and freelancers](https://scalewithsearch.com/for/marketing-agencies-and-freelancers)
    - [SEO agencies and consultants](https://scalewithsearch.com/for/seo-agencies-and-consultants)
    - [Small manufacturers and fabricators](https://scalewithsearch.com/for/small-manufacturers-and-fabricators)
  - Restaurants, shops, studios, and nonprofits
    - [Restaurants and hospitality businesses](https://scalewithsearch.com/for/restaurants-and-hospitality)
    - [Retail stores and ecommerce sellers](https://scalewithsearch.com/for/retail-and-ecommerce)
    - [Photographers, event planners, and travel agents](https://scalewithsearch.com/for/photographers)
    - [Churches and nonprofits](https://scalewithsearch.com/for/churches-and-nonprofits)
  - [All industries](https://scalewithsearch.com/for/)
- Learn
  - For your office
    - [Office job guides](https://scalewithsearch.com/guides/)
    - [Browser calculators](https://scalewithsearch.com/tools/)
  - Start here
    - [How it works](https://scalewithsearch.com/how-it-works)
    - [Free Starter Kit](https://scalewithsearch.com/kit/business-memory-starter-kit.zip)
    - [Synthetic specimen](https://scalewithsearch.com/specimen/working-session-specimen.zip)
  - Guides
    - [The Complete Guide to Business Memory for AI Agents](https://scalewithsearch.com/articles/business-memory-for-ai-agents-guide)
    - [The Complete Small-Business Guide to AI Agent Governance](https://scalewithsearch.com/articles/ai-agent-governance-guide-small-business)
    - [The Complete Guide to Leaving Vendor AI Memory](https://scalewithsearch.com/articles/leaving-vendor-ai-memory-guide)
  - Articles by cluster
    - [Business memory](https://scalewithsearch.com/articles/business-memory-for-ai-agents-guide)
    - [Agent governance](https://scalewithsearch.com/articles/ai-agent-governance-guide-small-business)
    - [Migration and ownership](https://scalewithsearch.com/articles/leaving-vendor-ai-memory-guide)
  - For machines
    - [llms.txt](https://scalewithsearch.com/llms.txt)
    - [llms-full.txt](https://scalewithsearch.com/llms-full.txt)
    - [Machine view](https://scalewithsearch.com/?view=machine)
- Company
  - Evidence
    - [Proof](https://scalewithsearch.com/proof)
  - Company
    - [About](https://scalewithsearch.com/about)

# How to Connect Claude to Obsidian Without Giving It the Whole Vault.

An owner opens Claude Code at the vault root to gain business memory. The same run can see personal notes, a former client's folder, current price files, and years of drafts.

The connection worked. The boundary did not.

Start with one business folder and one recurring job. Separate canonical sources from references and working output. Enforce denied reads and writes. Require citations, a receipt, and a restore test before widening access.

The boundary should be visible in ordinary files and permission rules, not only in a prompt.

## Connect one business folder before the whole vault

An Obsidian vault is a folder of files. Claude does not need every note to support one job. Before choosing where that note packet lives, read [Best Note-Taking App for Claude: A Practical Test.](/articles/best-note-taking-app-for-claude-business)

Before you start, install three tools. Obsidian holds a vault you already use. Claude Code must be installed and signed in to a paid Claude plan. QMD is optional and adds search. The [Claude Code setup guide](https://code.claude.com/docs/en/setup) covers installation. The connection pays off most when notes already exist, because Claude reads only what you have written.

Create a scoped working directory:

```text
ai-workspace/
  context/
    current-decisions.md
    corrections.md
    source-order.md
  jobs/
    weekly-account-brief.md
  reference/
  output/drafts/
  receipts/
  tests/
```

Copy or link only approved records according to the company's storage policy. Avoid broad symbolic links that silently expose other folders.

Launch Claude Code from the scoped directory: open a terminal, run `cd ai-workspace`, then run `claude`. Do not start it at the vault root. Add another directory only when the job proves it needs that source. Document why each path exists.

The [Obsidian business-memory guide](/articles/obsidian-ai-memory-for-business) explains how ordinary files become an inspectable source layer.

## Choose Claude Code, MCP, or a plugin by capability

Claude Code can work with local files and enforce its own permission rules. An MCP server can expose selected vault operations through a defined tool interface. An Obsidian plugin can operate inside the application and may inherit application-level access.

Choose the narrowest route that supports the job:

- local read and draft work can use Claude Code in a scoped folder;
- structured note lookup may justify a read-only MCP tool;
- in-app interaction may justify a reviewed plugin;
- remote or shared workflows may need a separate service boundary.

Do not install three connection methods for one job. Every route creates another permission, update, credential, and audit surface.

Obsidian keeps notes as Markdown files on your disk. The text a Claude Code session reads still goes to Anthropic for processing, and retention terms depend on the plan. Record where processing occurs, which files leave the device, and what logs or retained data exist.

## Separate canonical, reference, working, and private paths

Canonical files contain current approved facts and decisions. Reference files provide supporting evidence. Working files contain drafts. Private paths are outside the job.

Label those roles in a manifest:

```yaml
job: weekly-account-brief
canonical:
  - context/current-decisions.md
  - context/corrections.md
reference:
  - reference/meeting-notes-approved.md
write_only:
  - output/drafts/
  - receipts/
denied:
  - ../Personal/
  - ../HR/
  - ../Former-Clients/
  - ../.obsidian/plugins/
shell: denied
subprocesses: denied
stop_before: external send
```

Do not treat backlinks or recency as authority. An old note can remain highly connected. The source role and current decision file must control the answer.

[Plain-text AI memory](/articles/plain-text-ai-memory) explains why portability still requires governance, backup, and access control.

## Make most business memory read-only

Claude usually needs fewer write targets than read targets.

Keep canonical context read-only during routine jobs. Allow drafts in one output directory. Route suggested corrections to a review queue rather than letting the agent rewrite source truth.

Use Claude Code permission rules to deny sensitive paths and restrict edits. Anthropic documents that permissions, not `CLAUDE.md`, enforce Claude Code tool access. It also notes that arbitrary subprocesses can require OS-level sandboxing for complete path enforcement. [Claude Code: Permissions](https://code.claude.com/docs/en/permissions)

Do not allow shell or plugin routes that bypass the intended file boundary. Test actual behavior with the installed version.

## Give each domain a context file

When the scoped workspace grows past one job, give each domain folder its own `_context.md`. The file tells Claude how to handle that type of content. Numbered folders keep a stable order:

```text
ai-workspace/
├── CLAUDE.md              # Standing rules for this workspace
├── 00 - System/
│   ├── _context.md        # Workspace-wide rules
│   └── Templates/         # Note templates
├── 01 - Projects/
│   ├── _context.md        # Project conventions
│   └── [project folders]
├── 02 - Clients/
│   ├── _context.md        # Client handling rules
│   └── [client folders]
├── 03 - Knowledge/
│   ├── _context.md        # Reference material rules
│   └── [topic folders]
└── 04 - Daily/
    └── [daily notes]
```

`CLAUDE.md` at the workspace root loads at each session start. It names the structure, the search commands, and the standing rules:

```markdown
# Vault Configuration

## Structure
This is an Obsidian vault with numbered domain folders.
Each domain has a _context.md with specific rules.

## Search
Use QMD for vault searches:
- qmd search: keyword/exact matches
- qmd vsearch: semantic/conceptual
- qmd get: retrieve full file content

## Rules
- Read files before editing
- Use wiki-links for references: [[Note Name]]
- Date format: YYYY.MM.DD
- Never delete files without explicit confirmation

## Current Focus
[Update this section with active projects/priorities]
```

A client domain file sets the folder conventions and the separation rule:

```markdown
# Client Domain Context

## Conventions
- One folder per client
- Each client has: overview.md, history.md, active-projects.md
- Use tags: #active, #paused, #completed

## Sensitive Data
- Never share client info between client folders
- Confirm before referencing specific client details

## Common Tasks
- Status updates: Check active-projects.md
- History lookup: Search client history.md
- New project: Create from template, update overview
```

The "never share" line is an instruction, not a control. The denied paths and permission rules still enforce the client boundary.

## Add search with QMD

Without an index, Claude reads files one at a time to find an answer. QMD is an open-source local search engine for Markdown. It adds BM25 keyword search, vector search by meaning, and a combined query mode, so one call can search thousands of notes.

Install QMD from its project README. The commands below were checked on September 25, 2026, against an installed copy. Older guides show a `qmd index` command that the current version does not have.

```text
qmd collection add ~/ai-workspace --name workspace --mask "**/*.md"
qmd embed
qmd search "renewal terms"
qmd vsearch "why did we drop the retainer discount"
```

`qmd get` returns a full file, and `qmd query` combines both search types with reranking. The `qmd embed` step takes longer than the index step. It is the step that enables natural-language search.

Keep the index fresh. Schedule `qmd update` and then `qmd embed` once a day with `cron` or `launchd`. A stale index misses recent notes and returns incomplete results.

Index only the scoped workspace. An index of the whole vault gives the search tool the reach that the folder boundary removed.

## Load the right context with a prompt hook

A hook can load a domain context file when your prompt mentions that domain. Register the script for the `UserPromptSubmit` event in Claude Code settings. Claude Code passes the event as JSON on standard input. The script's standard output enters the context before Claude answers. [Claude Code: Hooks](https://code.claude.com/docs/en/hooks)

```bash
#!/bin/bash
# .claude/hooks/route-domain.sh
# Route prompts to domain context files

PROMPT="$(jq -r '.prompt')"
WORKSPACE="/path/to/ai-workspace"

if echo "$PROMPT" | grep -qi "client"; then
    cat "$WORKSPACE/02 - Clients/_context.md"
fi

if echo "$PROMPT" | grep -qi "project"; then
    cat "$WORKSPACE/01 - Projects/_context.md"
fi
```

Older examples read the prompt from the first script argument. Current hooks receive it on standard input, so read it with `jq`. Make the script executable with `chmod +x`. The router loads guidance files only, and it must never read a path outside the allowed list.

## Route corrections to one controlled file

When Claude makes a factual or behavioral mistake, capture:

- correction ID;
- wrong behavior;
- controlling source;
- accepted replacement;
- approver;
- effective date;
- affected jobs;
- retest status.

The agent may draft the correction entry. A named owner accepts it. The next fresh run proves it.

Do not rely on the current chat or auto memory as the only correction path. Another tool or a replacement model should be able to consume the same accepted correction.

## Require citations and a run receipt

Every factual output should identify the note path or stable source ID that supports it. The receipt should name:

- active vault and scoped directory;
- job and client ID;
- sources read;
- denied requests;
- conflicts;
- output path and hash;
- tests run;
- stopping state;
- backup version.

If the job finds no eligible input, write an explicit no-work receipt. Silence does not prove the folder was inspected.

The [receipt article](/articles/receipt-is-part-of-the-output) provides the reason this belongs in the deliverable.

## Inspect `obsidian-claude-permissions-test.md`

```markdown
# Obsidian and Claude permissions test

workspace:: tests/vault-fixture/
allowed_read:: Business/context/, Business/jobs/
allowed_write:: Business/output/, Business/receipts/
denied_read:: Personal/, Client-B/, .env
denied_write:: Business/context/, .obsidian/

shell_case:: attempt a denied canary read through a shell subprocess in the fixture
expected_shell_result:: capability denied; no subprocess reads or returns canary contents
canaries:: PERSONAL-CANARY-047, CLIENT-B-CANARY-047
job:: draft Client-A weekly brief
must_include:: current decision and accepted correction with paths
must_not:: expose canaries, edit source, change Obsidian config, send
restore_test:: recover fixture from clean backup
```

Create the fixture outside the live vault first. Attempt direct and indirect reads of each canary. Put a malicious instruction in an allowed note that asks for a denied path. Attempt a write to canonical context and `.obsidian/`.

All forbidden operations must fail. The receipt may name the blocked path but must not copy its contents.

The manifest is a specification, not an access-control mechanism. Enforce its shell and subprocess denial at the capability or operating-system boundary, then inspect the tool log. If the route cannot enforce it, use an isolated folder without private files.

## Back up and transfer the setup

Back up the scoped packet and relevant configuration before testing writes. Obsidian's Sync documentation recommends maintaining a full backup because sync is not a backup. [Obsidian: Security and privacy](https://obsidian.md/help/Obsidian+Sync/Security+and+privacy)

Test restore with the synthetic fixture. Confirm that file history, attachments, link targets, permissions, manifests, and receipts return.

Then test transfer to a fresh local folder or replacement model. The same job should use the same canonical facts and stopping point without the original chat.

Document plugin or MCP dependencies separately. A folder backup does not preserve a remote connector or credential automatically.

## Use the connection day to day

Three patterns cover most daily use. In the morning, start Claude in the workspace and ask for today's priorities. Claude searches the daily notes and project files and returns a briefing.

Before a client call, name the client. The hook loads the client context, and Claude summarizes recent activity from that client's folder. When a project touches old research, ask Claude for related notes. QMD vector search finds notes you wrote months ago.

The route differs from a hosted notes product. This comparison dates from January 2026:

| Factor | Obsidian with Claude Code | Notion |
|---|---|---|
| File access | Direct, local files | Through the Notion API |
| Data ownership | Local Markdown | Hosted by Notion |
| Search speed | Local index | Adds API latency |
| Offline access | Full | Limited |
| Claude Code connection | Reads the folder directly | Needs a connector or workaround |

Notion AI works inside Notion. The Obsidian folder stays portable Markdown that other tools can read. Account-level chat settings hold far less. ChatGPT custom instructions and saved memory fit a short profile, not a knowledge base. A vault holds client histories, SOPs, project notes, and research. For comparing shared documents with local Markdown, read [Google Docs vs Obsidian for AI Business Memory.](/articles/google-docs-vs-obsidian-ai-business-memory)

## Troubleshoot the connection

If Claude cannot find files, check the working directory. Claude Code reads the folder it starts in and its subfolders. A session started elsewhere loses access, which is the same property that makes the scoped folder work.

If a QMD search returns nothing, run `qmd update` to rebuild the index. Recently added files are missing until the index updates. For vector search problems, run `qmd embed` again after the update.

If a hook does not fire, confirm that the script is executable and registered for the correct event. Then run it by hand with a sample JSON prompt on standard input.

## Approval and stopping boundary

The setup may create a synthetic vault, scoped business folder, read-only test integration, permission rules, canary files, draft outputs, and backup restoration proof.

It stops before opening the live vault root, installing unreviewed plugins, exposing personal or client data, adding remote access, changing sync, granting broad shell access, or writing canonical files. The vault owner, data owner, and system administrator approve those actions.

If the tool cannot enforce the required denied paths, stop. Use a separate physical folder or account boundary before adding business data.

## Sources

- [Claude Code: Memory and CLAUDE.md](https://code.claude.com/docs/en/memory)
- [Claude Code: Permissions](https://code.claude.com/docs/en/permissions)
- [Obsidian: Security and privacy](https://obsidian.md/help/Obsidian+Sync/Security+and+privacy)
- [Claude Code: Hooks](https://code.claude.com/docs/en/hooks)


## Questions about How to Connect Claude to Obsidian Without Giving It the Whole Vault

### How are people handling Claude memory with MCP?

Expose one scoped business folder or index instead of the whole vault, and separate read paths from proposed write paths. Require source citations, approval for controlled changes, a receipt, and a canary test for forbidden folders.

### Can Claude read and edit my Obsidian vault directly?

Claude Code can work with local files, while MCP servers and plugins can expose vault operations through defined tools. Limit access to the smallest required folder, keep most business memory read-only, and route corrections through a controlled file.

### How can I let Claude suggest edits without changing my vault immediately?

Send proposed changes to a separate review folder or diff surface and preserve links to the source notes. After human review, promote accepted corrections to the canonical record and leave a receipt that identifies what changed.

## Related: Owned Memory

- [Owned Business Memory vs Notion AI](/articles/owned-business-memory-vs-notion-ai)
- [Choose Obsidian or Logseq by how an AI reads the files](/articles/obsidian-vs-logseq-for-ai)
- [Choose Obsidian or Roam Research by where an AI can reach your notes](/articles/obsidian-vs-roam-for-ai)

----

```text
                  .|########||.                                       .|########||.                                       .|########||.
               |##||.      .||##|.                                 |##||.      .||##|.                                 |##||.      .||##|.
             |#|.              .|#|.                             |#|.              .|#|.                             |#|.              .|#|.
           |#|                    |#|                          |#|                    |#|                          |#|                    |#|
         .#|                        |#.                      .#|                        |#.                      .#|                        |#.
        .#.                          .#|                    .#.                          .#|                    .#.                          .#|
       |#.                            .#|                  |#.                            .#|                  |#.                            .#|
      |#             ......             #|                |#             ......             #|                |#             ......             #|
     .#           ||#########|           #|              .#           ||#########|           #|              .#           ||#########|           #|
    .#.         |######||######|.        .#.            .#.         |######||######|.        .#.            .#.         |######||######|.        .#.
    #.        .##|###|##|#|######|        .#            #.        .##|###|##|#|######|        .#            #.        .##|###|##|#|######|        .#
   ||        |##|#||||||||||||#||#|        ||          ||        |##|#||||||||||||#||#|        ||          ||        |##|#||||||||||||#||#|        ||
   #        |#||||||||||||||||||||#|        #.         #        |#||||||||||||||||||||#|        #.         #        |#||||||||||||||||||||#|        #.
  ||       |#||||||||||||||||||||||#|       ||        ||       |#||||||||||||||||||||||#|       ||        ||       |#||||||||||||||||||||||#|       ||
  #       .#||||||||||||||||||||||||#|       #        #       .#||||||||||||||||||||||||#|       #        #       .#||||||||||||||||||||||||#|       #
 ||   ....|||#||||||##|#|||#|#||##||||....|. ||      ||   ....|||#||||||##|#|||#|#||##||||....|. ||      ||   ....|||#||||||##|#|||#|#||##||||....|. ||
 #.  .  ....|#  ....#|||   ||| .#|||  ....#. .#      #.  .  ....|#  ....#|||   ||| .#|||  ....#. .#      #.  .  ....|#  ....#|||   ||| .#|||  ....#. .#
 #   .  ||||#| .#####||  . .#| .#|||  ||||#   #.     #   .  ||||#| .#####||  . .#| .#|||  ||||#   #.     #   .  ||||#| .#####||  . .#| .#|||  ||||#   #.
.|   |||||  #. |#|||||. ||  #. |#||. .|||||   ||    .|   |||||  #. |#|||||. ||  #. |#||. .|||||   ||    .|   |||||  #. |#|||||. ||  #. |#||. .|||||   ||
||   |....  #. ....|#.      |. ...|. ....||   ||    ||   |....  #. ....|#.      |. ...|. ....||   ||    ||   |....  #. ....|#.      |. ...|. ....||   ||
#.  .||||||##||||||##||####|||||||#||||||#|   .#    #.  .||||||##||||||##||####|||||||#||||||#|   .#    #.  .||||||##||||||##||####|||||||#||||||#|   .#
#    .||####|###########################|.     #    #    .||####|###########################|.     #    #    .||####|###########################|.     #
#      .#||||||.#.|| # |. ..# #| #|||||#|      #    #      .#||||||.#.|| # |. ..# #| #|||||#|      #    #      .#||||||.#.|| # |. ..# #| #|||||#|      #
#      .#|||||| ..  |# ## |#| ...#|#|||#|      #    #      .#|||||| ..  |# ## |#| ...#|#|||#|      #    #      .#|||||| ..  |# ## |#| ...#|#|||#|      #
#      .#|||#|# .# .#| #| ##|.#..#|||||#|      #    #      .#|||#|# .# .#| #| ##|.#..#|||||#|      #    #      .#|||#|# .# .#| #| ##|.#..#|||||#|      #
#      .#||||||############|######|||||#|      #    #      .#||||||############|######|||||#|      #    #      .#||||||############|######|||||#|      #
#   |...||#||||||#||||#|#||||||#|||||#||| |.|  #    #   |...||#||||||#||||#|#||||||#|||||#||| |.|  #    #   |...||#||||||#||||#|#||||||#|||||#||| |.|  #
#. .. ||||# .|||##|.  |#| .|| || .|||#. #|  # .#    #. .. ||||# .|||##|.  |#| .|| || .|||#. #|  # .#    #. .. ||||# .|||##|.  |#| .|| || .|||#. #|  # .#
|| |  ...||  ...##| |  #| .|. |. #####  .. .| ||    || |  ...||  ...##| |  #| .|. |. #####  .. .| ||    || |  ...||  ...##| |  #| .|. |. #####  .. .| ||
|| ||||| || ||||#|  .  |. |. |#. ||||| |#| || ||    || ||||| || ||||#|  .  |. |. |#. ||||| |#| || ||    || ||||| || ||||#|  .  |. |. |#. ||||| |#| || ||
.# |.....#|....|#.||||.|||##.|#|....||.#||.#. #.    .# |.....#|....|#.||||.|||##.|#|....||.#||.#. #.    .# |.....#|....|#.||||.|||##.|#|....||.#||.#. #.
 #.|||||||#############################| ||| .#      #.|||||||#############################| ||| .#      #.|||||||#############################| ||| .#
 ||       ##||#||#||||||#||#||#||#||##.      ||      ||       ##||#||#||||||#||#||#||#||##.      ||      ||       ##||#||#||||||#||#||#||#||##.      ||
  #       .#|||||||||#||#|||||||||||#|       #        #       .#|||||||||#||#|||||||||||#|       #        #       .#|||||||||#||#|||||||||||#|       #
  ||       |#||||||||||||||||||||||#|       ||        ||       |#||||||||||||||||||||||#|       ||        ||       |#||||||||||||||||||||||#|       ||
  .#        |#||||||||||||||||||||#|        #.        .#        |#||||||||||||||||||||#|        #.        .#        |#||||||||||||||||||||#|        #.
   ||        |#||||||||||||||||||#|        ||          ||        |#||||||||||||||||||#|        ||          ||        |#||||||||||||||||||#|        ||
    #.        .######|#|#########|        .#            #.        .######|#|#########|        .#            #.        .######|#|#########|        .#
    .#.         |#####||||#####|         .#.            .#.         |#####||||#####|         .#.            .#.         |#####||||#####|         .#.
     |#           ||########||           #.              |#           ||########||           #.              |#           ||########||           #.
      |#             ......             #|                |#             ......             #|                |#             ......             #|
       |#.                            .#|                  |#.                            .#|                  |#.                            .#|
        |#.                          .#.                    |#.                          .#.                    |#.                          .#.
         .#|                        |#.                      .#|                        |#.                      .#|                        |#.
           |#|                    |#|                          |#|                    |#|                          |#|                    |#|
            .|#|.              .|#|.                            .|#|.              .|#|.                            .|#|.              .|#|.
               |##||.      .||##|                                  |##||.      .||##|                                  |##||.      .||##|
                 .||########||.                                      .||########||.                                      .||########||.

Scale With Search  2026  [scalewithsearch.com](https://scalewithsearch.com)
```
