Start with a stable contract
An API should define what a summary means for the application. Choose fields that downstream systems can rely on, including the overview, key points, evidence references, decisions, uncertainty, and processing metadata. Avoid a single unstructured string when the result must drive alerts, tasks, or search.
Example response schema
{
"summary": "One-sentence overview",
"key_points": ["Point one", "Point two"],
"evidence": [
{"claim": "Supported claim", "source_ref": "p. 7"}
],
"decisions": [
{"decision": "What was decided", "owner": "Not stated"}
],
"uncertainties": ["What needs human review"]
}
Keep pipeline stages observable
- Accept text or a supported file reference.
- Extract and normalize content.
- Detect language, structure, and source type.
- Split long inputs on semantic boundaries.
- Summarize chunks with the same schema.
- Synthesize a global summary from chunk outputs.
- Validate fields, references, and length.
- Return warnings and review status.
Token and chunk strategy
Count tokens before calling a model, reserve room for instructions and output, and split on headings or transcript segments rather than fixed character counts alone. Use overlap sparingly for continuity, then deduplicate repeated points during synthesis.
Decision API fields
For decision workflows, return the problem, alternatives, criteria, decision, rationale, owner, deadline, risks, dissent, and review trigger. Use explicit null or “not stated” values instead of guessing. Include a confidence or review flag only when its meaning is documented and tested.
Error handling
Differentiate extraction failure, unsupported input, context overflow, model timeout, schema-validation failure, and policy rejection. A retry should not silently change the model, prompt, or temperature without recording that change.
Security and privacy
Minimize retained source data, protect API keys, redact unnecessary personal information, and keep logs from becoming a second copy of sensitive documents. Define deletion, residency, and access policies before processing production content.
Related reading
Read the full API design article and the Python CLI workflow for implementation details.