Etapsky Workstation — desktop power
The full SDF experience on your machine: open and produce .sdf files, sync with your tenant on Etapsky Cloud, and stay current with signed,
auto-updating releases.
All releases on GitHub · BUSL-1.1
The problem
The enterprise document gap
Every enterprise document workflow is caught between two incompatible formats — wasting engineering hours on OCR, reconciliation, and duplicate pipelines.
Human-readable. Machine-hostile.
PDF was designed for print. Extracting data requires fragile OCR pipelines, manual data entry teams, and constant reconciliation. Every vendor formats their PDF differently.
Machine-readable. Legally useless.
Structured data is great for systems. But a JSON invoice has no legal standing — you still need to produce a separate PDF representation, doubling your pipeline complexity.
Both. In one signed file.
SDF embeds structured, schema-validated data and a human-readable PDF in a single signed file. One file serves both machines and humans — verified, tamper-proof, one format forever.
How it works
From document to data in three steps
SDF eliminates the entire OCR layer from your document workflow. Produce once, parse anywhere — with type safety from the start.
Produce
Use our SDK or CLI to create SDF documents. Provide your structured data and an existing PDF — or let SDF generate the PDF from your data automatically.
TypeScript, Python, CLI, REST API
Distribute
Upload to Etapsky for hosted storage, sharing, and validation. Or self-host with sdf-server. Webhooks fire on every upload, parse, or verification event.
S3-compatible storage · Webhooks · CDN
Parse
Recipients call `parse()` once and get fully typed, schema-validated structured data back. No OCR, no regex, no guesswork — pure deterministic extraction.
Schema validation · Type-safe · < 50ms
SDK
One SDK. Every platform.
The same ergonomic API across TypeScript, Python, Go, and the CLI. Produce, parse, validate, and sign SDF documents with full type safety in minutes.
- Type-safe structured data extraction
- Schema validation against the SDF registry
- Cryptographic document signing & verification
- Streaming support for large documents
- Webhook integration for async workflows
import { SdfClient } from '@etapsky/cloud-sdk'
const sdf = new SdfClient({ apiKey: process.env.SDF_API_KEY })
// Produce a signed SDF document
const doc = await sdf.documents.produce({
schema: 'invoice@1.0',
data: {
id: 'INV-2026-001',
issuer: { name: 'Acme Corp', taxId: 'TR-12345678' },
recipient: { name: 'Beta Ltd', taxId: 'TR-98765432' },
items: [
{ description: 'SDF Cloud Pro License', quantity: 1, unitPrice: 12_500 },
],
total: 12_500,
currency: 'USD',
issuedAt: '2026-03-20T09:00:00Z',
},
pdf: existingPdfBuffer, // optional — auto-generated if omitted
sign: true,
})
console.log(doc.id) // → "doc_01JNKX9P4M..."
console.log(doc.url) // → "https://cdn.etapsky.com/..."
console.log(doc.verified) // → true from etapsky import SdfClient
sdf = SdfClient(api_key="sk_...")
# Parse structured data from any SDF document
with open("invoice.sdf", "rb") as f:
result = sdf.documents.parse(f)
# Fully typed, schema-validated output — no OCR
invoice = result.data["invoice"]
print(invoice["total"]) # → 12500.0
print(invoice["issuer"]["name"]) # → "Acme Corp"
print(invoice["items"][0]["description"]) # → "SDF Cloud Pro License"
print(result.meta.verified) # → True
# Batch parse a directory
docs = sdf.documents.parse_many(glob("invoices/*.sdf"))
totals = [d.data["invoice"]["total"] for d in docs] # Install the SDF CLI globally
npm install -g @etapsky/sdf-cli
# Inspect an SDF file — view structure + metadata
sdf inspect invoice.sdf
# Validate against a published schema
sdf validate invoice.sdf --schema invoice@1.0
# Extract structured data as JSON
sdf parse invoice.sdf --output json > data.json
# Produce an SDF from existing data + PDF
sdf produce \
--schema invoice@1.0 \
--data invoice-data.json \
--pdf invoice.pdf \
--sign \
--out invoice.sdf
# Verify document signature
sdf verify invoice.sdf Ecosystem
Build in your language
Official SDKs and tooling for every tier of the stack — from scripting to enterprise integration.
Use cases
Documents that work for everyone
Any document that needs to be both human-readable and machine-parseable is a perfect fit for SDF.
E-Invoicing
Produce legally compliant invoices that contain both the official PDF representation and machine-readable line items, totals, VAT, and counterparty data. Ingest supplier invoices automatically — no data entry team required.
HR & Nominations
Signed offer letters, onboarding documents, and nomination forms — all in one verifiable SDF file. Automate candidate data extraction and maintain a tamper-proof audit trail from application to hire.
Government Forms
Submit structured data alongside the official PDF form. Public authorities receive both the human-readable document and machine-parseable fields — eliminating re-keying from paper submissions.
Supply Chain
Packing lists, bills of lading, and customs declarations as verified SDF documents. Each file carries signed structured data alongside the human-readable PDF — machine-verifiable at every border crossing.
Comparison
SDF vs everything else
No single format checked all the boxes — until SDF.
Start building with SDF today
The free tier includes 100 uploads per month, 500 MB storage, and full SDK access. No credit card required.