Upload Documents
Import manuscripts, outlines, and reference material so PlotLens can parse your text and build your story bible.
Upload manuscripts, outlines, and reference material so PlotLens can parse your text, extract entities, and build your canon.
When to use this
Use this when you start a new project, add a new chapter or draft, or bring in supporting material like world-building notes and series bibles. Reference documents you upload first establish your canon — later drafts get checked against them. If your story already lives in another tool, drag the export here so PlotLens can read it.
How it works
Uploads run in two stages. First, the file is validated and stored: PlotLens checks the extension, file size against your plan limit, project storage quota, and the file’s magic bytes (or UTF-8 encoding for plain text formats) to confirm it isn’t corrupted or misnamed. Once that passes, the document is saved to encrypted storage and a record is created with status pending.
Parsing then happens in the background. A worker downloads the file, runs the format-specific parser, splits the text into chunks, and generates embeddings for search and validation. You can keep working — the document moves from pending to processing to processed (or failed) on its own.
You’ll see live progress as parsing runs. Once a document reaches processed, its word count, page count, and parsed metadata appear in the documents grid, and entity extraction can use it.

Supported file formats
| Format | Extensions | Notes |
|---|---|---|
| Plain text | .txt | Must be valid UTF-8 |
| Markdown | .md, .markdown | Must be valid UTF-8 |
| Word | .docx | Modern Word documents only — .doc is not supported |
.pdf | Text-based PDFs; scanned PDFs without OCR will parse poorly | |
| Rich text | .rtf | — |
| OpenDocument | .odt | LibreOffice / OpenOffice |
| EPUB | .epub | — |
| Screenplay | .fountain | Fountain markup; must be valid UTF-8 |
File size and quota limits
Per-file limits are enforced at upload time based on your plan. Project storage is shared across all documents in a project.
| Plan | Max file size |
|---|---|
| Free | 50 MB |
| Lite | 50 MB |
| Plus | 100 MB |
| Pro | 100 MB |
| Small Team | 100 MB |
| Studio | 200 MB |
| Production | 200 MB |
| Enterprise | 200 MB |
Project storage quota is set by your team’s plan (5 GB on free and personal plans by default). When a project’s combined document size would exceed the quota, the upload is rejected.
You can upload up to 20 files in a single batch. Larger imports work too — just queue them in groups.
How to upload documents
- Open your project and go to the Documents tab.
- Drag one or more files onto the drop zone, or click the file picker to browse.
- Review the file list. PlotLens validates each file client-side and shows red badges next to anything unsupported or oversized — remove those before continuing.
- Confirm the upload. Up to three files transfer in parallel; the rest queue automatically.
- Wait for each file to finish uploading. You can keep working in other tabs — parsing continues in the background.

Track parsing progress
Each file in the upload list shows its current state:
- Queued — waiting for an upload slot
- Uploading — transferring to PlotLens, with a percent and estimated time remaining
- Processing — file is stored; the parser is running
- Complete — parsed, chunked, and ready for entity extraction
- Error — something went wrong; hover the badge to see the message
A batch progress bar at the top shows aggregate progress (e.g. “Uploading 5 of 10 files”). Use Cancel to stop any uploads still queued — files already in flight finish on their own.
For long-running parses, open the document’s detail drawer to see live stage progress: download → parse → chunk → embed.

What happens after parsing
Once a document reaches processed:
- It appears in the documents grid with word count, page count, and a parse quality indicator.
- PlotLens extracts characters, locations, events, objects, and concepts from the text into your story bible.
- The document is searchable — both keyword and semantic search hit its content.
- Validation runs can cite passages from it as evidence.
If parsing fails, the document stays in your project marked failed with an error message. You can re-parse it after fixing the source file (see Limits & edge cases).
Plan availability
Document upload is available on every plan, including Free. Your plan changes three things:
- Per-file size limit. 50 MB on Free and Lite; 100 MB on Plus, Pro, and Small Team; 200 MB on Studio, Production, and Enterprise.
- Documents per project. Free allows 5 documents (25,000 words total); Lite allows 20 (100k words); Plus allows 100 (500k words); Pro and team plans are unlimited under fair use.
- Project storage quota. Higher plans include more total storage.
See Billing & plans for the full comparison.
Limits & edge cases
- Unsupported file type. PlotLens rejects the file and lists the allowed extensions. Convert the file to one of the supported formats and try again.
- File exceeds plan size limit. You’ll see “File is too large. Your plan allows up to X MB per file.” Either split the document, compress images out of a PDF, or upgrade your plan.
- Project storage quota exceeded. Delete unused documents, move material to another project, or upgrade.
- Corrupted or mislabelled file. Magic-byte checks fail with “File content does not match the expected format for [ext].” This usually means the extension was renamed (e.g. a
.pagesfile saved as.docx) or the file is truncated. Re-export from the source application. - Invalid ZIP container (DOCX, EPUB, ODT). “File is a valid ZIP archive but does not contain the expected internal structure.” The file is corrupted — re-export.
- Non-UTF-8 plain text. “File does not appear to be valid UTF-8 text.” Open the file in your editor and save it with UTF-8 encoding.
- Parser crash mid-processing. PlotLens retries up to three times. If all retries fail, the document is marked
failed. Open the document’s detail drawer to see the parse history; for PDFs this often means a scanned image without OCR. - Upload queue saturated. During heavy traffic, your file may be accepted but flagged
processing-delayed. It will start parsing as soon as a worker frees up — no action needed on your end. - Very large files. Resumable uploads are not yet available, so a dropped connection mid-transfer means starting that file over.
Common pitfalls
- Uploading scanned PDFs. PlotLens parses the text layer of a PDF. If your PDF is a scanned image without OCR, parsing returns near-zero words. Run OCR first or export from the original source.
- Renaming a file’s extension to bypass validation. Magic-byte checks will catch it and reject the file. Use the actual format.
- Uploading drafts before reference material. Upload your series bible, world notes, and prior books first so they establish canon. Drafts uploaded afterward will be validated against them.
- Mixing canonical and speculative drafts in one project. Keep work-in-progress and established canon separate, or use document metadata so validation knows what’s authoritative.
- Closing the browser tab mid-upload. Files already transferring will fail. Wait until each shows
processingorcompletebefore closing.