File Management

A complete file upload and management system. Direct-to-bucket uploads, PDF extraction, file sharing across teams, and a full dashboard — not a bolted-on afterthought.

Uploaded Files dashboard showing file list, filters, stats, and management actions

The file dashboard at /files — search, filter, share, and manage all uploaded files.

Direct-to-bucket uploads

Files upload directly from the browser to Railway bucket storage via presigned POST. No file bytes are proxied through your app server.

  • Presigned POST requests generated server-side
  • Browser uploads directly to S3-compatible storage
  • Metadata tracked in PostgreSQL after upload
  • CORS configuration documented for Railway buckets

PDF extraction via Mistral OCR

PDF files are automatically processed using Mistral OCR with markdown normalization. The same parser handles chat uploads and connector-fetched files from Drive and OneDrive.

  • Mistral OCR extracts text with structural markdown
  • Shared parser for uploads, Drive files, and OneDrive files
  • Handles Office formats (DOC, DOCX, XLSX, PPTX) and plain text
  • Extracted content made available to the AI during conversations

File sharing

Share uploaded files with your organization or specific teams. Shared files can be attached to messages by any team member.

  • Share with entire organization or specific teams
  • Shared files appear in a dedicated 'Shared with Me' section
  • Unshare action available to the file owner
  • Shared files can be attached to chat messages

Tabbed file dashboard

A full file management dashboard with three tabs: My Files, Org Files, and Team Files. Includes search, filters, pagination, and bulk actions.

  • My Files tab always available; Org/Team tabs appear in org context
  • Search by name (debounced), filter by type, filter by date (today/7d/30d)
  • Sort by newest, oldest, name, or size
  • Actions: share, rename, delete single, delete all with confirmations
  • File type icons for images, PDF, Word, Excel, PowerPoint, CSV, TXT, Markdown

Reusable file picker in chat

Users can attach previously uploaded files to any message without re-uploading. A picker dialog shows My Files and Shared with Me tabs.

  • Two attachment modes: upload new or reuse existing
  • Picker shows My Files and Shared with Me tabs
  • Up to 10 file attachments per message
  • Presigned GET URLs generated for file previews

Three ways to attach files

Drag and drop files directly onto the chat input, use the upload button, or type @ to tag previously uploaded files by name — the same way you'd mention a file in any modern tool.

Chat input showing the @ file tagging autocomplete with previously uploaded files

Type @ in the chat input to tag and attach previously uploaded files without re-uploading.

Security

Credentials never exposed client-side. Server-enforced MIME type validation, file size limits, and presigned URLs for all access.

  • Bucket credentials stay server-side only
  • MIME type and size validation enforced on the server
  • Presigned URLs with expiration for downloads and previews
  • 14 MIME types validated against at the chat API level

Supported file types

JPEG
Image
PNG
Image
WebP
Image
GIF
Image
PDF
Document
DOC
Document
DOCX
Document
XLSX
Document
PPTX
Document
CSV
Text
TXT
Text
MD
Text
MDX
Text

10 MB max per file. Up to 10 concurrent uploads and 10 attachments per message.

File management, built in from day one.

No hacked-together file flow — it's already part of the product.

Buy now
© 2026 hourzero. All rights reserved.