A federated recall system that queries a documentation vault, live memory, session history, and keyword indexes in parallel — then deduplicates and ranks the results.
What this solves: Strategic knowledge lives in four different places. Searching them one at a time means you miss things, forget to check a source, or spend ten minutes on retrieval before the real work starts.
After six months of building a knowledge system, I had a documentation vault with 2,600+ markdown files, a live memory database, a session history store, and the files themselves as a keyword-searchable corpus. Useful information could be in any of them, and often the most valuable insight appeared in multiple sources at once.Searching meant running four separate queries, mentally deduplicating, and figuring out which results mattered. I’d forget to check session history, or search the vault but miss a memory observation that contradicted what the vault article said. The retrieval step was eating 5-10 minutes before real work could start.
The recall skill fires all four search layers at once and uses the LLM as a natural-language reranker to synthesize results. A full federated search runs in 3-5 seconds.Layer 1 — Vault Search uses a hybrid retrieval engine combining BM25 keyword matching, vector embeddings, and LLM reranking across 2,600+ documents. The hybrid approach matters because marketing language is inconsistent — the same concept gets called different things in different contexts.Layer 2 — Live Memory queries a persistent observation database filtered to decisions and session summaries. The full database has 13,000+ entries, but most are tool-level minutiae. Filtering by type is what makes this layer useful rather than noisy.Layer 3 — Session History searches structured records of past work sessions with type-scoping. Session summaries with their request/learned/completed fields are far more useful than raw observation dumps.Layer 4 — Keyword Index runs fast exact-match grep across key directories. This catches things semantic layers miss — specific names, acronyms, or identifiers that don’t embed well.The synthesis layer does two things individual searches can’t: cross-source detection (flagging when the same concept appears in multiple layers) and gap reporting (noting when a topic has zero hits across all sources — itself useful information).
The most common trigger is “what do we know about X?” before starting new work. Before this existed, I’d search the vault, maybe remember to check memory, forget session history, and start with incomplete context.A recent example: before drafting a competitive positioning brief, I ran a recall query on a competitor. The vault returned two analysis documents. Live memory surfaced a decision from a stakeholder meeting about how to frame the comparison. Session history showed we’d discussed this competitor in three prior sessions, with the most recent noting our initial approach had been corrected by leadership. The keyword index caught a mention in meeting notes the semantic search had missed.The whole retrieval took about 4 seconds. Assembling that manually would have taken 8-10 minutes, and I almost certainly would have missed the session history correction, which turned out to be the most important piece.
The design principle that made this work was “always search all four layers.” Early versions tried to be smart about which layers to query based on the question type. That optimization was wrong. The whole point of federation is catching things you didn’t expect to find in a particular source. The decision stored in session history that contradicts the vault article is exactly the result you’d miss with clever routing.Cross-source hits turned out to be the most valuable signal in the system. When the same concept appears in a vault document and a live memory observation and a session record, that’s not redundancy — it’s confirmation. I started flagging these explicitly in results, and they consistently point to the highest-confidence information.The live memory layer was the trickiest. Querying 13,000+ observations unfiltered drowns results in noise. Filtering by type before searching fixed it — decisions and session summaries update strategic understanding. The thousands of discovery-type observations are useful for the system’s internal operation but useless for strategic recall. That single filter took the layer from noisy to essential.
⌘I
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"elrolio","colors":{"primary":"#E5322A","light":"#F0605A","dark":"#C0271F"},"favicon":"https://mintcdn.com/elrolio/byvQNIy-pffC46cJ/assets/favicon.png?fit=max\u0026auto=format\u0026n=byvQNIy-pffC46cJ\u0026q=85\u0026s=e511e67bd00e0149247856258ce2455d","appearance":{"default":"light"},"navbar":{"links":[{"href":"/journal","label":"Journal"}]},"footer":{"socials":{"x":"https://x.com/elrolio","linkedin":"https://linkedin.com/in/elrolio","github":"https://github.com/elrolio"}},"fonts":{"heading":{"family":"Fraunces"},"body":{"family":"Newsreader"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"elrolio","hasAudioNarration":false,"actualSubdomain":"elrolio","customDomains":[],"gitSource":{"type":"github","owner":"elrolio","repo":"ai-native-marketing","deployBranch":"master","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6af545b57f28eaa2f77296e4","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"Journal","count":22},{"language":"default","tag":"Skills","count":6},{"language":"default","tag":"Reflections","count":3},{"language":"default","tag":"Home","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"styles.css","content":"/* vietnamese */\n@font-face {\n font-family: 'Fraunces';\n font-style: italic;\n font-weight: 300 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/fraunces/v38/6NU58FyLNQOQZAnv9ZwNjucMHVn85Ni7emAe9lKqZTnbB-gzTK0K1ChjdfeQ_5Y.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Fraunces';\n font-style: italic;\n font-weight: 300 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/fraunces/v38/6NU58FyLNQOQZAnv9ZwNjucMHVn85Ni7emAe9lKqZTnbB-gzTK0K1ChjdPeQ_5Y.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Fraunces';\n font-style: italic;\n font-weight: 300 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/fraunces/v38/6NU58FyLNQOQZAnv9ZwNjucMHVn85Ni7emAe9lKqZTnbB-gzTK0K1ChjeveQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Fraunces';\n font-style: normal;\n font-weight: 300 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/fraunces/v38/6NU78FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2Wa0KxCBTeO-U.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Fraunces';\n font-style: normal;\n font-weight: 300 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/fraunces/v38/6NU78FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2Wa0KxCFTeO-U.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Fraunces';\n font-style: normal;\n font-weight: 300 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/fraunces/v38/6NU78FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2Wa0KxC9TeA.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Newsreader';\n font-style: italic;\n font-weight: 300 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/newsreader/v26/cY9CfjOCX1hbuyalUrK439vCgYhCFpY.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Newsreader';\n font-style: italic;\n font-weight: 300 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/newsreader/v26/cY9CfjOCX1hbuyalUrK439vCgIhCFpY.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Newsreader';\n font-style: italic;\n font-weight: 300 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/newsreader/v26/cY9CfjOCX1hbuyalUrK439vCjohC.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Newsreader';\n font-style: normal;\n font-weight: 300 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/newsreader/v26/cY9AfjOCX1hbuyalUrK439HyjJBG.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Newsreader';\n font-style: normal;\n font-weight: 300 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/newsreader/v26/cY9AfjOCX1hbuyalUrK439DyjJBG.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Newsreader';\n font-style: normal;\n font-weight: 300 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/newsreader/v26/cY9AfjOCX1hbuyalUrK4397yjA.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n:root{--paper: #FBFAF7;--ink: #1A1A1A;--red: #E5322A;--meta: #6B6862;--hairline: #E6E2DA;--ui: \"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;--display: \"Fraunces\", Georgia, serif;--serif: \"Newsreader\", Georgia, serif}.elrolio-home{background:var(--paper);color:var(--ink);font-family:var(--serif);line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.elrolio-home a{color:inherit;text-decoration:none}.elrolio-home .wrap{width:100%;max-width:74rem;margin-inline:auto;padding-inline:clamp(1.25rem, 5vw, 5rem)}.elrolio-home .eyebrow{font-family:var(--ui);font-size:0.72rem;font-weight:600;letter-spacing:0.18em;text-transform:uppercase;color:var(--red)}.elrolio-home .metaline{font-family:var(--ui);font-size:0.78rem;letter-spacing:0.02em;color:var(--meta)}.elrolio-home .hero{padding-block:clamp(3.5rem, 11vh, 8rem) clamp(3rem, 8vh, 6rem);border-bottom:1px solid var(--hairline)}.elrolio-home .hero .eyebrow{display:block;margin-bottom:clamp(1.5rem, 4vh, 2.5rem)}.elrolio-home .hero h1{margin:0;font-family:var(--display);font-optical-sizing:auto;font-weight:600;font-size:clamp(3rem, 9vw, 8rem);line-height:0.95;letter-spacing:-0.025em;color:var(--ink)}.elrolio-home .practice{margin:clamp(1.75rem, 5vh, 2.75rem) 0 0;max-width:24ch;font-family:var(--display);font-weight:400;font-size:clamp(1.5rem, 3.6vw, 2.85rem);line-height:1.12;letter-spacing:-0.01em}.elrolio-home .practice .accent{color:var(--red);font-style:italic;font-weight:500}.elrolio-home .cta{position:relative;display:inline-flex;align-items:baseline;gap:0.5rem;margin-top:clamp(2rem, 5vh, 3rem);padding-bottom:3px;font-family:var(--ui);font-size:0.95rem;font-weight:600;letter-spacing:0.02em;color:var(--red)}.elrolio-home .cta .arrow{display:inline-block;transition:transform 0.25s ease}.elrolio-home .cta:hover .arrow{transform:translateX(6px)}.elrolio-home .cta::before{content:\"\";position:absolute;left:0;bottom:0;width:100%;height:1.5px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform 0.3s ease}.elrolio-home .cta:hover::before{transform:scaleX(1)}.elrolio-home .band{padding-block:clamp(3rem, 8vh, 5.5rem);border-bottom:1px solid var(--hairline)}.elrolio-home .band .lead-in{font-family:var(--ui);font-size:0.72rem;font-weight:600;letter-spacing:0.18em;text-transform:uppercase;color:var(--meta);display:block;margin-bottom:1.25rem}.elrolio-home .band p{margin:0 0 1.1rem;max-width:52ch;font-family:var(--serif);font-size:clamp(1.15rem, 2.2vw, 1.6rem);line-height:1.45;color:var(--ink)}.elrolio-home .band p:last-child{margin-bottom:0}.elrolio-home .band a{color:var(--red);border-bottom:1px solid rgba(229, 50, 42, 0.32);transition:border-color 0.18s ease}.elrolio-home .band a:hover{border-bottom-color:var(--red)}.elrolio-home .writing{padding-block:clamp(3.5rem, 9vh, 6rem) clamp(3rem, 7vh, 5rem)}.elrolio-home .section-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:clamp(2rem, 5vh, 3.5rem);padding-bottom:1.25rem;border-bottom:1px solid var(--hairline)}.elrolio-home .section-head h2{margin:0;font-family:var(--display);font-weight:600;font-size:clamp(1.5rem, 3vw, 2.25rem);letter-spacing:-0.015em;color:var(--ink)}.elrolio-home .entries{list-style:none;margin:0;padding:0}.elrolio-home .entry{position:relative;display:grid;grid-template-columns:minmax(0, auto) 1fr;gap:clamp(1rem, 4vw, 3rem);align-items:baseline;padding-block:clamp(1.5rem, 4vh, 2.5rem);border-bottom:1px solid var(--hairline);transition:padding-left 0.3s ease}.elrolio-home .entry:hover{padding-left:clamp(0.5rem, 1.5vw, 1.25rem)}.elrolio-home .entry .index{font-family:var(--display);font-weight:300;font-size:clamp(2rem, 6vw, 4rem);line-height:0.9;color:var(--hairline);letter-spacing:-0.02em;transition:color 0.3s ease}.elrolio-home .entry:hover .index{color:var(--red)}.elrolio-home .entry-body{min-width:0}.elrolio-home .entry-title{display:inline;font-family:var(--display);font-weight:600;font-size:clamp(1.4rem, 3.4vw, 2.35rem);line-height:1.08;letter-spacing:-0.015em;margin:0;padding-bottom:2px;color:var(--ink);background-image:linear-gradient(var(--red), var(--red));background-repeat:no-repeat;background-position:0 100%;background-size:0% 2px;transition:background-size 0.35s ease}.elrolio-home .entry:hover .entry-title{background-size:100% 2px}.elrolio-home .entry-hook{font-family:var(--serif);font-size:clamp(1rem, 1.6vw, 1.2rem);color:var(--meta);margin:0.55rem 0 0.9rem;max-width:52ch}.elrolio-home .entry-date{font-family:var(--ui);font-size:0.74rem;letter-spacing:0.08em;text-transform:uppercase;color:var(--meta)}.elrolio-home .entry a.rowlink{position:absolute;inset:0}.elrolio-home .all-link{display:inline-flex;align-items:baseline;gap:0.4rem;margin-top:clamp(2rem, 5vh, 3rem);font-family:var(--ui);font-size:0.9rem;font-weight:600;letter-spacing:0.02em;color:var(--red)}.elrolio-home .all-link .arrow{transition:transform 0.25s ease}.elrolio-home .all-link:hover .arrow{transform:translateX(6px)}@media (prefers-reduced-motion: reduce){.elrolio-home .cta .arrow,.elrolio-home .entry,.elrolio-home .entry-title,.elrolio-home .cta::before{transition:none}}@media (max-width: 640px){.elrolio-home .entry{grid-template-columns:1fr;gap:0.4rem}.elrolio-home .entry .index{font-size:1.6rem}.elrolio-home .practice{max-width:none}.elrolio-home .section-head{flex-direction:column;align-items:flex-start;gap:0.5rem}}.elrolio-journal{margin:1.75rem 0 0.5rem}.elrolio-journal .j-entry{position:relative;display:grid;grid-template-columns:minmax(0, auto) 1fr;gap:clamp(0.75rem, 3vw, 1.75rem);align-items:baseline;padding-block:clamp(0.95rem, 3vh, 1.5rem);border-bottom:1px solid var(--hairline);transition:padding-left 0.3s ease}.elrolio-journal .j-entry:hover{padding-left:0.6rem}.elrolio-journal .j-index{font-family:var(--display);font-weight:300;font-size:clamp(1.2rem, 3.4vw, 1.9rem);line-height:0.9;color:var(--hairline);letter-spacing:-0.02em;transition:color 0.3s ease}.elrolio-journal .j-entry:hover .j-index{color:var(--red)}.elrolio-journal .j-body{min-width:0}.elrolio-journal .j-title{display:inline;font-family:var(--display);font-weight:600;font-size:clamp(1.1rem, 2.3vw, 1.45rem);line-height:1.14;letter-spacing:-0.01em;color:var(--ink);background-image:linear-gradient(var(--red), var(--red));background-repeat:no-repeat;background-position:0 100%;background-size:0% 2px;transition:background-size 0.35s ease;padding-bottom:1px}.elrolio-journal .j-entry:hover .j-title{background-size:100% 2px}.elrolio-journal .j-hook{font-family:var(--serif);font-size:0.95rem;line-height:1.45;color:var(--meta);margin:0.4rem 0 0.55rem;max-width:62ch}.elrolio-journal .j-date{font-family:var(--ui);font-size:0.68rem;letter-spacing:0.08em;text-transform:uppercase;color:var(--meta)}.elrolio-journal .j-entry a.rowlink{position:absolute;inset:0;border:0!important;background:none!important;text-decoration:none!important}@media (prefers-reduced-motion: reduce){.elrolio-journal .j-entry,.elrolio-journal .j-title{transition:none}}@media (max-width: 640px){.elrolio-journal .j-entry{grid-template-columns:1fr;gap:0.3rem}.elrolio-journal .j-index{font-size:1.15rem}}#header .prose{font-size:1.3rem;line-height:1.5;color:var(--meta)}#content [data-as=\"p\"]{font-size:1.15rem;line-height:1.75}#content h2{font-size:clamp(1.6rem, 3.5vw, 2rem);letter-spacing:-0.015em;margin-top:2.8rem}#content h3{font-size:1.45rem;letter-spacing:-0.01em;margin-top:2.4rem}#content blockquote{border-left:3px solid var(--red);padding-left:1.4rem;margin-left:0;font-style:italic;font-size:1.25rem;line-height:1.5;color:var(--ink)}#content ul>li::marker{color:var(--red)}:root.dark{--ink: #ECEAE4;--meta: #9E9A92;--hairline: #2C2A26;--red: #F0605A}:root.dark .elrolio-home{background:transparent}"}],"page":{"pagePath":"skills/federated-search","slug":"/skills/federated-search","pageMetadata":{"title":"Searching Everything at Once","description":"A federated recall system that queries a documentation vault, live memory, session history, and keyword indexes in parallel — then deduplicates and ranks the results.","icon":"magnifying-glass","href":"/skills/federated-search"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"A federated recall system that queries a documentation vault, live memory, session history, and keyword indexes in parallel — then deduplicates and ranks the results.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Heading,Mermaid,Note}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Mermaid)_missingMdxReference(`Mermaid`,true);if(!Note)_missingMdxReference(`Note`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`searching-everything-at-once`,children:`Searching Everything at Once`}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`What this solves`}),`: Strategic knowledge lives in four different places. Searching them one at a time means you miss things, forget to check a source, or spend ten minutes on retrieval before the real work starts.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`the-problem`,children:`The Problem`}),`\n`,_jsx(_components.p,{children:`After six months of building a knowledge system, I had a documentation vault with 2,600+ markdown files, a live memory database, a session history store, and the files themselves as a keyword-searchable corpus. Useful information could be in any of them, and often the most valuable insight appeared in multiple sources at once.`}),`\n`,_jsx(_components.p,{children:`Searching meant running four separate queries, mentally deduplicating, and figuring out which results mattered. I’d forget to check session history, or search the vault but miss a memory observation that contradicted what the vault article said. The retrieval step was eating 5-10 minutes before real work could start.`}),`\n`,_jsx(Heading,{level:`2`,id:`how-it-works`,children:`How It Works`}),`\n`,_jsx(_components.p,{children:`The recall skill fires all four search layers at once and uses the LLM as a natural-language reranker to synthesize results. A full federated search runs in 3-5 seconds.`}),`\n`,_jsx(Mermaid,{chart:`flowchart TD\n A[\"User Query: 'What do we know about X?'\"] --> B[Parse Query]\n B --> C[Extract Topic + Time Scope + Specificity]\n C --> D1[Layer 1: Vault Search]\n C --> D2[Layer 2: Live Memory]\n C --> D3[Layer 3: Session History]\n C --> D4[Layer 4: Keyword Index]\n\n D1 -->|\"Hybrid BM25 + vector + reranking\"| E1[\"Top 5 vault docs\\\\n(scored by relevance)\"]\n D2 -->|\"Semantic query\"| E2[\"Top 5 observations\\\\n(decisions, session summaries)\"]\n D3 -->|\"Filtered by type + date\"| E3[\"Top 3 session records\\\\n(what was discussed when)\"]\n D4 -->|\"Exact pattern match\"| E4[\"File paths with\\\\nkeyword hits\"]\n\n E1 --> F[Synthesis Layer]\n E2 --> F\n E3 --> F\n E4 --> F\n\n F --> G[Cross-Source Detection]\n G --> H{Same concept in\\\\nmultiple sources?}\n H -->|Yes| I[\"High-confidence result\\\\n(flagged explicitly)\"]\n H -->|No| J[Single-source result]\n I --> K[Unified Results + Gap Report]\n J --> K\n\n style A fill:#f0f0f0,stroke:#333\n style G fill:#e3f2fd,stroke:#1565c0\n style I fill:#e8f5e9,stroke:#2e7d32\n style K fill:#fff3e0,stroke:#e65100`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Layer 1 — Vault Search`}),` uses a hybrid retrieval engine combining BM25 keyword matching, vector embeddings, and LLM reranking across 2,600+ documents. The hybrid approach matters because marketing language is inconsistent — the same concept gets called different things in different contexts.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Layer 2 — Live Memory`}),` queries a persistent observation database filtered to decisions and session summaries. The full database has 13,000+ entries, but most are tool-level minutiae. Filtering by type is what makes this layer useful rather than noisy.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Layer 3 — Session History`}),` searches structured records of past work sessions with type-scoping. Session summaries with their request/learned/completed fields are far more useful than raw observation dumps.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Layer 4 — Keyword Index`}),` runs fast exact-match grep across key directories. This catches things semantic layers miss — specific names, acronyms, or identifiers that don’t embed well.`]}),`\n`,_jsxs(_components.p,{children:[`The synthesis layer does two things individual searches can’t: `,_jsx(_components.strong,{children:`cross-source detection`}),` (flagging when the same concept appears in multiple layers) and `,_jsx(_components.strong,{children:`gap reporting`}),` (noting when a topic has zero hits across all sources — itself useful information).`]}),`\n`,_jsx(Heading,{level:`2`,id:`in-practice`,children:`In Practice`}),`\n`,_jsx(_components.p,{children:`The most common trigger is “what do we know about X?” before starting new work. Before this existed, I’d search the vault, maybe remember to check memory, forget session history, and start with incomplete context.`}),`\n`,_jsx(_components.p,{children:`A recent example: before drafting a competitive positioning brief, I ran a recall query on a competitor. The vault returned two analysis documents. Live memory surfaced a decision from a stakeholder meeting about how to frame the comparison. Session history showed we’d discussed this competitor in three prior sessions, with the most recent noting our initial approach had been corrected by leadership. The keyword index caught a mention in meeting notes the semantic search had missed.`}),`\n`,_jsx(_components.p,{children:`The whole retrieval took about 4 seconds. Assembling that manually would have taken 8-10 minutes, and I almost certainly would have missed the session history correction, which turned out to be the most important piece.`}),`\n`,_jsx(Heading,{level:`2`,id:`what-i-learned-building-this`,children:`What I Learned Building This`}),`\n`,_jsx(_components.p,{children:`The design principle that made this work was “always search all four layers.” Early versions tried to be smart about which layers to query based on the question type. That optimization was wrong. The whole point of federation is catching things you didn’t expect to find in a particular source. The decision stored in session history that contradicts the vault article is exactly the result you’d miss with clever routing.`}),`\n`,_jsx(_components.p,{children:`Cross-source hits turned out to be the most valuable signal in the system. When the same concept appears in a vault document and a live memory observation and a session record, that’s not redundancy — it’s confirmation. I started flagging these explicitly in results, and they consistently point to the highest-confidence information.`}),`\n`,_jsx(_components.p,{children:`The live memory layer was the trickiest. Querying 13,000+ observations unfiltered drowns results in noise. Filtering by type before searching fixed it — decisions and session summaries update strategic understanding. The thousands of discovery-type observations are useful for the system’s internal operation but useless for strategic recall. That single filter took the layer from noisy to essential.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Searching Everything at Once","description":"A federated recall system that queries a documentation vault, live memory, session history, and keyword indexes in parallel — then deduplicates and ranks the results.","icon":"magnifying-glass","href":"/skills/federated-search"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Searching Everything at Once","slug":"searching-everything-at-once","depth":1,"children":[]},{"title":"The Problem","slug":"the-problem","depth":2,"children":[]},{"title":"How It Works","slug":"how-it-works","depth":2,"children":[]},{"title":"In Practice","slug":"in-practice","depth":2,"children":[]},{"title":"What I Learned Building This","slug":"what-i-learned-building-this","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"elrolio","siteName":"elrolio","title":"Searching Everything at Once - elrolio","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-06-03T04:38:41.308Z","originalFileLocation":"skills/federated-search.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"A federated recall system that queries a documentation vault, live memory, session history, and keyword indexes in parallel — then deduplicates and ranks the results.\">\u003cmeta data-mint-head name=\"application-name\" content=\"elrolio\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/elrolio/yV8vglGrQeyA2k5n/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/elrolio/yV8vglGrQeyA2k5n/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/elrolio/yV8vglGrQeyA2k5n/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/elrolio/yV8vglGrQeyA2k5n/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/elrolio/yV8vglGrQeyA2k5n/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/elrolio/yV8vglGrQeyA2k5n/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/elrolio/yV8vglGrQeyA2k5n/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/elrolio/yV8vglGrQeyA2k5n/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/elrolio/yV8vglGrQeyA2k5n/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Searching Everything at Once - elrolio\">\u003cmeta data-mint-head property=\"og:description\" content=\"A federated recall system that queries a documentation vault, live memory, session history, and keyword indexes in parallel — then deduplicates and ranks the results.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"elrolio\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://elrolio.mintlify.app/skills/federated-search\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://elrolio.mintlify.site/_mintlify/api/og/v2?division=Skills\u0026amp;title=Searching+Everything+at+Once\u0026amp;description=A+federated+recall+system+that+queries+a+documentation+vault%2C+live+memory%2C+session+history%2C+and+keyword+indexes+in+parallel+%E2%80%94+then+deduplicates+and+ranks+the+re\u0026amp;theme=43f1ed976aab1be6e9fd6fc3\u0026amp;signature=7544f927985ec0bbf2e866ae7f1a0e735d5f7d820b2e4abd3cb79575e7996979\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Searching Everything at Once - elrolio\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"A federated recall system that queries a documentation vault, live memory, session history, and keyword indexes in parallel — then deduplicates and ranks the results.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://elrolio.mintlify.site/_mintlify/api/og/v2?division=Skills\u0026amp;title=Searching+Everything+at+Once\u0026amp;description=A+federated+recall+system+that+queries+a+documentation+vault%2C+live+memory%2C+session+history%2C+and+keyword+indexes+in+parallel+%E2%80%94+then+deduplicates+and+ranks+the+re\u0026amp;theme=43f1ed976aab1be6e9fd6fc3\u0026amp;signature=7544f927985ec0bbf2e866ae7f1a0e735d5f7d820b2e4abd3cb79575e7996979\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/elrolio/yV8vglGrQeyA2k5n/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"elrolio\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#E5322A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://elrolio.mintlify.app/skills/federated-search\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/skills/federated-search.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://elrolio.mintlify.app/#organization\",\"name\":\"elrolio\",\"url\":\"https://elrolio.mintlify.app\"},{\"@type\":\"WebSite\",\"@id\":\"https://elrolio.mintlify.app#website\",\"name\":\"elrolio\",\"url\":\"https://elrolio.mintlify.app\",\"publisher\":{\"@id\":\"https://elrolio.mintlify.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://elrolio.mintlify.app/skills/federated-search#webpage\",\"url\":\"https://elrolio.mintlify.app/skills/federated-search\",\"name\":\"Searching Everything at Once\",\"description\":\"A federated recall system that queries a documentation vault, live memory, session history, and keyword indexes in parallel — then deduplicates and ranks the results.\",\"dateModified\":\"2026-06-03T04:38:41.308Z\",\"isPartOf\":{\"@id\":\"https://elrolio.mintlify.app#website\"},\"breadcrumb\":{\"@id\":\"https://elrolio.mintlify.app/skills/federated-search#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://elrolio.mintlify.app/skills/federated-search#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Skills\",\"item\":\"https://elrolio.mintlify.app/skills/competitive-intelligence\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Searching Everything at Once\",\"item\":\"https://elrolio.mintlify.app/skills/federated-search\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://elrolio.mintlify.app/skills/federated-search#article\",\"headline\":\"Searching Everything at Once\",\"name\":\"Searching Everything at Once\",\"description\":\"A federated recall system that queries a documentation vault, live memory, session history, and keyword indexes in parallel — then deduplicates and ranks the results.\",\"url\":\"https://elrolio.mintlify.app/skills/federated-search\",\"mainEntityOfPage\":{\"@id\":\"https://elrolio.mintlify.app/skills/federated-search#webpage\"},\"dateModified\":\"2026-06-03T04:38:41.308Z\",\"publisher\":{\"@id\":\"https://elrolio.mintlify.app/#organization\"},\"isPartOf\":{\"@id\":\"https://elrolio.mintlify.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"elrolio\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"elrolio\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/skills/federated-search.md","siteName":"elrolio","nav":{"global":null,"groups":[{"group":"Home","pages":[{"title":"Matthew Scott — An AI-Native Journal","mode":"custom","href":"/index"},{"title":"How this journal gets made","icon":"pen-nib","href":"/how-this-journal-gets-made"}]},{"group":"Journal","pages":[{"title":"Journal","icon":"book-open","href":"/journal/index"},{"title":"Three whiteboards of my own setup","icon":"chalkboard","href":"/journal/2026-11-11-three-whiteboards-of-my-own-setup"},{"title":"Moving an agent harness to a new job","icon":"box-archive","href":"/journal/2026-10-11-moving-an-agent-harness-to-a-new-job"},{"title":"What would follow me to a new job","icon":"suitcase","href":"/journal/2026-09-20-what-would-follow-me-to-a-new-job"},{"title":"My agent was never on the model I thought it was","icon":"magnifying-glass","href":"/journal/2026-09-01-dispatch-was-never-on-fable"},{"title":"Move Dispatch to Opus 5 without losing your setup","icon":"arrows-rotate","href":"/journal/2026-07-26-move-dispatch-to-opus-5"},{"title":"A VP said it shipped. That's not a source.","icon":"receipt","href":"/journal/2026-07-23-a-vp-said-it-shipped"},{"title":"My always-on agent almost never pinged me. The budget wasn't the problem.","icon":"bell-slash","href":"/journal/2026-07-23-agent-quiet-budget-never-bound"},{"title":"Six agents critiqued my card design and killed my favorite idea","icon":"users","href":"/journal/2026-07-23-design-critique-council"},{"title":"Evaluating new tools against your own graveyard","icon":"scale-balanced","href":"/journal/2026-07-19-evaluating-tools-against-your-own-graveyard"},{"title":"A memory system had been quietly wrong about me since March","icon":"eye-slash","href":"/journal/2026-07-15-quietly-wrong-since-march"},{"title":"Two agents shared a filesystem for weeks without knowing the other existed","icon":"bridge","href":"/journal/2026-07-05-two-agents-one-vault"},{"title":"Where knowledge goes to die: making an agent audit its own memory","icon":"magnifying-glass","href":"/journal/2026-07-04-where-knowledge-goes-to-die"},{"title":"The Year-in-Review That Corrected Itself","icon":"chart-line","href":"/journal/2026-06-30-the-year-in-review-that-corrected-itself"},{"title":"Redesigning a Branded Deck Through an Agent — and What Its Renders Missed","icon":"arrows-rotate","href":"/journal/2026-06-26-redesigning-a-branded-deck-through-an-agent"},{"title":"Reorganizing a Knowledge Base by Lineage, Not by Filename","icon":"folder-tree","href":"/journal/2026-06-17-reorganizing-a-vault-by-lineage"},{"title":"Wiring a Second Opinion Into How I Plan With AI","icon":"code-compare","href":"/journal/2026-06-17-second-opinion-into-planning"},{"title":"Nobody was watching that page","icon":"eye-slash","href":"/journal/2026-06-04-nobody-was-watching-that-page"},{"title":"Level 10, Level 3","icon":"stairs","href":"/journal/2026-06-02-level-10-level-3"},{"title":"The Skill That Only Ran on My Machine","icon":"cube","href":"/journal/2026-06-02-skill-that-only-ran-on-my-machine"},{"title":"I Built the Wrong Model Twice Before I Checked What Was Actually There","icon":"magnifying-glass","href":"/journal/2026-06-01-verify-the-source"},{"title":"42 Artifacts in One Evening: How I Turned a Stuck Project Into a Repeatable System","icon":"layer-group","href":"/journal/2026-05-08-compare-page-sprint"}]},{"group":"Skills","pages":[{"title":"Competitive Intelligence That Reps Actually Use","icon":"swords","href":"/skills/competitive-intelligence"},{"title":"Multi-Pass Editorial Review Without the Bottleneck","icon":"pen-nib","href":"/skills/editorial-pipeline"},{"title":"Making the System Learn from Itself","description":"A structured loop that captures session decisions, extracts patterns, compiles standing knowledge, and feeds it back — so the AI system gets better at marketing work the more it does.","icon":"arrows-rotate","href":"/skills/compound-learning"},{"title":"Searching Everything at Once","icon":"magnifying-glass","href":"/skills/federated-search"},{"title":"Parallel Editing Beats Sequential Editing","description":"A 4-stage content pipeline where three AI editors work simultaneously on different dimensions — then a coordinator merges the best of each.","icon":"conveyor-belt","href":"/skills/content-pipeline"},{"title":"Structured Honesty About Weak Thinking","icon":"magnifying-glass","href":"/skills/strategic-reasoning"}]},{"group":"Reflections","pages":[{"title":"Reflections","icon":"lightbulb","href":"/reflections/index"},{"title":"The Year It Stopped Being an Editing Problem","icon":"door-open","href":"/reflections/2026-06-30-the-year-it-stopped-being-an-editing-problem"},{"title":"The thing that helps me think can't remember doing it","icon":"circle-question","href":"/reflections/2026-06-10-the-thing-that-helps-me-think"}]}]},"basePath":"","title":"Searching Everything at Once - elrolio","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":[],"chunks":[]}