---
title: "Plan the 25 to 50 hours a hand-built Claude Code memory system takes"
description: "Compare the CLAUDE.md that /init writes with a hand-built memory system: each component, a 12-step build path, and hour estimates per step."
canonical: "https://scalewithsearch.com/articles/claude-code-init-vs-professional-setup"
date: "2026-03-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)

# Plan the 25 to 50 hours a hand-built Claude Code memory system takes.

Claude Code ships with a command called `/init`. You run it in a project folder. It scans your files, infers conventions, and writes a `CLAUDE.md` that tells Claude how to work in that codebase. It is built in, costs nothing extra, and takes about thirty seconds.

The same file can be the base of a larger system. That system persists across conversations, routes context by domain, searches your knowledge base by meaning, and matches your voice. That version costs time. Plan for 25 to 50 hours of build work over three to four weeks.

Both start from the same file. This article lists what gets built on top of it, how long each step takes, and who needs it. The companion article on [where /init stops](/articles/claude-code-init-limitations) covers the gaps in more detail.

## What /init produces

When you run `/init`, Claude Code reads your file tree, identifies the languages, and checks for configuration files such as `package.json`, `pyproject.toml`, or a `Makefile`. It then writes one `CLAUDE.md` with four parts:

| Part | What it records |
|---|---|
| Project description | What the codebase does, inferred from the README and the folder layout |
| File conventions | Naming patterns, folder layout, import styles |
| Build and test commands | How to run, lint, and test the project |
| Code style rules | Format preferences and error-handling patterns |

The output works. Claude Code reads `CLAUDE.md` at the start of each session in that folder, so it does not ask what the project does. For a single-repository coding project, that covers a lot.

The file says nothing about you: your role, your other projects, your communication preferences, your clients, or how you make decisions. It is scoped to the project, not to the person. It is also static. It stays as written until you edit it.

## What the hand-built system contains

The hand-built version also starts with `CLAUDE.md`. You write it by hand against a written outcome, and it is one part of eight.

The custom `CLAUDE.md` encodes your operating rules, domain routing, behavior limits, and framework references. A working file of this kind runs 150 to 300 lines. It has a WHO section for your role, schedule, and tools. It has a WHAT section that lists your domains with routing keywords. It has a HOW section for search and update procedures, and a RULES table that governs every output.

The Obsidian vault holds a structured knowledge base. Notes use `field:: value` frontmatter and wiki-links. Each domain, such as work, business, personal, or CRM, gets its own `_context.md` that loads when the work needs it. Navigation indexes point to related files, so nobody searches by hand. The [Obsidian business-memory guide](/articles/obsidian-ai-memory-for-business) covers the vault layout.

QMD is an open-source local search engine. It combines BM25 keyword matches with vector embeddings over the whole vault. Ask "What did I decide about the pricing model?" and it returns the decision note, not every file that contains the word "pricing."

The session ledger is a SQLite database that captures every conversation. It uses FTS5 full-text search over tens of thousands of messages. When you say "we discussed this last week," Claude can find the discussion.

Three hooks run without a prompt. A domain router detects keywords and loads the right context file. A semantic memory hook queries the vault before Claude answers. A voice calibration hook applies your writing rules to each output.

Five to ten starter skills map to your workflows as slash commands. Examples are `/deals` to query a CRM pipeline, `/sprint` to plan the week, and `/handoff` to write a context transfer note. Each one connects to your own tools and data sources.

A `launchd` job reindexes the vault each hour. New notes, edits, and deletions reach the search index without a manual step.

The written outcome and acceptance list is the last part. You walk through your workflows, name what must persist, build the routing, test search quality, and calibrate the voice. Write the checks first, and then test the build against them.

## Compare the two setups

| Dimension | /init | Hand-built system |
|---|---|---|
| Setup time | 30 seconds | 25 to 50 hours over 3 to 4 weeks |
| Output files | One `CLAUDE.md` | `CLAUDE.md`, vault schema, context files, `_ops.md`, domain indexes |
| Search | Reads the files you name | QMD: BM25 plus vector search over the vault |
| Session memory | Resets with each conversation | SQLite ledger with FTS5, searchable across past sessions |
| Context routing | One project scope | Several domains; keywords load the right file |
| Automatic updates | None; you edit the file | Hourly reindex through `launchd`, plus a context upkeep procedure |
| Skills | None | 5 to 10 custom slash commands |
| Infrastructure | One Markdown file | Vault, QMD, ledger, hooks, and `launchd` jobs |
| Software cost | Included with Claude Code | No license cost for the parts; your time plus a paid Claude plan |
| Maintenance | Manual | Partly automatic: reindex runs alone; context files follow a procedure |

## Know where /init is enough

For many people, `/init` solves the actual problem. You work in one codebase, and your main frustration is that Claude forgets your test commands or import rules. The generated file handles that. You do not need routing with one domain, semantic search when the project fits in one folder, or session memory when each conversation stands alone.

`/init` is also a useful diagnostic. Run it, read the output, and see what Claude inferred. If the file captures most of what matters, edit the rest by hand. That is a reasonable workflow for technical work in one scope.

## Know where /init falls short

The gaps appear when your AI work crosses boundaries.

You manage client relationships in one tool, write content for a second business, and track personal finances in a third. You switch several times a day. When you ask about a client's message history, Claude has no context. The file does not know your CRM, your clients, or you.

Claude writes exactly the right analysis of a deal. Two days later, you need that analysis, and the session is gone. You can scroll chat history by hand, but Claude cannot search it. Without a ledger, each result is used once and lost.

