---
title: "Business Memory for AI Agents: Files, Rules, and Tests."
description: "Build business memory for AI agents from owned source files. Maintain facts, corrections, receipts, retention, backup, and a model replacement test."
canonical: "https://scalewithsearch.com/articles/business-memory-for-ai-agents-guide"
date: "2026-08-21"
modified: "2026-09-19"
---
## 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)

# The Complete Guide to Business Memory for AI Agents.

The owner opens Monday's account review and sees the same wrong renewal date for the third time. She corrected it in ChatGPT last month. She corrected it again in Claude last week. The account manager knows the right date, but the agent prepared the brief from an old transcript and a polished summary that nobody maintains.

The incident looks like a model error. The operating failure happened earlier. The business had no maintained record that told the next run which date was current, who approved it, which client it belonged to, or what to do when sources disagreed.

Business memory is the record an authorized agent reads before it works. It holds current facts, accepted decisions, procedures, corrections, open work, and the rules that govern their use. The owner can inspect it, correct it, transfer it, and test it outside the current vendor.

This guide follows that record from the first source item to a replacement-model test. It does not require a large database, a vector store, or a new platform. Start with one recurring job and enough structure to make the result repeatable.

If no maintained record exists, start with [the job](#start-with-the-job-not-the-archive) and [the first source record](#promote-the-first-source-record). If corrections keep recurring, jump to [correction](#turn-corrections-into-future-behavior) and [chain review](#audit-the-memory-path-as-a-chain).

## In this guide

- [Define the job](#start-with-the-job-not-the-archive)
- [Promote and classify records](#promote-the-first-source-record)
- [Resolve source authority](#make-authority-machine-readable-enough-to-test)
- [Apply corrections](#turn-corrections-into-future-behavior)
- [Write receipts](#require-a-receipt-from-every-terminal-run)
- [Maintain and restore records](#maintain-freshness-retention-and-deletion)
- [Run failure drills](#run-failure-drills-not-only-happy-path-demos)
- [Replace the model](#replace-the-model-without-rebuilding-the-record)

## Start with the job, not the archive

Do not begin by exporting every conversation and calling the result memory. Begin with one job that repeatedly forces the owner to reconstruct context.

Examples include a weekly client brief, a purchasing review, a lead follow-up draft, or an operations exception report. Name the result, the reader, the allowed sources, the approval owner, and the stopping point. The article on why [a brief is not a prompt](/articles/brief-vs-prompt) explains why this job contract should survive a change in model or interface.

Write the first file before choosing retrieval software:

```yaml
# jobs/weekly-account-review/brief.md
job_id: weekly-account-review
result: prepare one current account brief
reader: account owner
allowed_sources:
  - memory/accounts/current.md
  - memory/decisions/
  - memory/corrections/accepted.md
source_order:
  - accepted decisions
  - current account facts
  - accepted corrections
  - archive evidence
output: drafts/weekly-account-review.md
approval_owner: account owner
stopping_point: draft and receipt written
must_not:
  - send the brief
  - invent a date
  - treat archive material as current
```

This file defines what the agent may know for this job. It does not grant broad access to the company. Use [the context-manifest template](/articles/ai-context-manifest-template) when the source set needs freshness rules, exclusions, or file-level scopes. Use [what context an agent should read](/articles/what-context-should-an-agent-read) to reduce the packet to the smallest set that can support the result.

## Promote the first source record

The first memory item should come from a confirmed business source, not a model summary. A signed agreement can support a contract term. An approved decision can support a workflow exception. A current CRM record can support account status if the business has named it authoritative for that field.

Record provenance beside the fact. A useful item names the statement, source, owner, scope, authority, effective date, and review date.

```yaml
# memory/decisions/DEC-2026-081.md
record_id: DEC-2026-081
status: accepted
statement: Client North renews on 2026-10-01
source: contracts/client-north-signed-2026-04-01.pdf
source_locator: section 4.2
owner: account director
authority: contractual
scope: client-north
effective: 2026-04-01
review_on: 2026-09-01
supersedes: null
```

The source remains evidence. The promoted record makes its business role explicit. Never copy a claim from a transcript without retaining the source locator and review state.

This is the difference between a maintained record and accumulation. [Chat history is not business memory](/articles/chat-history-is-not-business-memory) because chronology does not establish present authority. The overview of [business memory for AI agents](/articles/business-memory-for-ai-agents) explains the ownership, authority, scope, correction, retrieval, and receipt fields that make a record usable.

## Separate record classes

Facts, decisions, procedures, corrections, and open work change for different reasons. Store them separately enough that an agent cannot confuse their roles.

A compact owned layout can begin here:

```text
owned-memory/
  README.md
  memory-register.md
  facts/
    current.md
  decisions/
  procedures/
  corrections/
    accepted.md
    review-queue.md
  open-work.md
  archive/
jobs/
  weekly-account-review/
    brief.md
    fixtures/
receipts/
  weekly-account-review/
adapters/
  provider-a.md
  provider-b.md
```

`facts/current.md` contains reviewed facts used across approved jobs. A decision file records a choice and its authority. A procedure defines a repeatable method. An accepted correction records a known wrong behavior and its replacement. `open-work.md` holds unresolved items that should not become policy. The archive preserves evidence but does not govern by default.

The case for [plain-text AI memory](/articles/plain-text-ai-memory) is operational: people and common tools can read it without a proprietary interface. [Obsidian as business memory](/articles/obsidian-ai-memory-for-business) is one workable file interface, but the vault is optional. Custody, source roles, backups, and tests matter more than the editor.

## Make authority machine-readable enough to test

Retrieval systems rank relevance. Business decisions also need authority. A semantically similar old note may be the wrong record.

The guide to [RAG versus business memory](/articles/rag-vs-business-memory) separates retrieval from governance. A retrieval layer can find candidate passages. The job still needs rules for which source wins, when a record is stale, and when a conflict requires a stop.

Use a small source-order test before tuning retrieval:

```text
# jobs/weekly-account-review/fixtures/source-order.txt
GIVEN archive/chat-2026-03-04.md says renewal is 2026-09-01
AND decisions/DEC-2026-081.md says renewal is 2026-10-01
AND DEC-2026-081 has contractual authority and current status
WHEN weekly-account-review runs
THEN the brief states 2026-10-01
AND cites DEC-2026-081
AND does not cite the archive claim as current
AND writes PASS to the receipt
```

If two current records have equal authority and disagree, the expected result should be `BLOCKED_SOURCE_CONFLICT`. A model should not settle an unresolved business dispute because one passage is clearer.

## Keep client and role boundaries explicit

Memory should narrow as the work becomes more specific. A broad company fact may be available to several jobs. A client exception should stay inside that client's context. A private HR record should not enter a marketing workflow because the model might find it relevant.

Use stable business and client identifiers in paths and manifests. Keep credentials outside the memory files. Resolve the active scope before retrieval. Deny access when the requested business, client, role, or destination does not match the job.

The guide to [separating business contexts for AI agents](/articles/separate-business-contexts-ai-agents) provides default-deny tests. The earlier pattern for [separating client context](/articles/separate-client-context-before-agent-work) shows how to package sources, permissions, drafts, and receipts before an agent starts.

This boundary also reduces correction damage. A client-specific preference cannot silently become a company-wide rule when the correction record carries an exact scope.

## Turn corrections into future behavior

Repeated verbal feedback is not memory maintenance. An accepted correction must change the source set or governing rule, create a fixture, and change the next run.

Record the failed behavior and the accepted replacement:

```yaml
# memory/corrections/COR-2026-014.md
correction_id: COR-2026-014
status: accepted
wrong_behavior: draft used the archive renewal date
replacement_rule: use the current contractual decision record
evidence: receipts/weekly-account-review/2026.08.20.md
owner: account director
scope: client-north weekly-account-review
effective: 2026-08-21
changes:
  - jobs/weekly-account-review/brief.md
  - jobs/weekly-account-review/fixtures/source-order.txt
retest_required: true
```

Then rerun the same fixture from a fresh session. A note that sits in `corrections.md` but never enters retrieval or testing has not changed the system.

Use the detailed [AI correction log template](/articles/ai-correction-log-template) for proposed, accepted, rejected, and superseded states. The operating method in [how corrections become system memory](/articles/corrections-become-system-memory) keeps transient preferences out of permanent policy while preserving accepted changes.

NIST's voluntary AI Risk Management Framework calls for defined roles, ongoing monitoring, testing, incident response, and processes that incorporate feedback. Those categories support an owned correction path without prescribing this exact file layout. [NIST AI RMF](https://www.nist.gov/itl/ai-risk-management-framework)

## Require a receipt from every terminal run

An output alone cannot show whether the agent used current sources, skipped a test, or stopped before action. A run receipt records what happened.

```yaml
# receipts/weekly-account-review/2026.08.21T090000.md
run_id: WAR-2026-08-21-090000
job_id: weekly-account-review
status: PASS_DRAFTED
sources_read:
  - path: memory/decisions/DEC-2026-081.md
    version: sha256:7d2f...
  - path: memory/accounts/current.md
    version: sha256:15a4...
corrections_applied:
  - COR-2026-014
tests:
  source_order: pass
  client_scope: pass
output: drafts/weekly-account-review.md
external_actions: []
stopped_at: human approval
```

Use fixed status names such as `PASS_DRAFTED`, `NO_WORK`, `BLOCKED_SOURCE_CONFLICT`, `BLOCKED_STALE_SOURCE`, and `FAILED_TEST`. The article on why [the receipt is part of the output](/articles/receipt-is-part-of-the-output) shows what a reviewer needs. A receipt does not prove every claim is true, but it makes the run inspectable and failures comparable.

## Maintain freshness, retention, and deletion

Every record should have an owner and review trigger. Contract terms may be reviewed near renewal. Active account status may need review every run. Stable procedures may use a quarterly cadence. Open work should be checked whenever its job runs.

Do not let the agent renew a record merely because it read the record. Freshness requires a qualifying source or authorized review.

Retention and deletion need separate rules for source files, derived summaries, indexes, caches, backups, exports, and provider-side memory. Deleting a canonical file while leaving its embedding or export searchable does not complete the operational deletion. The [AI memory retention and deletion policy](/articles/ai-memory-retention-and-deletion-policy) gives each copy a retention owner, method, and proof test.

Minimize sensitive content. Keep client data only when the defined job requires it, the business can justify the use, and scope prevents cross-client retrieval. Review [what client data belongs in agent memory](/articles/client-data-in-ai-agent-memory) before promoting contact, financial, health, credential, or private personnel information.

## Back up the memory, then test restoration

Ownership without a restore path is fragile. Back up the canonical records, job briefs, fixtures, receipts, adapters, and a credential map that names secret locations without containing secret values.

Use version control where its visibility and access model fit the data. Git records content history and supports restoring earlier versions, but private repositories, access controls, and secret handling still need deliberate configuration. [Git documentation: getting a Git repository](https://git-scm.com/book/en/v2/Git-Basics-Getting-a-Git-Repository)

Run a restore test into a clean directory. Confirm that a new operator can identify the canonical source, run one fixture, produce one draft, and write one receipt. A backup that has never been restored is an untested assumption.

## Choose storage after you know the record shape

Use the simplest storage that preserves the required fields, access rules, history, and retrieval path. A small set of Markdown and YAML files can support one bounded job. A relational database can help when the records have stable fields, many linked entities, or transactional updates. An object store can hold large source documents. A search index can accelerate discovery. These components serve different roles.

Do not ask one layer to do all four jobs. The canonical record establishes what the business maintains. The archive preserves evidence. The retrieval layer finds candidate records. The adapter prepares a model-specific request. An index can be rebuilt from canonical records. Canonical records should not depend on an index that the owner cannot inspect or reproduce.

Write an architecture note that answers five questions in plain language:

- Where is the canonical record?
- Where is raw evidence retained?
- Which process builds summaries or indexes?
- Which job may retrieve each record class?
- How does an operator rebuild the derived layers?

This note prevents a later team from treating the easiest search interface as the source of truth. It also clarifies backup scope. If the vector index disappears, the recovery plan may rebuild it. If the only accepted decision disappears, the operation has lost business memory.

## Build a review queue that does not govern work

Agents will discover possible updates while they work. A customer message may suggest a changed address. A meeting transcript may contain a proposed price. A failed run may reveal an outdated procedure. These are candidates, not accepted records.

Send each candidate to a review queue with the proposed statement, source locator, affected scope, suggested owner, and reason it matters. The current job continues from accepted records or stops if the missing update blocks safe work. It does not promote the candidate to make completion easier.

Assign queue states such as `proposed`, `needs-source`, `needs-owner`, `accepted`, `rejected`, and `superseded`. Record the reviewer and decision time. On acceptance, update the canonical record, attach the source, create or update the fixture, and run the affected job again. On rejection, preserve the reason so another model does not propose the same unsupported change next week.

This queue turns model observations into inspectable maintenance work. It also protects policy ownership. The system can notice a possible change without granting itself authority to change how the business operates.

## Assign maintenance to named people and events

Every memory class needs a business owner. The owner does not have to edit every file personally. The owner is accountable for the rule that decides whether a record is accepted, current, scoped correctly, and ready for use.

Use event-based review when the business already knows what makes a record change. Review an offer after price approval. Review a client context after a signed change order. Review permissions after a role change. Review a procedure after an incident or accepted correction. Fixed schedules still help for slow-moving records, but an annual review will not protect a workflow from a contract changed yesterday.

Record overdue items visibly. A stale state should affect jobs that require the record. Some jobs can continue while flagging a low-risk stale field. Others must stop. Put that decision in the brief instead of letting each model decide how much staleness is acceptable.

Keep maintenance effort proportional to consequence. A formatting preference may use a light review. A payment instruction, legal term, access grant, or customer commitment needs stronger evidence and a named approver.

## Run failure drills, not only happy-path demos

The replacement test proves a clean run can succeed. Failure drills prove the memory path behaves correctly when the business record is incomplete or damaged.

Temporarily remove a required source in a test copy. The run should produce `BLOCKED_MISSING_SOURCE` and identify the exact path. Mark a current fact stale. The run should stop or warn according to the brief. Introduce two equal-authority decisions. The model should report the conflict without selecting one. Put a cross-client canary in an inaccessible folder. The canary should never appear in retrieved context, output, or receipt content.

Test a corrupted derived index by rebuilding it from canonical records. Test a restore into a clean directory. Test a correction that supersedes an old rule. Test a provider adapter that cannot access one required tool. Each exercise should end with a receipt and a named recovery action.

These drills locate the control. If a missing-source prompt tells the model to stop but the surrounding code silently substitutes an archive summary, the control is not effective. If client filtering happens only after retrieval, the wrong records were already exposed. Move the rule to the component that reads, writes, or executes the capability.

## Audit the memory path as a chain

Review one claim from the final output backward. The output should point to a current business record. The record should point to its source evidence and owner. The job brief should authorize the record class. The receipt should show the exact version used. The fixture should prove the relevant decision rule.

Then review one correction forward. The source incident should lead to a proposed correction, an authorized acceptance, a changed record or rule, a regression fixture, a passing rerun, and a receipt. A gap in either direction identifies where memory can become decorative.

Do this chain review after a material change to the source system, model adapter, retrieval method, folder structure, permissions, or job definition. Also run it when the same correction recurs. Repeated correction is evidence that storage, retrieval, authority, or testing failed to connect.

The result is a small assurance case for the job. It does not prove a model will never fail. It shows which records governed the run, where authority came from, what the test covered, and what the agent could not do.

## Replace the model without rebuilding the record

Keep provider instructions in adapters, not in the business record. The stable layer contains source roles, job rules, fixtures, and receipts. The adapter maps those requirements to a model's message format, tool schema, authentication, and response parser.

Anthropic's context-engineering guidance describes the need to curate high-signal context for an agent rather than fill the context window indiscriminately. That supports a bounded context packet, though the business remains responsible for its authority rules. [Anthropic: Effective context engineering for AI agents](https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents)

Run a cold replacement test:

```text
# jobs/weekly-account-review/fixtures/model-replacement.txt
SETUP clean session with no prior chat
GIVE replacement model only brief.md and allowed sources
EXPECT current renewal date from DEC-2026-081
EXPECT COR-2026-014 applied
EXPECT archive date rejected as current
EXPECT draft written to the defined path
EXPECT no external send
EXPECT receipt with source versions and terminal status
```

The article on [persistent context across AI tools](/articles/persistent-context-across-ai-tools) separates stable business context from adapters. The guide to [replacing the model while keeping business memory](/articles/replace-the-model-keep-business-memory) provides the transfer sequence. If a new model cannot pass the same acceptance fixture, investigate the adapter, tool access, or model behavior before changing the canonical records.

## Approval and stopping boundary

Memory work may inventory records, copy immutable exports, prepare a register, propose records, draft corrections, run local fixtures, and write receipts.

It stops before deleting source material, changing retention rules, widening client scope, granting credentials, overwriting an approved decision, or moving a draft into an external system. The job agent stops before sends, purchases, bookings, live record changes, deployments, or other consequential actions unless the capability has a separate current approval rule.

Missing authority is a blocked state. Stale evidence is a blocked state. Equal-authority conflict is a blocked state. A useful agent names the condition and leaves a receipt instead of guessing.

## Sources

- [NIST AI Risk Management Framework](https://www.nist.gov/itl/ai-risk-management-framework)
- [Anthropic: Effective context engineering for AI agents](https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents)
- [Git: Getting a Git Repository](https://git-scm.com/book/en/v2/Git-Basics-Getting-a-Git-Repository)


## Questions about The Complete Guide to Business Memory for AI Agents

### How do you design memory systems for long-running AI agents?

Start with one recurring job and define the canonical records, authority order, client boundary, correction path, output, stopping rule, and receipt. Add retrieval or graph infrastructure only when the source set is too large for direct, predictable reads.

### What should count as memory versus what should just live in retrieval?

Memory is the maintained set of current facts, decisions, procedures, corrections, authority, and open work that may govern a later run. Retrieval is the method that finds candidate records, while source authority determines which record the agent may trust.

### Where should I start with AI memory?

Choose one repeated business output and collect only the records required to produce and verify it. Put those records in an inspectable structure, add a correction log and receipt, then test missing, stale, conflicting, and forbidden inputs.

## Save the visual summary

Promote the first source record | Separate record classes | Make authority machine-readable enough to test | Keep client and role boundaries explicit | Require a receipt from every terminal run

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


## Related: Owned Memory

- [Why Plain Text Is the Durable Layer for AI Memory](/articles/plain-text-ai-memory)
- [Stop Re-Explaining Your Business to AI](/articles/stop-re-explaining-your-business-to-ai)
- [Types of Memory Used in AI Systems and Which Ones a Business Must Own.](/articles/types-of-memory-ai-systems-business)

----

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

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