Skip to the content
  1. Work
  2. Letting the intelligence evolve.

Rapport · Engineering case study

A better prompt should not break storage.

New extracted fields are useful only if the rest of the system can accept them. I extended extraction compatibly and proposed a storage boundary that can evolve with the model.

Explore the decisions
  • PythonExtraction pipeline
  • PostgreSQLProposed JSONB storage

The decisions

Three decisions, the reasoning behind each, and what changed as a result.

Evolving the extraction contractCompatible extraction · implemented
Add without removing

A new signal shouldn’t break an existing reader.

Summary engine · sample
{
  "summary": "Service visit",
  "sentiment": "neutral",
  "next_steps": [
    "Call with an update"
  ],
  "objections": [
    "Previous delay"
  ],
  "confidence": 0.87
}
Earlier fields stay available.

The summary, sentiment, and next_steps fields stay available as objections and confidence are added.

Compatible additions

Switch prompt versions. Useful additions appear while the earlier contract remains.

How it works

A quick guide to the interactive flow on this page.

Dynamic contentClick each step to see a different part of the story.

The outcome

Compatible extraction now. A looser storage boundary proposed.

Prompt schemas were extended while preserving earlier readers. Versioned raw events, a canonical signal registry, and serving views form the separate architecture proposal.