← Back to portfolio

Case study · Content systems

From documents to a
reusable content model.

A lesson can become a slide deck, a set of instructor notes, and a web resource. I designed a system that gives those outputs a shared, structured source.

My contribution
Data modeling, workflow design, implementation
Core idea
Preserve the source. Record the decisions. Generate the outputs.

An anonymized account of a curriculum tooling project. All examples and diagrams on this page are illustrative.

The architectureOne model, multiple destinations
  1. 01 / Ingest

    Source document

    Text, equations, images,
    and teaching notes

  2. 02 / Structure

    Canonical lesson

    Validated JSON with content references and source provenance

    The reusable foundation
  3. 03 / Project

    Derived outputs

    Editable slide decks
    CMS-ready instructor notes

Editorial decisions live alongside the source.

Splits, note assignments, and inserted notes are recorded separately and applied when building an output.

A conceptual view of the system. The presentation is generated from the lesson and its saved decisions.

01 / The problem

Structured-ish.

A mostly organized Word lesson plan with prompt, image, and discussion sections, annotated to split content, check the sequence, and update an old reference.
Existing structure, with a few editorial decisions still to make. Fictional lesson content.

The author’s raw lesson plans already had structure: a sequence of ideas, content intended for slides, and notes for the instructor. But that structure still needed editorial review. Preparing a lesson could mean splitting content across slides, reordering ideas for clarity, or updating references.

Doing that work manually across documents, slide decks, and a content management system would take substantial time and effort, with plenty of opportunities for mistakes. I wanted to capture the structure that was already there and give an editor a clear place to review and refine it, while the system handled the repeatable work of producing outputs.

02 / Data design

Give each kind of information a home.

Color-coded paths extract text, an equation, an image reference, and instructor notes from Word into a lesson JSON model. A dotted path preserves source locations.
A simplified view of extraction: content becomes structured data, images become referenced assets, and provenance keeps a connection to the source.

I designed a canonical lesson model: a shared representation of the source that does not depend on any one output format. Python parses the Word document into validated JSON; the model organizes content, teaching notes, and asset references.

Structure before layout
Content blocks and their relationships are explicit. Slide numbering and presentation layout belong to a derived layer.
Preserve rich material
Equations retain their original editable representation, with additional renderings for other destinations. Images are stored separately and referenced by content-based identifiers.
Keep a path back to the source
Provenance records where content came from. Parsing warnings make uncertain interpretations visible for review.

A small example

One source. A different teaching sequence.

An editor wants a question to appear before its image, with the discussion on the second slide.

Source content

Compare the two patterns.

● ● ●
● ● ●
● ●
● ●
● ●

Discussion: What stays the same?

Saved decisions
  1. Split before the image.
  2. Assign the discussion to the second slide.

The source blocks stay intact.

Generated sequence
Slide 1Compare the two patterns.
Slide 2The two dot patterns

Instructor note: What stays the same?

Look inside the data model

Invented content and a simplified schema, shown to explain the separation between lesson data and editorial operations.

{
  "lesson": {
    "id": "example-lesson",
    "blocks": [
      {
        "id": "prompt-a",
        "type": "paragraph",
        "text": "Compare the two patterns."
      },
      {
        "id": "image-a",
        "type": "image",
        "asset": "image-reference"
      },
      {
        "id": "note-a",
        "type": "discussion",
        "text": "What stays the same?"
      }
    ],
    "provenance": {
      "document": "example.docx",
      "paragraphs": [
        4,
        5,
        6
      ]
    }
  },
  "edits": [
    {
      "operation": "split",
      "groups": [
        [
          "prompt-a"
        ],
        [
          "image-a"
        ]
      ]
    },
    {
      "operation": "assign-note",
      "block": "note-a",
      "target": "second-slide"
    }
  ]
}

03 / Workflow design

Keep editorial judgment in the loop.

An illustrative Split slides interface divides a prompt and image into two slides. The Ask for predictions note moves under slide one; Compare the patterns moves under slide two.
An illustrative review interface: split the slide, then redistribute its instructor notes. The source stays intact and the decisions are saved separately.

The review interface lets an editor inspect the parsed content, split slides, and align instructor notes with a presentation. When a deck already exists, its slide order becomes the reference for note alignment.

Those choices are saved independently of the parsed source. For a given source and edit log, rebuilding produces the same output. Saved lesson sessions restore the inputs and decisions so work can continue after a restart.

This separation makes the workflow inspectable: the system can show what it read, what the editor decided, and what will be exported.

04 / Tradeoffs

Make uncertainty visible.

Three review scenarios: retain an equation when parsing is uncertain, recheck saved edit references after source blocks shift, and compare intended versus exported image placement.
Three distinct review concerns: interpreting source content, checking edit references after a revision, and assessing the exported layout. Conceptual illustrations, not product screenshots.

Word documents are not a rigid input format. The parser surfaces ambiguous structure and unsupported equation constructs as warnings, retaining recoverable content for review.

Saved edits refer to blocks in a particular parse. A revised source document can shift those references, so automatic reconciliation across source revisions remains an open design problem. Repeatable output depends on keeping the source version fixed.

PowerPoint export preserves editable math, but automated image placement does not reproduce every detail of a hand-built slide. The system supports editorial review rather than promising identical layouts.

05 / What I built

A reusable foundation for publishing.

A Word source feeds a human review interface with a JSON layer. Saved editorial decisions feed the same model, which produces PowerPoint slides and CMS draft content.
The complete workflow: source content and saved decisions feed a shared model, with separate projections for slides and CMS content.

The working system connects document ingestion, structured lesson data, interactive review, and exports to PowerPoint and CMS drafts. Its central contribution is the separation of source content, editorial decisions, and output-specific rendering.

The durable asset is the lesson model. Each output is one way of using it.

Product DesignMathEd
Explore more work →