name: enterprise-search
description: Design cross-tool knowledge retrieval strategies, architect enterprise search systems, and tune relevance models. Use when building internal search experiences, consolidating knowledge across tools, or improving search result quality.
tags: [search, knowledge-management, information-retrieval]
Enterprise Search
Business-oriented framework for designing cross-tool knowledge retrieval, architecting enterprise search systems, and tuning relevance models. Focused on strategy and requirements — for technical implementation, see hybrid-search-implementation and similarity-search-patterns in the ai-ml domain.
Use this skill when
- Designing an enterprise search strategy across multiple internal tools (Confluence, Slack, Drive, SharePoint, GitHub)
- Choosing between federated, centralized, or hybrid search architectures
- Defining relevance tuning requirements and quality metrics
- Building a knowledge taxonomy or metadata schema for searchable content
- Creating search UX requirements for internal portals
- Evaluating search quality and measuring improvement
Do not use this skill when
- Implementing vector search or embeddings at code level (use
hybrid-search-implementation)
- Building similarity search with specific vector databases (use
similarity-search-patterns)
- Optimizing web SEO for external search engines (use
seo-audit)
- Building RAG pipelines for LLM applications (use RAG skills in ai-ml domain)
Instructions
- Audit current state — inventory all content sources, volumes, and access patterns.
- Choose architecture — federated, centralized, or hybrid based on your constraints.
- Design taxonomy — define metadata schema, facets, and tagging standards.
- Define relevance model — scoring factors, boosting rules, and personalization signals.
- Set quality metrics — establish baselines and targets for search quality.
- Design search UX — autocomplete, facets, snippets, and result presentation.
Search Architecture Patterns
Architecture Comparison
| Pattern |
How It Works |
Pros |
Cons |
Best For |
| Federated |
Query multiple sources in real-time, merge results |
No data duplication, real-time freshness |
Slower, limited cross-source ranking |
Small orgs (<500 people), few sources |
| Centralized |
Ingest all content into single search index |
Best relevance, fastest queries, unified ranking |
Data duplication, sync complexity, stale content risk |
Large orgs, search-critical workflows |
| Hybrid |
Centralized index for primary sources + federated for long-tail |
Balanced cost vs. quality |
Most complex to maintain |
Mid-to-large orgs with diverse source landscape |
Connector Architecture
| Source |
Connector Type |
Sync Method |
Typical Latency |
| Confluence / Wiki |
REST API |
Incremental (webhook + poll) |
Near real-time |
| Slack / Teams |
Events API |
Streaming |
Real-time |
| Google Drive |
Drive API + Changes API |
Incremental |
5-15 min |
| SharePoint |
Graph API |
Delta query |
5-15 min |
| GitHub |
Webhooks + REST API |
Event-driven |
Near real-time |
| Jira / Linear |
REST API + Webhooks |
Incremental |
Near real-time |
| Email |
Graph API / Gmail API |
Incremental |
15-30 min |
| Database |
CDC (Change Data Capture) |
Streaming |
Near real-time |
Access Control
Critical requirement: Search results must respect source-level permissions.
| Approach |
How It Works |
Trade-off |
| Early binding |
Filter at index time (only index what user can access) |
Secure but requires per-user indices or ACL tagging |
| Late binding |
Filter at query time (check permissions on each result) |
Simpler indexing but slower queries at scale |
| Hybrid |
Group-based ACL at index + user-level check at query |
Best balance for most orgs |
Knowledge Taxonomy Design
Metadata Schema
Every indexed document should carry these metadata fields:
| Field |
Type |
Purpose |
Example |
title |
string |
Primary display and search field |
"Q4 Revenue Report" |
source |
enum |
Origin system |
confluence, slack, drive, github |
content_type |
enum |
Document classification |
document, conversation, code, ticket |
team |
string |
Owning team or department |
"Engineering", "Sales" |
created_at |
datetime |
For freshness scoring |
2026-01-15T10:30:00Z |
updated_at |
datetime |
For freshness and deduplication |
2026-02-28T14:00:00Z |
author |
string |
For personalization and credibility |
"jane.doe@company.com" |
access_groups |
list[string] |
For permission filtering |
["engineering", "all-staff"] |
tags |
list[string] |
For faceted navigation |
["architecture", "adr", "database"] |
status |
enum |
Content lifecycle |
draft, published, archived |
Tagging Standards
| Rule |
Rationale |
| Use controlled vocabulary (not free-text tags) |
Prevents tag proliferation and inconsistency |
| Max 5 tags per document |
Forces specificity over over-tagging |
| Tags use kebab-case |
Consistency with URLs and search queries |
| Review tag taxonomy quarterly |
Remove unused tags, merge synonyms |
| Auto-tag where possible |
Use classification models to suggest tags on creation |
Content Freshness Policies
| Content Type |
Freshness Target |
Stale Threshold |
Action When Stale |
| Documentation |
Updated quarterly |
>6 months |
Flag for review |
| Meeting notes |
Permanent |
N/A |
Reduce ranking weight over time |
| Code / PRs |
Always current (live sync) |
N/A |
N/A |
| Tickets / Issues |
Live sync |
N/A |
Archive closed items after 12 months |
| Policies / Runbooks |
Updated semi-annually |
>12 months |
Alert content owner |
Relevance Tuning Framework
Scoring Factors
| Factor |
Weight |
Description |
| Text relevance (BM25) |
40% |
Keyword match quality — title, body, tags |
| Freshness |
20% |
More recent content ranked higher (decay function) |
| Popularity |
15% |
View count, link count, citation count |
| Personalization |
15% |
User's team, recent searches, frequently accessed sources |
| Source authority |
10% |
Official docs > Slack messages > personal notes |
Field Boosting
| Field |
Boost Factor |
Rationale |
| Title |
3.0x |
Titles are the strongest relevance signal |
| Tags |
2.0x |
Curated metadata is high-signal |
| Headings (H1-H3) |
1.5x |
Section headers indicate topic boundaries |
| Body text |
1.0x |
Baseline — full content match |
| Comments |
0.5x |
Noisy, often tangential |
Query Understanding
| Technique |
Purpose |
Example |
| Synonym expansion |
Match equivalent terms |
"deploy" → "deploy, release, ship" |
| Spell correction |
Handle typos |
"kuberntes" → "kubernetes" |
| Intent classification |
Route to specialized search |
"how do I deploy" → tutorial filter |
| Entity recognition |
Boost specific entities |
"John's PR for auth" → person + code filter |
Search Quality Metrics
Core Metrics
| Metric |
Formula |
Target |
How to Measure |
| MRR (Mean Reciprocal Rank) |
Average of 1/rank of first relevant result |
>0.6 |
Relevance judgments on sample queries |
| NDCG@10 |
Normalized discounted cumulative gain at position 10 |
>0.7 |
Graded relevance judgments |
| Precision@5 |
% of top 5 results that are relevant |
>60% |
Binary relevance judgments |
| Zero-Result Rate |
% of queries returning no results |
<5% |
Log analysis |
| Click-Through Rate |
% of searches that result in a click |
>40% |
Click tracking |
| Query Reformulation Rate |
% of searches followed by a refined query |
<20% |
Session analysis |
| Time to Result |
p50 and p95 query latency |
p50 <200ms, p95 <1s |
Infrastructure monitoring |
Quality Improvement Loop
1. Sample 100 queries weekly from search logs
2. Have 2+ raters judge relevance of top 10 results (0-3 scale)
3. Calculate MRR, NDCG@10, Precision@5
4. Identify failure patterns (categories of bad results)
5. Adjust relevance model (boosting, synonyms, freshness weights)
6. A/B test changes against baseline
7. Repeat monthly
Search UX Patterns
| Pattern |
Purpose |
Implementation Notes |
| Autocomplete |
Reduce typing, guide to known content |
Suggest from titles, tags, and popular queries |
| Faceted navigation |
Filter by source, type, team, date |
Show counts per facet; update dynamically |
| Snippets / Highlights |
Show matching content in context |
Highlight query terms in 2-3 sentence excerpts |
| Related queries |
Help users refine or explore |
"People also searched for..." based on co-occurrence |
| Source badges |
Indicate content origin |
Confluence icon, Slack icon, etc. |
| Freshness indicator |
Show content age |
"Updated 2 days ago" vs. "Updated 2 years ago" |
| "Did you mean?" |
Handle typos gracefully |
Only suggest when confidence >80% |
Output Template: Enterprise Search Requirements Document
# Enterprise Search Requirements — [Project Name]
## Current State
- **Content sources:** [list with estimated volumes]
- **Current search tools:** [what people use today]
- **Top pain points:** [from user interviews]
## Architecture Decision
- **Pattern:** [Federated / Centralized / Hybrid]
- **Rationale:** [why this pattern]
- **Search platform:** [Elasticsearch, Typesense, Algolia, Vespa, etc.]
## Scope (Phase 1)
- **Sources to index:** [list with priority]
- **Content types:** [documents, conversations, code, tickets]
- **Users:** [target audience and access model]
## Relevance Model
- **Scoring factors:** [weights per factor]
- **Field boosting:** [title, tags, headings, body]
- **Freshness decay:** [function and parameters]
## Quality Targets
| Metric | Baseline | Target |
|--------|----------|--------|
| MRR | [current] | [goal] |
| Zero-result rate | [current] | <5% |
| p95 latency | [current] | <1s |
## Roadmap
- Phase 1: [Core sources, basic search] — [timeline]
- Phase 2: [Additional sources, relevance tuning] — [timeline]
- Phase 3: [Personalization, AI-powered features] — [timeline]
Common Mistakes
- Indexing everything without curation — more content does not mean better search; noisy sources dilute quality
- Ignoring access control — leaking confidential documents through search is a security incident
- No freshness weighting — returning 3-year-old docs before this week's update frustrates users
- Not measuring search quality — if you don't measure MRR/NDCG, you can't improve
- Building search without user research — understand what people actually search for before designing the system
- Treating search as a one-time project — relevance tuning is ongoing; plan for continuous improvement
Additional Resources
- Related skills:
hybrid-search-implementation (ai-ml — technical implementation), similarity-search-patterns (ai-ml — vector search)
- Elasticsearch / OpenSearch — open-source search engines
- Algolia — managed search platform
- Vespa — open-source search and recommendation engine
1---2name: enterprise-search-23description: <!-- AUTO-GENERATED by export-plugins.py — DO NOT EDIT -->4---5<!-- AUTO-GENERATED by export-plugins.py — DO NOT EDIT -->6---7name: enterprise-search8description: Design cross-tool knowledge retrieval strategies, architect enterprise search systems, and tune relevance models. Use when building internal search experiences, consolidating knowledge across tools, or improving search result quality.9tags: [search, knowledge-management, information-retrieval]10---1112# Enterprise Search1314Business-oriented framework for designing cross-tool knowledge retrieval, architecting enterprise search systems, and tuning relevance models. Focused on strategy and requirements — for technical implementation, see `hybrid-search-implementation` and `similarity-search-patterns` in the ai-ml domain.1516## Use this skill when1718- Designing an enterprise search strategy across multiple internal tools (Confluence, Slack, Drive, SharePoint, GitHub)19- Choosing between federated, centralized, or hybrid search architectures20- Defining relevance tuning requirements and quality metrics21- Building a knowledge taxonomy or metadata schema for searchable content22- Creating search UX requirements for internal portals23- Evaluating search quality and measuring improvement2425## Do not use this skill when2627- Implementing vector search or embeddings at code level (use `hybrid-search-implementation`)28- Building similarity search with specific vector databases (use `similarity-search-patterns`)29- Optimizing web SEO for external search engines (use `seo-audit`)30- Building RAG pipelines for LLM applications (use RAG skills in ai-ml domain)3132## Instructions33341. **Audit current state** — inventory all content sources, volumes, and access patterns.352. **Choose architecture** — federated, centralized, or hybrid based on your constraints.363. **Design taxonomy** — define metadata schema, facets, and tagging standards.374. **Define relevance model** — scoring factors, boosting rules, and personalization signals.385. **Set quality metrics** — establish baselines and targets for search quality.396. **Design search UX** — autocomplete, facets, snippets, and result presentation.4041---4243## Search Architecture Patterns4445### Architecture Comparison4647| Pattern | How It Works | Pros | Cons | Best For |48|---------|-------------|------|------|----------|49| **Federated** | Query multiple sources in real-time, merge results | No data duplication, real-time freshness | Slower, limited cross-source ranking | Small orgs (<500 people), few sources |50| **Centralized** | Ingest all content into single search index | Best relevance, fastest queries, unified ranking | Data duplication, sync complexity, stale content risk | Large orgs, search-critical workflows |51| **Hybrid** | Centralized index for primary sources + federated for long-tail | Balanced cost vs. quality | Most complex to maintain | Mid-to-large orgs with diverse source landscape |5253### Connector Architecture5455| Source | Connector Type | Sync Method | Typical Latency |56|--------|---------------|-------------|-----------------|57| **Confluence / Wiki** | REST API | Incremental (webhook + poll) | Near real-time |58| **Slack / Teams** | Events API | Streaming | Real-time |59| **Google Drive** | Drive API + Changes API | Incremental | 5-15 min |60| **SharePoint** | Graph API | Delta query | 5-15 min |61| **GitHub** | Webhooks + REST API | Event-driven | Near real-time |62| **Jira / Linear** | REST API + Webhooks | Incremental | Near real-time |63| **Email** | Graph API / Gmail API | Incremental | 15-30 min |64| **Database** | CDC (Change Data Capture) | Streaming | Near real-time |6566### Access Control6768**Critical requirement:** Search results must respect source-level permissions.6970| Approach | How It Works | Trade-off |71|----------|-------------|-----------|72| **Early binding** | Filter at index time (only index what user can access) | Secure but requires per-user indices or ACL tagging |73| **Late binding** | Filter at query time (check permissions on each result) | Simpler indexing but slower queries at scale |74| **Hybrid** | Group-based ACL at index + user-level check at query | Best balance for most orgs |7576---7778## Knowledge Taxonomy Design7980### Metadata Schema8182Every indexed document should carry these metadata fields:8384| Field | Type | Purpose | Example |85|-------|------|---------|---------|86| `title` | string | Primary display and search field | "Q4 Revenue Report" |87| `source` | enum | Origin system | confluence, slack, drive, github |88| `content_type` | enum | Document classification | document, conversation, code, ticket |89| `team` | string | Owning team or department | "Engineering", "Sales" |90| `created_at` | datetime | For freshness scoring | 2026-01-15T10:30:00Z |91| `updated_at` | datetime | For freshness and deduplication | 2026-02-28T14:00:00Z |92| `author` | string | For personalization and credibility | "jane.doe@company.com" |93| `access_groups` | list[string] | For permission filtering | ["engineering", "all-staff"] |94| `tags` | list[string] | For faceted navigation | ["architecture", "adr", "database"] |95| `status` | enum | Content lifecycle | draft, published, archived |9697### Tagging Standards9899| Rule | Rationale |100|------|-----------|101| Use controlled vocabulary (not free-text tags) | Prevents tag proliferation and inconsistency |102| Max 5 tags per document | Forces specificity over over-tagging |103| Tags use kebab-case | Consistency with URLs and search queries |104| Review tag taxonomy quarterly | Remove unused tags, merge synonyms |105| Auto-tag where possible | Use classification models to suggest tags on creation |106107### Content Freshness Policies108109| Content Type | Freshness Target | Stale Threshold | Action When Stale |110|-------------|-----------------|-----------------|-------------------|111| Documentation | Updated quarterly | >6 months | Flag for review |112| Meeting notes | Permanent | N/A | Reduce ranking weight over time |113| Code / PRs | Always current (live sync) | N/A | N/A |114| Tickets / Issues | Live sync | N/A | Archive closed items after 12 months |115| Policies / Runbooks | Updated semi-annually | >12 months | Alert content owner |116117---118119## Relevance Tuning Framework120121### Scoring Factors122123| Factor | Weight | Description |124|--------|--------|-------------|125| **Text relevance (BM25)** | 40% | Keyword match quality — title, body, tags |126| **Freshness** | 20% | More recent content ranked higher (decay function) |127| **Popularity** | 15% | View count, link count, citation count |128| **Personalization** | 15% | User's team, recent searches, frequently accessed sources |129| **Source authority** | 10% | Official docs > Slack messages > personal notes |130131### Field Boosting132133| Field | Boost Factor | Rationale |134|-------|-------------|-----------|135| Title | 3.0x | Titles are the strongest relevance signal |136| Tags | 2.0x | Curated metadata is high-signal |137| Headings (H1-H3) | 1.5x | Section headers indicate topic boundaries |138| Body text | 1.0x | Baseline — full content match |139| Comments | 0.5x | Noisy, often tangential |140141### Query Understanding142143| Technique | Purpose | Example |144|-----------|---------|---------|145| **Synonym expansion** | Match equivalent terms | "deploy" → "deploy, release, ship" |146| **Spell correction** | Handle typos | "kuberntes" → "kubernetes" |147| **Intent classification** | Route to specialized search | "how do I deploy" → tutorial filter |148| **Entity recognition** | Boost specific entities | "John's PR for auth" → person + code filter |149150---151152## Search Quality Metrics153154### Core Metrics155156| Metric | Formula | Target | How to Measure |157|--------|---------|--------|---------------|158| **MRR (Mean Reciprocal Rank)** | Average of 1/rank of first relevant result | >0.6 | Relevance judgments on sample queries |159| **NDCG@10** | Normalized discounted cumulative gain at position 10 | >0.7 | Graded relevance judgments |160| **Precision@5** | % of top 5 results that are relevant | >60% | Binary relevance judgments |161| **Zero-Result Rate** | % of queries returning no results | <5% | Log analysis |162| **Click-Through Rate** | % of searches that result in a click | >40% | Click tracking |163| **Query Reformulation Rate** | % of searches followed by a refined query | <20% | Session analysis |164| **Time to Result** | p50 and p95 query latency | p50 <200ms, p95 <1s | Infrastructure monitoring |165166### Quality Improvement Loop167168```1691. Sample 100 queries weekly from search logs1702. Have 2+ raters judge relevance of top 10 results (0-3 scale)1713. Calculate MRR, NDCG@10, Precision@51724. Identify failure patterns (categories of bad results)1735. Adjust relevance model (boosting, synonyms, freshness weights)1746. A/B test changes against baseline1757. Repeat monthly176```177178---179180## Search UX Patterns181182| Pattern | Purpose | Implementation Notes |183|---------|---------|---------------------|184| **Autocomplete** | Reduce typing, guide to known content | Suggest from titles, tags, and popular queries |185| **Faceted navigation** | Filter by source, type, team, date | Show counts per facet; update dynamically |186| **Snippets / Highlights** | Show matching content in context | Highlight query terms in 2-3 sentence excerpts |187| **Related queries** | Help users refine or explore | "People also searched for..." based on co-occurrence |188| **Source badges** | Indicate content origin | Confluence icon, Slack icon, etc. |189| **Freshness indicator** | Show content age | "Updated 2 days ago" vs. "Updated 2 years ago" |190| **"Did you mean?"** | Handle typos gracefully | Only suggest when confidence >80% |191192---193194## Output Template: Enterprise Search Requirements Document195196```markdown197# Enterprise Search Requirements — [Project Name]198199## Current State200- **Content sources:** [list with estimated volumes]201- **Current search tools:** [what people use today]202- **Top pain points:** [from user interviews]203204## Architecture Decision205- **Pattern:** [Federated / Centralized / Hybrid]206- **Rationale:** [why this pattern]207- **Search platform:** [Elasticsearch, Typesense, Algolia, Vespa, etc.]208209## Scope (Phase 1)210- **Sources to index:** [list with priority]211- **Content types:** [documents, conversations, code, tickets]212- **Users:** [target audience and access model]213214## Relevance Model215- **Scoring factors:** [weights per factor]216- **Field boosting:** [title, tags, headings, body]217- **Freshness decay:** [function and parameters]218219## Quality Targets220| Metric | Baseline | Target |221|--------|----------|--------|222| MRR | [current] | [goal] |223| Zero-result rate | [current] | <5% |224| p95 latency | [current] | <1s |225226## Roadmap227- Phase 1: [Core sources, basic search] — [timeline]228- Phase 2: [Additional sources, relevance tuning] — [timeline]229- Phase 3: [Personalization, AI-powered features] — [timeline]230```231232---233234## Common Mistakes235236- **Indexing everything without curation** — more content does not mean better search; noisy sources dilute quality237- **Ignoring access control** — leaking confidential documents through search is a security incident238- **No freshness weighting** — returning 3-year-old docs before this week's update frustrates users239- **Not measuring search quality** — if you don't measure MRR/NDCG, you can't improve240- **Building search without user research** — understand what people actually search for before designing the system241- **Treating search as a one-time project** — relevance tuning is ongoing; plan for continuous improvement242243---244245## Additional Resources246247- Related skills: `hybrid-search-implementation` (ai-ml — technical implementation), `similarity-search-patterns` (ai-ml — vector search)248- Elasticsearch / OpenSearch — open-source search engines249- Algolia — managed search platform250- Vespa — open-source search and recommendation engine251252<!-- Source: .faos/custom/skills/business/enterprise-search/SKILL.md -->