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
- The user goes to the My files section of the account page.
- Files are added via drag-and-drop or a file picker.
- The upload passes type and size checks on the client; invalid files are rejected and a localized error is shown to the user.
- The server writes the file to object storage and creates a
Filerecord 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.