When filing urgent applications under Certificate of Urgency, commercial trial bundles, or multi-volume appellate records on the Kenya Judiciary Case Tracking System (CTS) e-Filing Portal, nothing is more stressful than watching an upload fail at 98% at 4:45 PM. Between the strict 50 MB per-file upload ceiling, the Supreme Court (General) Practice Directions, 2020 (Paragraph 11) 150-page volume cap, registry checks for searchable OCR text layers, and dark gray scanner shadows that bloat a 120-page affidavit into a 95 MB file, technical PDF non-compliance is the #1 cause of delayed court filings in Kenya.
We built the KortiBundle Judiciary CTS e-Filing Compliance Suite at kortibundle.com to solve these exact engineering constraints automatically—splitting oversized bundles into self-contained volumes (Volume I, Volume II, Volume III) with per-volume Cover Pages and Statutory Indexes, whitening noisy scanner backgrounds, and embedding searchable OCR layers while keeping every volume safely below the 50 MB CTS portal threshold.
1. The Four Technical Gatekeepers of the Kenya Judiciary CTS e-Filing Portal
Before an electronic filing is accepted and assessed on the Judiciary CTS portal (or before the Supreme Court, Court of Appeal, High Court, ELRC, ELC, or Magistracy registries), your PDF bundle must satisfy four structural invariants:
- Strict 50 MB Per-Document Upload Limit: High-resolution color scans (300–600 DPI RGB JPEG streams) of land registries, sale agreements, and medical annexures routinely consume 1.2 MB to 2.5 MB per page. A 60-page replying affidavit with annexures easily exceeds 50 MB unless its image streams are normalized and background noise is stripped.
- Supreme Court 150-Page Volume Cap (Practice Directions, 2020 — Para 11): For petitions and references before the Supreme Court of Kenya, every volume is strictly capped at 150 pages, formatted in Times New Roman 12pt with 1.5 line spacing, every-10th-line right-margin numbering, and dedicated per-volume Cover and Index sheets.
- Synchronized PDF Counter & Hyperlinked Index: Registry verifying officers and judges rely on clickable PDF bookmarks and a Table of Contents Index whose page numbers match the electronic PDF page counter.
- Searchable Optical Character Recognition (OCR) Layer: Image-only PDFs produced by office Photocopiers cannot be searched by keyword or cited by line number unless a calibrated text layer is indexed across the pages.
2. How KortiBundle Automates Multi-Volume Splitting (150-Page & 50MB Caps)
Splitting a 420-page trial bundle or Record of Appeal manually in desktop software is a nightmare: if you chop a PDF at page 150, Volume II has no Cover Page, no Index of Documents showing which exhibits live in Volume II, and broken bookmark links. KortiBundle's Multi-Volume Partitioning Engine automates the entire lifecycle:
- Document-Boundary-Aware Volume Splitting: When the 150-page Supreme Court preset (or custom volume page cap) is active, KortiBundle partitions sheets into Volume I, Volume II, Volume III while generating a dedicated Volume Cover Page and a Master + Volume-Specific Statutory Index at the front of each volume.
- Continuous Cross-Volume Pagination: Volume I runs from
Page 1 to 150, Volume II continues seamlessly fromPage 151 to 300, and Volume III runs fromPage 301 to 420, ensuring zero ambiguity when counsel cites "Volume II, Page 218, Line 10". - Real-Time Volume Download from the Page Inspector: Inside the Interactive Page Inspector, a dedicated volume selector lets you preview and download each individual volume immediately.
# KortiBundle Volume Partitioning & CTS 50MB Byte-Budget Guard
from typing import List, Dict, Any
class CtsVolumePartitioner:
CTS_HARD_LIMIT_BYTES = 50 * 1024 * 1024 # 50 MB Judiciary CTS Portal Limit
SAFE_TARGET_BYTES = 46 * 1024 * 1024 # 46 MB safety ceiling
@classmethod
def partition_pages_into_volumes(
cls,
pages: List[Dict[str, Any]],
max_pages_per_vol: int = 150,
) -> List[Dict[str, Any]]:
volumes = []
current_slice = []
current_bytes = 0
for page in pages:
est_bytes = page.get("estimated_stream_bytes", 180_000)
exceeds_pages = len(current_slice) >= max_pages_per_vol
exceeds_bytes = (current_bytes + est_bytes) > cls.SAFE_TARGET_BYTES
if current_slice and (exceeds_pages or exceeds_bytes):
volumes.append({
"volume_no": len(volumes) + 1,
"pages": current_slice,
"start_page": current_slice[0].get("effective_page_number", 1),
"end_page": current_slice[-1].get("effective_page_number", len(current_slice)),
})
current_slice = []
current_bytes = 0
current_slice.append(page)
current_bytes += est_bytes
if current_slice:
volumes.append({
"volume_no": len(volumes) + 1,
"pages": current_slice,
"start_page": current_slice[0].get("effective_page_number", 1),
"end_page": current_slice[-1].get("effective_page_number", len(current_slice)),
})
return volumes
3. Adaptive Scanned Background Whitening: Shrinking File Sizes by 60%+
Why do scanned court documents balloon past 50 MB? When a photocopy of an affidavit or annexure has uneven gray lighting, toner speckles, or black punch-hole shadows along the left margin, PDF compression algorithms must encode millions of gray pixel variations on every sheet. In KortiBundle's Interactive Page Inspector, clicking Clean Scanned Background (or asking KortiAI: "Clean scanned background on all pages") applies adaptive local thresholding and morphological despeckling:
- Crisp Black Text on Pure White Paper: Gray background shadows and punch-hole borders are whitened to pure
#FFFFFFwhile ink strokes and rubber stamps are sharpened. - 45% to 68% File Size Reduction: Because pure white background regions compress into negligible byte runs, a 72 MB scanned bundle typically drops to 24–28 MB—gliding through Judiciary CTS e-Filing upload validation on the first attempt.
| CTS e-Filing Validation Check | Unoptimized Office Scanner PDF | KortiBundle CTS-Optimized Output |
|---|---|---|
| File Size for 180-Page Scanned Bundle | 68 MB – 115 MB (Rejected by CTS 50MB limit) | 22 MB – 34 MB (Passes on first upload) |
| Supreme Court 150-Page Volume Rule | Manual splitting breaks Index & page numbers | Auto-split Volumes I, II, III with per-volume Covers |
| Scanned Background Legibility | Dark gray toner shadows & punch-hole marks | Adaptive background whitening & despeckling |
| Keyword & Line Searchability | Flat image scan (Unsearchable by Judge) | Full OCR layer + clickable [Page X, Line Y] citations |
4. Frequently Asked Questions (FAQ)
How do I prepare a High Court Trial Bundle under Order 11 on KortiBundle?
Select the High Court Trial Bundle (Order 11) preset in Full Bundle Studio, upload your Pleadings, Witness Statements, and List/Bundle of Documents, mark annexures with the Exhibit toggle, and click Compile Bundle.
Does KortiBundle also generate Section 106B Electronic Evidence Certificates?
Yes. Whenever your bundle includes WhatsApp screenshots, emails, M-Pesa statements, or digital photographs, you can generate a statutory Section 106B(4) Certificate of Electronic Record directly inside KortiBundle and append it to your bundle.
Explore related production architectures, live Kenyan legal tools, and enterprise guides:
- KortiBundle — Kenya Judiciary CTS e-Filing PDF Compliance Tools — Optimize, OCR, paginate, and split court bundles for CTS portal uploads.
- KortiBundle — Supreme Court of Kenya 150-Page Bundle Compiler — Automated Paragraph 11 compliance, 150-page volume splitting, and 10th-lining.
- KortiBundle — High Court Order 11 Trial Bundle Studio — Compile Pleadings, Witness Statements, and Paginated Exhibit Bundles.
- Automating Court of Appeal Rule 87 & High Court Order 42 Records of Appeal — Deep dive into every-10th-line margin numbering and continuous appellate pagination.