Knowledge Upload

Dev page for the Goal 2 / 2b upload flow (presign → PUT to storage → claim → poll ingestion) plus Goal 3b folders. Every document belongs to a base; folders are an optional nested grouping inside it. Served same-origin by NestJS, so the API is /api/v1 with no CORS involved (the raw PUT does go cross-origin to Cloudflare R2, which needs a CORS policy on the bucket). Token helper: /index.html · chat: /chat.html.

1. Access token
loading Clerk…

2. Knowledge bases

Goal 3c: bases are fixed, not created here -- your personal base, your company's base (if you have an org), and one base per department you belong to are all auto-provisioned by GET /knowledge/bases. Nothing to name or create.

3. Folders
Name

4. Upload a document

Uploads into the folder currently open above (root if none). PDF, DOCX, XLSX, PPTX and images (PNG/JPG/WEBP), 25 MB max. Images are OCR-only — one with no text in it is rejected. Status polls every 3s and gives up after 10 minutes.

Documents in the current folder

TitleStatusUpdated