Skip to main content

Search and Discovery UX

Regulated KB search must let a compliance officer answer "who can see what, and why?" and a practitioner quickly find the right guidance.

Query Capabilities

  • Search across:
    • Title
    • Headings
    • Body
    • Tags
    • Regulation tags (e.g., hipaa:breach-notification, sec:17a-4)

Typeahead Sections

SectionDescription
DocumentsMatching document titles
SpacesMatching collections/workspaces
People/OwnersDocument owners matching query

Advanced Search Panel

Facet Filters

FacetValues
Document TypePolicy, SOP, Clinical Guideline, Risk Procedure
Classification LevelPublic, Internal, Confidential, Restricted, PHI
Retention CategoryHIPAA-6Y, FINRA-6Y, SEC-7Y
JurisdictionUS, EU, UK, BR, Multi-jurisdiction
Business UnitCompliance, Clinical, Trading, Risk

Status Filters

  • Draft
  • In review
  • Approved
  • Deprecated
  • On hold

Time-Based Filters

Keyed to retention:

  • Creation date
  • Last review date
  • Next re-certification date
  • Effective date
  • Expiry date

Saved Searches

Examples

Saved SearchQuery
HIPAA policies in reviewregulations:HIPAA AND status:in_review
KYC procedures expiringtype:procedure AND tag:kyc AND review_due_date:<90d
High-risk without attestationrisk_level:high AND attestation:missing

Features

  • User-defined smart folders
  • Scheduled alerts
  • Shared with team

RAG Integration

Integrate RAG-style semantic search in the results panel but always anchored back to specific Markdown docs and sections for auditability.

Requirements

  • Auditability: Every AI answer must cite source doc and section
  • Transparency: Show confidence scores
  • Fallback: Offer traditional search when semantic fails

Component Structure

// GlobalSearchBar.tsx
interface GlobalSearchBarProps {
query: string;
onQueryChange: (query: string) => void;
onSearch: (query: string) => void;
suggestions: SearchSuggestion[];
}

// AdvancedSearchPanel.tsx
interface AdvancedSearchPanelProps {
facets: FacetDefinition[];
selectedFilters: FacetSelection;
onFilterChange: (facet: string, values: string[]) => void;
}

// SavedSearchList.tsx
interface SavedSearchListProps {
searches: SavedSearch[];
onSelect: (searchId: string) => void;
onCreate: (search: SavedSearchInput) => void;
}

References