BXUP Track progress & test yourself — free
IT Support / Service Desk / Sysadmin · Playbook · Foundation · ~4 min read
IT SUPPORT / SERVICE DESK / SYSADMIN · PLAYBOOK · FOUNDATION

Build Your Personal Solved-Problems Corpus

You have solved thousands of problems and can retrieve maybe fifty from memory. A sanitized, searchable corpus of your own fixes — queried before every hard ticket — is the individual engineer's RAG: it compounds for as long as you keep the habit, and it leaves with you when you change jobs.

Tier: Foundation · Workflow area: Knowledge management · ~25 minutes to start, then habit

This playbook sets up a personal knowledge pipeline: capture each non-trivial fix in a two-minute note, sanitize it at write time, and make the pile semantically searchable with NotebookLM-class tools or a local Ollama-plus-embeddings setup — so "I've seen this before" becomes a query instead of a feeling.

When to use

  • You are the person who "fixed something like this last year"and regularly lose twenty minutes failing to remember how.
  • Your official KB cannot hold your notesthe weird environment-specific fixes, vendor-support workarounds and one-off diagnoses that would never pass KB review but you will need again.
  • Career portability matters to youa sanitized personal corpus is legitimately yours across employers in a way ticket history never is.

When NOT to use

  • As a private fork of the team KB. If a fix is reusable by colleagues, it goes through the pb-15 factory first; your corpus gets the personal-context extras, not the team's knowledge.
  • With unsanitized content. Hostnames, customer names, credentials and client-identifying detail make the corpus a data-leak liability instead of an asset — and make it non-portable, defeating the point.
  • If you will not keep the capture habit. Twenty notes are not a corpus. Commit to the two-minute note per solved hard ticket or skip this.

The recipe

  1. Fix the note template — small enough to actually use. One markdown file per problem in one folder:

    # Symptom: Outlook search returns nothing after profile rebuild
    date: 2026-08-06
    tags: outlook, search, windows-index
    ## Context
    Win11 23H2, M365 Apps current channel, roaming profile shop.
    ## What actually fixed it
    Rebuilt the search index scope: removed the profile path from
    Indexing Options exclusions (a GPO had added it), then
    Settings > Search > Advanced > Rebuild. 40 min to reindex.
    ## Dead ends
    Registry fix from forums (no effect). New OST (no effect).
    ## Source
    Own diagnosis + vendor ticket #445k excerpt.
    

    Symptom in user words (that is what future-you will search), the fix, and the dead ends — dead ends save the most time on round two.

  2. Sanitize at write time, not later. Rules baked into the template: no real hostnames (use fileserver-A), no usernames, no customer or employer identifiers, no secrets, no proprietary config values. A retro-sanitization pass never happens; write it clean or lose the portability.

  3. Wire up semantic search — pick one of two stacks. Hosted: load the folder into a NotebookLM-class notebook and query conversationally; re-sync new notes weekly. Local and private: Ollama plus a small script —

    ollama pull nomic-embed-text
    ollama pull llama3.1:8b
    
    import ollama, os, numpy as np
    
    notes = {f: open(os.path.join("notes", f)).read()
             for f in os.listdir("notes") if f.endswith(".md")}
    emb = {f: ollama.embed(model="nomic-embed-text", input=t)["embeddings"][0]
           for f, t in notes.items()}
    
    def search(q, k=3):
        qv = ollama.embed(model="nomic-embed-text", input=q)["embeddings"][0]
        score = lambda v: np.dot(qv, v) / (np.linalg.norm(qv) * np.linalg.norm(v))
        return sorted(notes, key=lambda f: -score(emb[f]))[:k]
    
    print(search("outlook can't find any emails in search"))
    

    Embed once per new note; the query runs in milliseconds, fully offline.

  4. Install the query-first habit. Before diving into any hard ticket, one query against the corpus — symptom phrasing, not solution phrasing. This is the step that makes the corpus pay; capture without retrieval is a diary.

  5. Close the loop after each hard ticket. Solved something non-trivial? Two-minute note before you close the ticket. Found your own old note and it worked? Add today's date as a "confirmed again" line — recurrence counts tell you what deserves promoting to the team KB.

  6. Ask the corpus, not just search it. With the local stack, pipe the top hits into the model for synthesis:

    Using ONLY these notes of mine, what did I try last time for this
    symptom, what worked, and what were the dead ends?
    Symptom: [current issue]. Notes: [top-3 note contents]
    

    Grounded in your own notes, hallucination risk is near zero and the answer arrives in your own past voice.

  7. Back it up like it matters. Private Git repo or synced encrypted folder. Five years of this is a career asset; treat it with the seriousness of one.

Make it yours

  • NotebookLM-class routefastest to start, zero code; accept that notes live with the provider, which raises the sanitization bar from important to absolute.
  • Obsidian/Logseq userskeep the same template inside your existing vault and add a local embedding plugin or the script above pointed at the vault folder; you already have the capture habit, just add the fix-note discipline.
  • Terminal-nativeskip embeddings until the pile outgrows grep: grep -ril "search index" over 200 well-titled notes works fine; add the semantic layer around note 300 when synonym misses start costing you.

Quality check

  • Symptom lines use user vocabulary. You will search "outlook search broken", not "WDS index scope exclusion" — title accordingly (the pb-17 rule, applied to yourself).
  • Dead ends recorded. The second-most-valuable field; a note without them makes round two repeat them.
  • Random sanitization audit. Monthly, open three random notes and hunt identifiers; one leaked hostname pattern means a full-corpus grep and a template fix.
  • Recurrence promotes. Any note with two "confirmed again" lines is team knowledge — push it through pb-15 and note the KB article ID in your file.
Warning

Your employer's data policy applies to a personal corpus — sanitized problem-solution patterns are generally defensible, but raw configs, logs and client-identifiable details are not; when a note cannot be written clean, it does not belong in the corpus.

Pro Tip

The habit survives on friction, not motivation — a newnote shell alias that opens a pre-filled template dated today is the difference between a corpus and a good intention.

This is the free reading view. Open BXUP to track your progress, run the hands-on labs, and prove it with original, exam-pattern assessments.
© Anvi Innovate · BXUP — Be Exponentially Upskilled · BXUP is an independent learning platform, not affiliated with or endorsed by AWS, Microsoft, Google, NVIDIA, IBM, Salesforce, Databricks, Oracle or Anthropic. All trademarks belong to their respective owners. · bxup.in