You want Claude to write in your voice: your cadence, vocabulary, and structure. `/init` captures code style, not communication style, and nothing enforces a style on each output.

You have 200 notes in Obsidian from six months of work: research, meeting notes, decision logs, and specs. Claude can read a file you name. It cannot search the set by meaning, so you must know which file holds the answer before you ask. Semantic search inverts that order.

## Follow the build path

Every part of the hand-built system uses open-source software or a documented API. Obsidian is free to use. QMD is open-source. SQLite is free. Anthropic documents the Claude Code hook system.

`CLAUDE.md` is a Markdown file, and you can build the whole system yourself. Claude Code itself needs a paid Claude plan. The steps and hour estimates below assume a technically capable person who reads documentation with care.

1. Run `/init` to generate the base `CLAUDE.md`. Allow 30 seconds.
2. Rewrite `CLAUDE.md` by hand with your identity, domains, rules, and routing keywords. Learn what Claude Code reads, when it reads it, and which instructions survive context compaction. Allow 2 to 4 hours of iteration.
3. Design the vault schema: frontmatter fields, folder hierarchy, naming rules, and link patterns. Learn how QMD indexes content and how Claude follows linked notes. Allow 3 to 5 hours.
4. Write a `_context.md` for each area of your work. Each file must surface the right facts, tools, and workflows without overloading Claude's attention. Allow 2 to 3 hours per domain.
5. Install and configure QMD. Set the BM25 and embedding parameters, run the first index, and test query quality. Allow 2 to 4 hours.
6. Build the session ledger. Create the SQLite schema, configure FTS5, write the capture hooks, and build a command-line search. Allow 4 to 8 hours.
7. Write the domain router, semantic memory, and voice calibration hooks. Test each trigger condition and its edge cases. Allow 3 to 6 hours.
8. Build the skills. Each needs a skill definition file, its logic in Python or shell, and a connection to your tools. Allow 1 to 2 hours per skill.
9. Configure the `launchd` reindex job. Write the plist, set the schedule, log errors, and confirm that the job runs on time. Allow 1 to 2 hours.
10. Calibrate the voice. Give Claude samples of your writing, name the patterns to enforce, encode them as rules, and test them on several output types. Allow 2 to 4 hours.
11. Test the integration. Confirm that routing loads the right context, search returns relevant results, hooks fire, skills run, and the ledger captures each conversation. Allow 3 to 5 hours.
12. Tune the quality. The first pass is never right. Context files, search parameters, and voice rules all need adjustment. Allow 1 to 2 hours a week for the first month.

The total is 25 to 50 hours over three to four weeks. That estimate assumes no dead ends, no misconfigured index, and no long hunt for a hook that does not fire.

Most of those hours go to decisions, not typing. Write each decision down with its reason, so you can reverse it later. The [build acceptance-list guide](/articles/what-a-build-acceptance-list-contains) shows how to turn those decisions into checks.

## Compare the ninety-day result

The `/init` file works at once, and it also sets a ceiling. You get a project-aware assistant on day one, and on day ninety you have the same thing. The file does not grow or connect to anything outside the project folder.

The hand-built system costs more to start and follows a different path. On day one, you have routing, semantic search, and voice rules. By day thirty, the ledger holds hundreds of conversations that Claude can search. By day ninety, the vault is larger, the index covers more, and Claude's usable context spans months of work.

## Decide which setup fits

Use `/init` alone under four conditions. You work in one codebase. Your AI work stays inside the project. You do not need memory across sessions. You are comfortable editing `CLAUDE.md` by hand. That describes many developers who work on one product.

Consider the hand-built system if you work across several domains, such as a job, a business, and personal operations. It also fits if Claude must recall past conversations, search a growing knowledge base, or hold your voice. It fits when one `CLAUDE.md` already feels too small. That describes operators, consultants, agency owners, and anyone whose AI use goes past code completion.

Start smaller if you do not have 25 to 50 hours. Edit the `/init` file by hand, add one context file, and stop until the next gap appears. The concepts of routing, semantic search, and hooks help at any size.

For a tour of the larger systems that sit on the same file, read [the four layers a production memory system adds after /init](/articles/beyond-claude-code-init).

## Know what the hours produce

The hours do not produce software, a subscription, or access to a platform. They produce architecture: the decisions about how your AI organizes, searches, recalls, and writes, implemented in files on your machine. Obsidian, QMD, and the SQLite ledger run on your machine and send nothing to an outside service by themselves. The text that a Claude Code session reads from them still goes to Anthropic for processing, and retention terms depend on your plan. Only the Claude plan carries a monthly payment.

The written outcome holds most of the value. You read your own workflows, decide what must persist, and make the trade-offs:

- Which domains need their own context file, and which can share one?
- How detailed should the frontmatter be?
- Which routing keywords avoid false matches?
- How many skills justify their upkeep?

Those decisions do not show in the final files. `CLAUDE.md` looks like a Markdown file. The vault looks like folders and notes. The hooks look like small configuration files. The architecture is in the choices, not the syntax.

Part of the result also works with other models. The vault, frontmatter schema, and context files serve any AI that reads Markdown. The hooks, skills, QMD integration, and ledger capture are specific to Claude Code, so a model change needs new adapters for them. The [model-switching guide](/articles/switch-ai-models-without-losing-context) explains which parts to keep stable across that change.


## Related: AI memory

- [Structure AI memory so each session makes the next one faster](/articles/ai-memory-compounding-effect)
- [Write one memory file and start Claude Code without any programming](/articles/ai-memory-for-non-technical-users)
- [Fix the eight AI memory mistakes that make every session start over](/articles/ai-memory-mistakes-beginners-make)

----

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

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