Summarize PDF documents with AI
🤖/ai/chat sends files from earlier Steps to a large language model along
with your prompt, and writes the answer to a result file. This demo passes an uploaded PDF to Claude
Sonnet and asks for JSON that matches the schema parameter: a title, the kind of document, a short
summary, and a list of key points.
A 🤖/file/filter Step first rejects anything other than a PDF of at most 20 pages, so a large upload can't run up the model bill.
The schema parameter is a string that contains a JSON Schema, so your application can read the
result without parsing free-form text. Set format to text instead when you want a plain answer
file, for example a summary to show in an email or a CMS field.
PDFs need a model that can read them, such as the Anthropic and Google models. For scanned
documents, Word files, or recordings, add a Step that converts or transcribes them first and pass
that Step to use. The AI file processing guide has
complete examples for invoices, PDF questions, recording summaries, and image descriptions.
This demo sets test_credentials, which uses Transloadit's provider keys and bills the model usage
at provider cost plus a markup. In production, store your own provider key as a
Template Credential and pass its name to credentials.
Step 1
Handle uploads
We can handle uploads of your users directly. Learn more
application/pdf · 180 KB · 1273 × 1648
":original": {
"robot": "/upload/handle"
}This bot receives uploads that your users throw at you from browser or apps, or that you throw at us programmatically
Step 2
Filter files
We let you reject, or direct files against different encoding Steps. Learn more
"pdfs": {
"use": ":original",
"robot": "/file/filter",
"accepts": [
[
"${file.mime}",
"==",
"application/pdf"
],
[
"${file.meta.page_count}",
"<=",
"20"
]
],
"condition_type": "and",
"error_on_decline": true
}This bot directs files to different encoding Steps based on your conditions
Step 3
Generate AI chat responses
We offer Artificial Intelligence as a service, so you don't have to run your own AI models or install complicated software. Learn more
application/json · 1.7 KB
"summarized": {
"use": "pdfs",
"robot": "/ai/chat",
"result": true,
"format": "json",
"messages": "Summarize the attached PDF for someone deciding whether to read it. Give its title, the kind of document it is, a summary of at most three sentences, and up to five key points. Use only what the document says.",
"model": "anthropic/claude-sonnet-5-5",
"reasoning_effort": "low",
"schema": "{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\"},\"document_type\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"key_points\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"title\",\"document_type\",\"summary\",\"key_points\"],\"additionalProperties\":false}",
"test_credentials": true
}This bot analyzes files and prompts with supported LLMs from providers including Anthropic, OpenAI, and Google. Extract structured fields, summarize documents and transcripts, answer questions about PDFs, or draft image descriptions
Step 4
Export files to Amazon S3
We export to the storage platform of your choice. Learn more
"exported": {
"use": [
"summarized",
":original"
],
"robot": "/s3/store",
"credentials": "demo_s3_credentials",
"url_prefix": "https://demos.transloadit.com/"
}This bot exports encoding results to Amazon S3
Live Demo. See for yourself
This live demo is powered by
Uppy, our open source file uploader that you can also use without Transloadit, and
tus, our open protocol for resumable file uploads that is making uploading more reliable across the world.
Build this in your own language
<!-- This pulls Uppy from our CDN -->
<!-- For smaller self-hosted bundles, install Uppy and plugins manually: -->
<!-- npm i --save @uppy/core @uppy/dashboard @uppy/remote-sources @uppy/transloadit ... -->
<link
href="https://releases.transloadit.com/uppy/v3.10.0/uppy.min.css"
rel="stylesheet"
/>
<button id="browse">Select Files</button>
<script type="module">
import {
Uppy,
Dashboard,
ImageEditor,
RemoteSources,
Transloadit,
} from 'https://releases.transloadit.com/uppy/v3.10.0/uppy.min.mjs'
const uppy = new Uppy()
.use(Transloadit, {
waitForEncoding: true,
alwaysRunAssembly: true,
assemblyOptions: {
params: {
// It's often better store encoding instructions in your account
// and use a `template_id` instead of adding these steps inline
steps: {
':original': {
robot: '/upload/handle',
},
pdfs: {
use: ':original',
robot: '/file/filter',
accepts: [['${file.mime}', '==', 'application/pdf'], ['${file.meta.page_count}', '<=', '20']],
condition_type: 'and',
error_on_decline: true,
},
summarized: {
use: 'pdfs',
robot: '/ai/chat',
result: true,
format: 'json',
messages: 'Summarize the attached PDF for someone deciding whether to read it. Give its title, the kind of document it is, a summary of at most three sentences, and up to five key points. Use only what the document says.',
model: 'anthropic/claude-sonnet-5-5',
reasoning_effort: 'low',
schema: '{"type":"object","properties":{"title":{"type":"string"},"document_type":{"type":"string"},"summary":{"type":"string"},"key_points":{"type":"array","items":{"type":"string"}}},"required":["title","document_type","summary","key_points"],"additionalProperties":false}',
test_credentials: true,
},
exported: {
use: ['summarized', ':original'],
robot: '/s3/store',
credentials: 'demo_s3_credentials',
url_prefix: 'https://demos.transloadit.com/',
},
},
},
},
})
.use(Dashboard, { trigger: '#browse' })
.use(ImageEditor, { target: Dashboard })
.use(RemoteSources, {
companionUrl: 'https://api2.transloadit.com/companion',
})
.on('complete', ({ transloadit }) => {
// Due to `waitForEncoding:true` this is fired after encoding is done.
// Alternatively, set `waitForEncoding` to `false` and provide a `notify_url`
console.log(transloadit) // Array of Assembly Statuses
for (const assembly of transloadit) {
console.log(assembly.results) // Array of all encoding results
}
})
.on('error', (error) => {
console.error(error)
})
</script>
So many ways to integrate
Transloadit is a service for companies with developers. And there are many ways developers can put Transloadit to good use inside your company to automate media processing.
Bulk imports
Add one of our import Robots to acquire and transcode massive media libraries.
Handling uploads
We are the experts at reliably handling uploads. We wrote the protocol for it.
Front-end integration
We integrate with web browsers via our next-gen file uploader Uppy and SDKs for Android and iOS.
Back-end integration
Send us batch jobs in any server language using one of our SDKs or directly interfacing with our REST API.
Pingbacks
Configure a notify_url to let your server receive transcoding results JSON in the transloadit POST field.
On-demand
Use our Smart CDN to adapt files on-demand and stream them directly to your users.

