Skip to main content

Admin: Verified Search

Administration reference for the Verified Search feature — monitoring, shared content management, subscription gating, and technical architecture.

Admin Overview#

The Verified Search feature operates autonomously with no dedicated admin management UI. User data is stored in the SearchConversation, SearchMessage, and SearchSpace tables. Sharing creates public URLs accessible without authentication. Subscription tier gating is enforced at the API level via getUserTier() and hasFeatureAccess().

Database Impact#

The Perplexity Search Parity update added one new table and modified two existing tables:

TableChangeGrowth Estimate
SearchSpace (NEW)User-private workspaces with custom instructions~3 rows per active user
SearchConversationAdded shareToken (unique), isPublic (boolean), spaceId (FK)~10% of rows will have shareToken
SearchMessageAdded attachments (JSON, nullable)~8% of rows will have attachments

Monitoring Search Usage#

Use these database queries to monitor adoption of search parity features:

1

Space Adoption

Count SearchSpace records to measure how many users are creating Spaces. Group by userId for per-user adoption.
2

Sharing Adoption

Count SearchConversation records where shareToken IS NOT NULL to measure sharing usage.
3

File Upload Usage

Count SearchMessage records where attachments IS NOT NULL to measure file upload adoption.
4

Space Assignment Rate

Count SearchConversation records where spaceId IS NOT NULL to measure how many threads are organized into Spaces.

Managing Shared Content#

If reported content is shared publicly via a share link, you can revoke access by updating the database directly:

1

Identify the conversation

Find the SearchConversation record by its shareToken or id.
2

Revoke the share link

Set isPublic = false and shareToken = NULL on the record. This immediately makes the public URL return a 404.

Subscription Gating#

All tier gating uses getUserTier() from lib/subscriptions/plan-gate.tsand hasFeatureAccess() from lib/subscriptions/feature-flags.ts. Limits are hardcoded in API route handlers (not configurable via admin UI).

LimitExplorerProfessionalBusinessEnterprise
File Upload1 file / 5 MB5 files / 20 MB10 files / 40 MB10 files / 40 MB
Spaces325UnlimitedUnlimited
DOCX ExportBlockedAllowedAllowedAllowed
PDF BrandingAlways onOptionalOptionalOptional
Image GenerationBlockedAllowedAllowedAllowed
PersonalizationBlockedAllowedAllowedAllowed

Data Models#

ModelKey FieldsPurposeCreated By
SearchConversationshareToken, isPublic, spaceIdConversation with sharing and Space supportUser starting a search
SearchMessageattachments (JSON)Message with optional file attachmentsEach search query/response
SearchSpacename, customInstructions, isDefault, userIdUser-private workspaceUser creating a Space

API Endpoints#

MethodRouteAuthPurpose
POST/GET/DELETE/api/search/conversations/[id]/shareAuth (owner)Create/get/revoke share link
GET/api/search/conversations/shared/[token]PublicFetch shared thread for public view
POST/api/search/exportAuthGenerate PDF/DOCX export
POST/api/search/uploadAuthUpload files with text extraction
GET/POST/api/search/spacesAuthList/create Spaces
GET/PATCH/DELETE/api/search/spaces/[id]AuthSpace detail/update/delete
POST/api/search/generate-imageAuth (Professional+)Generate image from prompt
GET/POST/api/search/conversationsAuthList (with spaceId filter) / create conversations
PATCH/api/search/conversations/[id]AuthUpdate conversation (incl. spaceId move)

Key Components#

ComponentFilePurpose
ShareThreadDialogcomponents/search/ShareThreadDialog.tsxShare link creation/revocation modal
SharedThreadViewcomponents/search/SharedThreadView.tsxRead-only shared conversation renderer
ExportMenucomponents/search/ExportMenu.tsxPDF/DOCX/Markdown export dropdown
FileUploadZonecomponents/search/FileUploadZone.tsxDrag-and-drop file upload
MediaResultscomponents/search/MediaResults.tsxImage/video result cards
VoiceInputButtoncomponents/search/VoiceInputButton.tsxWeb Speech API microphone
SpacesManagercomponents/search/SpacesManager.tsxSpace list with CRUD operations
SpaceInstructionsEditorcomponents/search/SpaceInstructionsEditor.tsxCustom instructions editor
HomeFeedcomponents/search/HomeFeed.tsxStarter suggestions + recent threads
ImageGenerationButtoncomponents/search/ImageGenerationButton.tsxInline image generation
FocusModeSelectorcomponents/search/FocusModeSelector.tsx10 focus mode chips

Feature Gating Configuration#

Eight new feature keys were added to lib/subscriptions/feature-flags.ts:

Feature KeyExplorerProfessionalBusinessEnterprise
search:shareYesYesYesYes
search:export-pdfYesYesYesYes
search:export-docxNoYesYesYes
search:file-uploadYesYesYesYes
search:spacesYesYesYesYes
search:personalizationNoYesYesYes
search:pagesNoYesYesYes
search:generationNoYesYesYes

Troubleshooting#