Payment integrity Knowledge Center
Centene · payment integrity
Knowledge Center/Upload a policy
Ingestion

Upload a policy document

The document is screened, split into chunks, embedded, and written to the vector index — the same pipeline the seeded policies went through, with the same counters reported at the end. Nothing is written to disk: an uploaded document lives in memory for this process, and POST /reset clears it.

Synthetic or internal test documents only. Every upload is screened before it is read. A policy document may carry a department phone number or a mailbox in its footer — that is furniture, and it is allowed here even though the claim upload refuses it. Anything that identifies a person — a Social Security number, a date of birth, a medical record number — is refused on both.

.txt and .md, up to 256 KB. A form feed (\f) between pages becomes a page boundary, which is what a citation on a finding points at.
The platform reads PDF, DOCX, XLSX, PPTX and HTML and OCRs scans through Azure Document Intelligence, Google Cloud Vision or Textract. This demo has no PDF parser and no network, so it reads text.

A CPP-nnn and a vN.N in the filename or the first page attach the chunks to that policy in the library. Without them the document is still indexed and searchable, just not attached.

Cancel

What will run

Stage names are the platform's own, from its document_ingestion workflow.

storage_list_files
List the files in the dataset's source path
document_reader_unified
Read each file — PDF, DOCX, XLSX, PPTX, HTML on the platform; .txt and .md here
metadata_extractor
Pull filename, page count, digest and the policy the document belongs to
text_splitter_v2
Split each page into 1000-character chunks overlapping by 200
batch_embedder
Embed every chunk — local-hashing-256 at 256d here, text-embedding-3-small at 1536d on the platform
zip_merge
Join each embedding back to its chunk and its metadata
batch_vector_upsert
Write the points, each stamped with organization, project, dataset, document, version and is_active