Content that is not text
Native documents, scanned PDFs with no text layer, photographed pages, MP4 video and audio each need a different processing path — and the system must choose it automatically.

SageBot lets authorized employees ask natural-language questions across approved company content — policies, handbooks, spreadsheets, scanned pages, recordings and training video — and answers only from that content, with citations back to the original files.
Serverless RAG on AWS.
Server-side authorization.

The model answers only from retrieved company content and states plainly when the documents do not contain the answer.
Follow the retrieval ↗Enterprise knowledge management
Serverless RAG platform on AWS
Architecture to data engineering & DevOps
Either the assistant hallucinates because retrieval is an afterthought, or the ingestion side collapses because real company knowledge is not a folder of clean PDFs — it is scanned invoices, DOCX drafts, onboarding videos, and recorded all-hands meetings.
The parental-leave policy lives in a PDF handbook. The expense process lives in a Finance DOCX. Deployment steps live in an engineering Markdown file. Scanned documents are images with no searchable text at all.
SageBot was engineered against both failure modes at once — the full path from raw company files to a trusted, auditable answer.
Native documents, scanned PDFs with no text layer, photographed pages, MP4 video and audio each need a different processing path — and the system must choose it automatically.
When a source file is removed, its derived text, metadata and vector embeddings must all disappear — even though the derivative may have a different name and format.
Topic scoping is a security boundary, not a UI filter. The retrieval filter is built server-side from verified entitlements, never from the request body.
Five views of the delivered platform.
Each shows another part of the path from file to trusted answer.

Employees ask questions scoped to a topic or all authorized topics; follow-ups are condensed into standalone queries before retrieval runs.
Upload→Classify→Transcribe or OCR→Index→Retrieve→Ground→Cite
User identity is derived from the validated Cognito JWT, never from the request body. The same enforcement applies to conversations, feedback and citation access, where a retrieved transcript is mapped back to its original file and served only through a short-lived, entitlement-checked URL.
The generation prompt constrains the model to answer only from retrieved context, to state plainly when the documents do not contain the answer, and to ignore instructions embedded inside retrieved documents — prompt injection hidden in an uploaded file is a real attack surface, and was designed and tested against.
Look under the hood ↘Each file is routed to direct copy, Textract OCR or Transcribe transcription — including detecting that a PDF is actually a scan with no usable text layer.
Text-bearing documents are parsed and written straight to Knowledge-Base-ready form with metadata sidecars.
Scanned pages go through Textract; audio and video go through Transcribe, with completion events unified into one durable path.
Retrieval runs against a metadata filter constructed from the user's verified entitlements, so restricted content is never a search hit.
The model grounds every answer in retrieved context and abstains when the content does not contain the answer.
SageBot is deliberately kept to five functional Lambda components plus managed AWS services. OpenSearch Serverless allocates capacity even when idle, Transcribe bills by media duration and embedding bills by ingested tokens — so cost was treated as an architecture input, not a later surprise.
Drives incremental ingestion into the vector index and serves retrieval for every grounded answer.
Unchanged documents are never re-embedded, so a routine upload does not re-bill the whole corpus.
Holds the embeddings that back retrieval, synchronized from the curated content bucket.
It allocates capacity even when idle, so batched sync signals let one ingestion job cover many uploads.
Transcribe converts audio and video to text; Textract OCRs scanned pages and photographed documents.
Transcribe reports through EventBridge and Textract through SNS — two event shapes for the same logical outcome, merged into one durable completion path.
Five functional components carry classification, completion handling, retrieval, generation and administration.
A streaming Function URL behind CloudFront avoids the persistent connection state and reconnect handling a WebSocket estate would add.
Holds the ingestion manifest mapping every source object version to its curated derivatives, plus conversation and feedback records.
Deletion resolves deterministically — the derived object often has a different name and format than the source.
Cognito issues the JWT that identity is derived from; CloudFront fronts the streaming function with Origin Access Control.
The function cannot be invoked directly, so CloudFront and WAF cannot be bypassed.
The architecture and product narrative reproduce the supplied project documentation. Interface values are product screen data.
Technology names identify the documented implementation, not partnerships or endorsements.
Bring one internal knowledge workflow — the formats you actually have, the permissions that apply, and the answers people need to verify. In 20 minutes, we will map where grounding and authorization have to meet.
20 minutes · Your content, permissions and constraints