Pilot programme targeting Q3 2026. Register your interest now.Pilot EOI
Blog
January 5, 2026

Procedure Packs: Versioned, Offline-Capable Guidance

How UPAS bundles SOPs, checklists, and reference materials for offline distribution.

UPAS Product Team
UPAS Product Team
2 mins read

What is a Procedure Pack?

A procedure pack is a versioned, self-contained bundle of:

  • Standard Operating Procedures (SOPs)
  • Checklists and job aids
  • Reference materials
  • Search embeddings for local retrieval

Once cached on a device, a procedure pack enables complete offline functionality.

Pack Structure

interface ProcedurePack {
  id: string;           // "emergency-response"
  version: string;      // "3.2.1"
  publisher: string;    // "Example Organisation"
  publishedAt: Date;
  domain: string;       // "emergency-response"
  locale: string;       // "en"
  integrity: string;    // SHA-256 hash
  
  documents: Document[];
  embeddings: Float32Array;
}

Versioning

Procedure packs follow semantic versioning:

  • Major (3.x.x): Breaking changes, significant updates
  • Minor (x.2.x): New documents or sections
  • Patch (x.x.1): Corrections, clarifications

Devices compare versions to determine when to sync.

Curation Workflow

Creating a procedure pack:

  1. Collect: Gather source documents
  2. Structure: Organise by type and topic
  3. Annotate: Add metadata (dates, keywords, roles)
  4. Process: Chunk content and generate embeddings
  5. Review: Validate content and metadata
  6. Publish: Create versioned release with hashes

Integrity

Every pack and document includes SHA-256 hashes:

// Verify before caching
const hash = await sha256(packContents);
if (hash !== pack.integrity) {
  throw new Error('Integrity check failed');
}

This ensures:

  • Content wasn't corrupted in transit
  • Tampering is detectable
  • Cache matches source

Distribution

Packs are distributed via:

  1. Initial download: Full pack on first sync
  2. Incremental updates: Only changed content
  3. Rollback preservation: Previous versions retained

Offline Search

Each pack includes embeddings for semantic search:

// Local vector similarity search
const results = await searchEmbeddings(
  pack.embeddings,
  queryEmbedding,
  { limit: 5 }
);

This enables natural language queries without network connectivity.

Domain Organisation

Packs are organised by domain:

  • emergency-response
  • wash (Water, Sanitation, Hygiene)
  • health
  • logistics
  • protection

Responders can cache relevant domains for their role.

Locale Support

Packs support multiple locales:

  • Content in local languages
  • Locale-specific formatting
  • Fallback to default locale

Learn More

Wrap-up

Operational guidance shouldn't require constant connectivity. UPAS aims to work seamlessly — whether you're in a well-connected office or a remote field location.

If that sounds like the kind of tooling you want to explore — register your pilot interest or join the discussion on GitHub.