Skip to content

File Upload Feature

This page summarizes the file upload flow Kilavuz provides. File upload lets a user store documents (CVs, transcripts, decks) under their own account and reuse them in AI features later.

Flow

  1. The user goes to the My files section of the account page.
  2. Files are added via drag-and-drop or a file picker.
  3. The upload passes type and size checks on the client; invalid files are rejected and a localized error is shown to the user.
  4. The server writes the file to object storage and creates a File record in the database, linked to the user.

Allowed types and size limits

  • Types: PDF, plain text, Markdown.
  • Maximum size: 10 MB per file. The total quota depends on the user’s plan.

The limits are defined in app/src/file-upload/fileUploading.ts; changing them requires an application redeploy.

Security

  • Uploaded files are downloaded through user-specific URLs; URLs carry single-use, time-limited signatures.
  • The server validates the MIME type from the file contents; the user-supplied type is not trusted.
  • Files are readable only by their owner; the admin panel does not access user files.

Removing a file

Removing a file soft-deletes the record with a deletedAt stamp, and the corresponding object in storage is cleaned up permanently by a scheduled job. The retention window depends on the deployment environment’s garbage-collection configuration.