---
title: "How Obsidian Stores Data for AI Business Memory."
description: "See how Obsidian stores data in files you control. Build business memory with source roles, access boundaries, corrections, backup, and a cold-run test."
canonical: "https://scalewithsearch.com/articles/obsidian-ai-memory-for-business"
date: "2026-08-18"
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)

# Obsidian as Business Memory for AI Agents.

Your operations notes live in Obsidian. An agent can search the vault, so the first demo looks promising. Then it finds an old proposal, treats the retired price as current, and drafts a client update from the wrong folder.

The vault contained the information. It did not define authority for the job.

Obsidian can serve as an owned business memory layer because its notes are readable files in folders you control. It does not become business memory merely because an agent can search it.

The useful design adds source roles, current-state files, corrections, access boundaries, tests, and a stopping point.

## Know what Obsidian stores

Obsidian documents that it stores notes as Markdown-formatted plain text files in a vault. A vault is a folder on the local file system, and other editors can read and manage those files. [Obsidian: How Obsidian stores data](https://obsidian.md/help/Files%2Band%2Bfolders/How%2BObsidian%2Bstores%2Bdata)

That file model supports custody and portability. You can inspect the notes without asking a model to summarize them. You can copy a bounded folder into a test environment. You can version files with a suitable tool.

The local file model does not settle backup, permissions, source authority, or safe retrieval. Obsidian warns that syncing is not the same as backup and recommends a separate backup process. [Obsidian: Back up your files](https://obsidian.md/help/backup)

Start from those facts. Do not sell Obsidian as a complete agent system by itself.

The file model is also why Obsidian connects to a local agent with less work than many note apps. Obsidian is, in effect, a file browser that renders Markdown.

A comparison written in January 2026 contrasted three other stores. Notion keeps notes in a database, so an agent needs an API integration with authentication, queries, and parsing. That integration can break when the API changes. Evernote keeps notes in its own format, and an export to HTML or text loses structure. Apple Notes syncs through iCloud and offers no local file access for an agent. Claude Code needs only read access to the vault folder. The content still goes to the model's API during a session, so file access removes an integration layer, not the model provider.

## Give the vault one job first

Do not connect an agent to the entire vault on day one.

Choose one recurring result. For example: prepare a weekly account brief from current client records.

Create a bounded folder:

```text
Business-Memory/
  Accounts/
    ACCT-1001/
      _context.md
      decisions.md
      corrections.md
      task-brief.md
      sources/
      drafts/
      receipts/
```

The underscore in `_context.md` is a naming choice, not a security feature. The manifest and retrieval boundary must enforce which paths the job can read.

This is the practical next step after deciding [what context an agent should read](/articles/what-context-should-an-agent-read). The answer should be a named packet, not every note with a similar phrase.

## Inspect `_context.md`

The context file should be short enough to review. It should point to current records rather than copy every historical detail.

```markdown
---
account_id: ACCT-1001
record_owner: account_operations
verified_on: 2026.08.18
current_sources:
  - decisions.md
  - corrections.md
  - sources/current-scope.md
archive_role: evidence_only
task_brief: task-brief.md
stop_before: external_send
---

# Current account state

Use `decisions.md` for approved choices.
Use `corrections.md` for accepted behavior changes.
Stop if current sources conflict or required scope is absent.
```

The YAML frontmatter makes key fields easy to inspect and parse. The body explains the source roles in plain language.

Do not store secret values in the note. Reference an environment-variable name or credential manager entry when the runbook needs it.

## Route prompts from a root file

When Claude Code is the agent, a root `CLAUDE.md` file in the vault acts as the router. Claude Code reads it at the start of each session, in the CLI or in an IDE. The flow has eight steps:

1. Create the vault, a folder of Markdown files.
2. Write `CLAUDE.md` in the vault root.
3. Start a Claude Code session.
4. Claude Code loads `CLAUDE.md` at session start.
5. The prompt names a keyword, such as a client name or "project."
6. Claude Code checks the routing table in `CLAUDE.md`, which maps keywords to file paths.
7. Claude Code opens the matching context file.
8. The output uses both the root file and the domain file.

The root file states four things: who you are, what you do, how to communicate, and where to find more context. Be specific about time zone, role, and hours, because they affect deadlines and availability. A generic routing table looks like this:

```text
| Domain   | Context file             | Load when prompt mentions...     |
|----------|--------------------------|----------------------------------|
| Accounts | /Accounts/_context.md    | account, client, renewal         |
| Projects | /Projects/_context.md    | website, design, build, code     |
| Systems  | /Systems/_context.md     | template, proposal, procedure    |
```

Routing is cumulative. A prompt that names a client and a project loads both files. Group folders by domain, not by date, and name them by the words you use in prompts. You say "help me with the Harbor account," not "help me with client three." For a longer treatment of keyword routing across domains, read [how to route AI context across work, business, and personal domains](/articles/multi-domain-ai-context-architecture). For the root file itself, see the [CLAUDE.md template for business context](/articles/claude-md-template-business-context).

A note edit reaches the next session with no sync step. Add a note and a routing row, and Claude Code loads it when a prompt matches. Delete a note, and it stops loading. The routing table is an instruction to the model, not an access control. The manifest and retrieval boundary still decide what the job may read.

### Write context files as briefings

Write each context file as you would brief a new team member. State facts. "Mobile-first, no frameworks" carries more than "the client has expressed a preference for responsive layouts."

A client context file can hold:

```markdown
## Client: [Client name]
Business: Residential HVAC service company
Location: [City, state]
Services: Repair, seasonal maintenance plans, system replacement
Voice: Plain and practical. No scare tactics about safety.
Keywords: furnace repair, AC maintenance, heat pump, indoor air quality
Competitors: [Local HVAC companies]
Deliverables: 2 articles per month, 1 topical map per quarter
Pain points: seasonal demand swings, price comparison shoppers, need for education-first content
```

A project context file can hold:

```markdown
## Project: [Client] website redesign
Deadline: 2026-02-15
Status: In progress (design approved, awaiting content)
Tech stack: Static HTML, CSS, vanilla JavaScript
Hosting: Netlify
Brand colors: #1a1a1a (dark gray), #ff6b00 (orange accent)
Fonts: Inter (body), Space Grotesk (headings)
Pages: Home, Services, About, Contact, Safety Resources
Key requirement: Mobile-first, fast load times, no frameworks
```

With files like these, a content request uses the client's voice and keywords. A code request uses the real stack, not a generic framework example. An email names the right project and deadline. A question such as "What is my workload this week?" can draw on every domain the prompt names. A project started on Monday resumes on Thursday from the same files.

## Separate current records from history

An Obsidian vault often grows as a record of thinking. That is valuable. It also means old and current material can share words, links, and tags.

Keep current state in named files. Put meeting notes, transcripts, and previous drafts in history folders. Mark their role as evidence, not authority.

When an old note contains a candidate fact, create a review item. Confirm the fact against the current owner or system. Then promote the approved meaning into the current file with a source reference.

This keeps search from deciding policy. Retrieval finds material. The business record decides what governs.

## Use links for navigation, not authority

Obsidian links help people move through related notes. They can also help retrieval. A link does not prove that both notes have equal authority.

Write source roles explicitly. A current decision can link to the meeting note that produced it. The decision file remains controlling because the context manifest says so.

Avoid building a dense graph before the job works. A small folder with clear file roles is easier to test than a broad network of loosely related notes.

Claude Code does not follow `[[Note Name]]` links on its own. It reads each file independently. A line such as `Related notes: [[EmailTemplates]], [[ContentBriefFramework]]` still helps, because it tells the agent which files exist. A later request for "my standard email template" can then find `EmailTemplates.md`.

Tags work as search hints. A context file tagged `#client #active` lets the agent answer "Show me all active clients" with a text search for `#active`. The Dataview plugin is a display tool, but the frontmatter fields you add for it are plain text that the agent reads. A field such as `billing: monthly` answers a billing question without a separate lookup.

## Choose the retrieval route

An agent can receive Obsidian notes in several ways. A person may attach files. A local tool may read a folder. A search index may return selected passages. A connector may access synced copies.

Each route needs a contract:

- allowed root path;
- account or role identifier;
- included file types;
- excluded paths;
- maximum source age when freshness matters;
- source precedence;
- output path;
- receipt path;
- stopping conditions.

The route should return file paths with the content. A draft without source names is difficult to audit.

Routes differ in how many layers sit between the notes and the model. A plugin that connects ChatGPT to a vault works through the OpenAI API, with authentication, query limits, network delay, and rate limits. Claude Code on the same machine reads the folder directly. Both routes send content to a model provider. The direct route removes the bridge, not the provider.

## Run a first smoke test

Before the boundary test, confirm that routing works at all. Start a new Claude Code session and ask: "What clients do I work with?" The answer should list the clients by name with their details.

If the answer is "I don't have that information," check three things:

1. `CLAUDE.md` is in the vault root, not in a subfolder.
2. The routing table uses correct paths, which are case-sensitive and relative to the vault root.
3. The context files use standard Markdown: `##` headings, `-` lists, and `|` tables.

Then test one keyword, such as "Help me with the Harbor account." If the agent asks who Harbor is, the routing row does not match. Fix the keyword or the path and run the test again.

## Test the vault boundary

Use harmless synthetic markers.

1. Put `NORTH-MARKER-481` in the test account's allowed source.
2. Put `SOUTH-MARKER-927` in another account folder.
3. Ask the North job for its marker.
4. Confirm only the North marker appears.
5. Ask a question answerable only from South.
6. Confirm the job reports a missing allowed source.
7. Add an old North decision to the archive.
8. Confirm the current decision wins.
9. Remove `decisions.md` and confirm the run stops.
10. Confirm the receipt lists only allowed paths.

Run the test through every retrieval path you plan to support. A local folder test does not prove a cloud index uses the same boundary.

### Define denial for each route

| Retrieval route | Required denial evidence |
| --- | --- |
| Direct local files | Operating-system or tool denial; no forbidden bytes returned |
| Local search or index | Denied folder absent from indexed documents and query results |
| Connector or MCP server | Intended user cannot fetch the denied record by search or direct identifier |
| Shared hosted index | Tenant and role filters reject the canary before retrieval; returned citations remain in scope |

The numbered fixture starts with local files. A connector or hosted index remains unverified until its own negative cases and logs pass. A clean final answer alone cannot prove denied data was never retrieved.

## Test correction and cold start

Add a correction to `corrections.md`. Start a fresh agent session. Give it only the manifest and allowed files. Ask for the defined output.

Do not add the missing explanation in chat. If the run fails, update the controlling file and test again.

This turns the vault into a maintained input path. It also supports the goal in [stop re-explaining your business to AI](/articles/stop-re-explaining-your-business-to-ai): the business record carries the context instead of the operator rebuilding it from memory.

## Back up and restore the actual folder

Sync makes a vault available across devices. Obsidian's documentation states that sync is not backup. Test a separate backup and restore path for the business-memory folder.

The restore test should produce a new test location. Open the restored files with a plain text editor. Check file count or a manifest. Then run the cold-start job from the restored packet.

Do not call the backup complete because the sync icon is green.

## Update the files when the business changes

Maintenance follows events, not a calendar. The January 2026 comparison gave rough times for common updates:

- a new client: add a client note and a routing row, about two minutes;
- a finished project: move the project note to the archive, about thirty seconds;
- a changed price: edit the service context file, about one minute;
- a new workflow: document it in the systems folder, about five minutes.

The same comparison put the weekly total at five to ten minutes. Those are estimates, not measurements. The point holds: an update is a file edit, and the next session reads it. Each update still needs an owner and, for consequential facts, a review.

## Decide when Obsidian is not enough

Use a database or business system when the job needs transactional consistency, row-level permissions, frequent concurrent writes, enforced schemas, or large structured queries.

Obsidian can still hold the task brief, source map, correction policy, and runbook. The canonical customer status may remain in the CRM. The context file should point to that current system rather than copy stale values.

The decision is not Obsidian versus every database. It is which object should control each fact and how the agent receives it.

A vault can also be more than the job needs. If you use AI for one simple task, such as email drafts, the custom instructions in a chat product can be enough. If your processes are not written down yet, write them first. The memory layer depends on that work.

## Approval and stopping boundary

The agent may read the allowed vault folder, prepare a draft, validate source references, and write a receipt inside the account path.

It must stop on an unresolved account identity, a source outside the manifest, a missing current record, conflicting controlling files, or a requested write outside the draft and receipt folders.

It must also stop before changing vault access, installing plugins, enabling sync, connecting cloud storage, moving client data, deleting notes, publishing, or sending externally. Those actions need a named owner and a separate review.

## Sources

- [Obsidian: How Obsidian stores data](https://obsidian.md/help/Files%2Band%2Bfolders/How%2BObsidian%2Bstores%2Bdata)
- [Obsidian: Back up your Obsidian files](https://obsidian.md/help/backup)

For the next step, read the [AI context manifest template for one recurring business job](/articles/ai-context-manifest-template); [Full scope and terms](/work) covers the scoped build.


## Questions about Obsidian as Business Memory for AI Agents

### How do you know if your agent are using memory?

Test the retrieval path with synthetic markers, an old conflicting decision, and a removed required file. The receipt should list the allowed paths, confirm the current decision wins, and show that the agent reports a missing source instead of guessing.

### How should I structure an Obsidian vault for AI orientation?

Start with one bounded business-memory folder containing a current context file, decisions, corrections, a task brief, sources, drafts, and receipts. Define source roles and retrieval limits so the vault does not let search decide policy.

### How to Set Up Persistent Memory for Codex Using Obsidian?

Obsidian stores Markdown files in a local vault, so people and agents can inspect the same files outside a vendor interface. Use it as the owned memory layer only with explicit source roles, access boundaries, backups, and cold-start tests.

## Save the visual summary

_context.md | decisions.md | corrections.md | sources/current-scope.md | task-brief.md

[Download the PNG](/infographics/obsidian-ai-memory-for-business-1200x1500.png)


## Related: Owned Memory

- [AI Agent Memory Architecture for a Small Business](/articles/ai-agent-memory-architecture-small-business)
- [What Is Business Memory for AI Agents? A Maintained Record, Not a Chat Log](/articles/business-memory-for-ai-agents)
- [The Complete Guide to Business Memory for AI Agents](/articles/business-memory-for-ai-agents-guide)

----

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

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