Files & Attachments
Files are first-class citizens in MeetLoyd. You can upload documents to conversations, attach files in chat, and let agents generate documents on the fly. Every file is security-scanned before processing.
How It Works
When you attach a file in chat, MeetLoyd:
- Scans the file through a zero-trust security pipeline
- Parses the content automatically (text extraction from PDFs, DOCX, XLSX, etc.)
- Injects the full parsed content into the agent's prompt
- Stores a compact summary in conversation history
The agent can immediately read, analyze, and reference your documents -- no manual download needed.
Supported Formats
| Format | Extensions | Max Size |
|---|---|---|
.pdf | 50 MB | |
| Word | .docx | 25 MB |
| Excel | .xlsx | 25 MB |
| PowerPoint | .pptx | 100 MB |
| CSV | .csv | 10 MB |
| Text | .txt | 5 MB |
| Markdown | .md | 5 MB |
| JSON | .json | 10 MB |
| Images | .png, .jpg, .gif, .webp | 20 MB |
Legacy Office formats (.doc, .xls, .ppt) are blocked because they use the OLE Compound format which can contain hidden macros and embedded executables. Convert to modern formats (DOCX, XLSX, PPTX) before uploading.
Security Pipeline
Every uploaded file goes through a zero-trust security pipeline before it is stored:
| Check | What It Does |
|---|---|
| Magic bytes verification | Verifies file content matches the claimed MIME type |
| Macro detection | Blocks files containing VBA macros or executable code |
| Zip bomb detection | Detects compression bombs in Office documents |
| XXE prevention | Blocks XML External Entity attacks in Office XML |
| Path traversal blocking | Prevents directory traversal in file names |
| Embedded executable detection | Finds hidden executables inside documents |
| Script injection detection | Catches script tags, event handlers, and JS protocol URIs |
If a file fails the scan, it is quarantined (saved to a secure location, not accessible) and the upload returns an error with details about the threat.
Content Injection
When you attach files to a chat message, MeetLoyd does not just send the agent a download link -- it injects the full parsed content directly into the agent's prompt.
Token Budgets
To prevent excessively long prompts, injected content is token-budgeted per model:
| Model Size | Token Budget |
|---|---|
| Large (Claude Opus/Sonnet, Gemini Pro) | ~16,000 tokens |
| Medium (GPT-4o) | ~12,000 tokens |
| Small (Haiku, Mini) | ~6,000 tokens |
If a file exceeds the budget, content is truncated. When multiple files are attached, the budget is split evenly.
What the Agent Sees vs. What is Stored
| Content | |
|---|---|
| Agent prompt | Full document text (e.g., the complete text of your PDF) |
| Conversation history | A compact summary (e.g., [Attached: Q4.pdf (3 pages, 2.1k words)]) |
This keeps conversation history lightweight while giving agents full context when they need it.
Uploading Files
Via Chat
Click the paperclip icon in any chat -- Admin conversations, Openspace team/agent chats, or Loyd:
- Click the paperclip button next to the message input
- Select one or more files from your device (up to 10 per message)
- Files upload immediately and appear as removable chips below the input
- Type an optional message
- Click Send
The agent receives the full extracted text automatically. Attached files also display as artifact cards in the conversation with format-specific icons and a download button.
Auto-Parsing
Every file is automatically parsed when uploaded. The extracted text is cached so agents can read your documents instantly without re-processing.
| Format | What is Extracted |
|---|---|
| Full text content, page count, plus vision descriptions of each page (diagrams, charts, screenshots) | |
| DOCX | Paragraphs, headings, tables, plus vision descriptions of embedded images |
| XLSX | Cell values across all sheets, plus vision descriptions of embedded images |
| PPTX | Slide text and notes, plus vision descriptions of embedded images |
| CSV | All rows and columns |
| TXT/MD/JSON | Raw content |
After upload, the file's parse status reflects the result: parsed (success), failed (extraction error), or unsupported (format not supported for parsing).
Image Understanding
Diagrams, screenshots, charts, and photos inside your documents aren't just ignored -- MeetLoyd sends each image through a vision-capable model and inlines the description alongside the extracted text. So when you ask an agent about a figure on page 3, it actually knows what's on page 3.
How MeetLoyd picks the vision model
Per image, in order:
- Your agent's BYOK model, if it supports vision (Claude, GPT-4o, Gemini Pro, Gemini Flash, Qwen-VL). No platform billing -- it's your own API key.
- The platform vision utility model (configurable per tenant via
utilityModels.visionin tenant settings). Default is Claude Sonnet; on-prem and BYOD tenants typically override to a self-hosted Qwen2.5-VL on vLLM to keep everything off the public internet. This path consumes platform credits. - No vision model available and no credits -- the image is left with a placeholder
[Image present but not described -- configure a BYOK vision model or credit your account...]. The rest of the document still works.
What the agent sees
For Office documents (DOCX/XLSX/PPTX), descriptions appear in a dedicated section appended to the extracted text:
Body text from the document...
## Embedded images
[Image 1 (q3-revenue.png): A bar chart showing Q3 revenue by region,
with EMEA leading at €4.2M.]
[Image 2 (org-chart.png): Organizational chart of the sales team,
with 3 regional leads reporting to the VP of Sales.]
For PDFs, each page is rasterized and described as a whole, since a page often mixes text and graphics:
Page 1 text...
Page 2 text...
## Pages (visual)
[Page 1: Title page with company logo and report title "Q3 Review".]
[Page 2: Revenue chart with the 4 quarters, Q3 highlighted in green...]
Caps
To protect cost and latency, MeetLoyd caps visual analysis at 20 images per Office document and 20 pages per PDF. Documents larger than this still upload successfully -- the excess pages/images just aren't visually described, and a note is added to the content so the agent knows.
If you're deployed on-prem or require full internet isolation (banks, regulated industries), set utilityModels.vision = 'qwen2.5-vl-72b' in your tenant settings. All image descriptions then run on your self-hosted vLLM deployment, with zero cloud egress.
Agent-Generated Documents
Agents can create documents during conversations using the generate_document tool. Generated files appear as artifact cards in the chat. See Document Generation for details.
Storage Backends
| Backend | When Used | Description |
|---|---|---|
| Cloudflare R2 | Production | Durable S3-compatible object storage |
| Local filesystem | Development | Files stored locally, suitable for dev only |
The backend is selected automatically. Uploads and downloads work the same regardless of backend.
Workspace Sync
If your team has a provisioned Google Shared Drive or SharePoint site, uploaded files are automatically synced to an Attachments folder in the team's shared drive. Sync is non-blocking -- your message sends immediately. If no workspace is configured, files are still stored durably in MeetLoyd's storage.
See Team Workspace Provisioning for setup details.
Cloud Storage Integrations
MeetLoyd's file management is for files uploaded directly to the platform. For files stored in cloud services, use the integration tools:
| Feature | MeetLoyd Files | Google Drive / OneDrive |
|---|---|---|
| Storage | Cloudflare R2 (durable) | Google / Microsoft cloud |
| Security scanning | Yes (zero-trust pipeline) | Provider's own scanning |
| Content parsing | Auto-parsed on upload, cached | Via read/export tools |
| Agent injection | Auto-injected into prompt | Manual read via tools |
| Chat attachments | Direct upload via paperclip | Link sharing |
| Workspace sync | Auto-synced to team drive | Native |
See Google Workspace Integration and Microsoft 365 Integration for cloud storage tools.
Best Practices
| Practice | Why |
|---|---|
| Use modern formats | DOCX/XLSX/PPTX instead of DOC/XLS/PPT -- more secure and better supported for parsing |
| Link files to conversations | Attach files through the chat UI so they are contextually linked |
| Check file size | Large files are supported but token budgets apply -- split very large documents if needed |