Introduction
DoxPro turns your product documentation into a grounded support assistant. Each customer gets a workspace with branding, knowledge uploads, usage quotas, and two keys: a publicKey for the browser widget and a secretKey for the console.
- Multi-tenant workspaces scoped by tenant ID
- Hybrid retrieval (vector + keyword) before every answer
- Streaming chat UX with source citations
- Refusal behavior when docs do not support the claim
Quickstart
- Create a workspace — you receive a public key and secret key once.
- Open the console with your secret key. Set name, welcome message, color, and logo.
- Upload knowledge (Markdown, text, or PDF) or paste content directly.
- Embed the widget with your public key (see Embed widget).
Authentication
DoxPro uses two credentials per workspace. Treat them like API keys for a production SaaS product.
| Credential | Where used | Rule |
|---|---|---|
publicKey | Browser widget / public chat API | Safe to expose in client code |
secretKey | Console · branding · knowledge uploads | Server-side / admin only — never ship to customers |
Platform admin JWT | List orgs, support, activate/delete workspaces | InterviewPro admin / super_admin at /admin/doxpro |
Request headers
| Header | Purpose |
|---|---|
x-doxpro-public-key | Authenticate public chat / widget requests |
x-doxpro-secret-key | Authenticate console admin routes |
Authorization: Bearer | Platform admin routes (InterviewPro JWT) |
Console
Sign in at /doxpro/login with your secret key. From the dashboard you can:
- Update assistant name, welcome copy, primary color, logo, and widget position
- Upload or paste knowledge documents
- Preview live chat against your indexed content
- Monitor token usage against your workspace quota
Platform admins manage all DoxPro organizations and support from /admin/doxpro (same InterviewPro admin session as the rest of the platform).
Embed widget
Drop one CDN script on any site — no React or npm install required. Pass only the public key. Auto-init via data-* attributes, or call window.DoxPro.init() after the script loads.
Paste before the closing body tag on any static or vanilla JS page.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>My site</title>
</head>
<body>
<!-- your page content -->
<script
src="https://www.interviewpro.info/embed/doxpro.js"
data-public-key="pk_live_…"
data-api-base="https://interviewpro-info-v2.vercel.app/api/doxpro/v1"
async
></script>
</body>
</html>| Attr / option | Type | Description |
|---|---|---|
data-public-key | string | Workspace public key (pk_live_…) |
data-api-base | string? | DoxPro v1 base, e.g. https://interviewpro-info-v2.vercel.app/api/doxpro/v1 |
data-default-open | boolean? | Open the bubble on first paint (optional) |
data-container | string? | CSS selector for mount node (defaults to #doxpro-root) |
Knowledge & RAG
When you upload a document, DoxPro validates it, hashes content for dedupe, splits it into overlapping chunks, embeds those chunks, and stores them scoped to your workspace.
Answer flow
- User question is embedded
- Hybrid retrieval blends vector + keyword rankings (RRF)
- Top passages are injected as grounding context
- Model streams a cited reply to the widget
- If nothing relevant is found, the assistant refuses invented product facts
API reference
Base path: /api/doxpro on the InterviewPro Express API. Public chat lives under /v1.
| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /api/doxpro/health | — | Service health + vector index status |
| POST | /api/doxpro/v1/chat | public key | Streaming grounded chat (SSE) |
| GET/PATCH | /api/doxpro/v1/admin/* | secret key | Branding, knowledge, usage |
| POST | /api/doxpro/v1/onboard | none | Public workspace signup |
| GET/PATCH | /api/doxpro/v1/admin/tenants | JWT admin | Platform admin org management |
Example chat request
curl -X POST "https://interviewpro-info-v2.vercel.app/api/doxpro/v1/chat" \
-H "Content-Type: application/json" \
-H "x-doxpro-public-key: pk_live_…" \
-d '{"messages":[{"role":"user","content":"What is your refund policy?"}]}'Limits
| Resource | Free workspace |
|---|---|
| Token quota | 1,000,000 tokens (chat + embeddings) |
| Upload size | 5 MB per file |
| Retrieval | Top ~6 grounded chunks per answer |
| Formats | .txt · .md · text PDF · paste |
Support
Need a custom RAG build or partnership? Reach the InterviewPro team via /contact-us.