notes

budding

Reverse Outlining with Language Models

Using language models to generate reverse outlines of writing drafts

Assumed Audience

People who write and/or are interested in designing writing tools. Also people who are familiar with and curious about their potential to improve the writing process

You start with a long, rambling, unorganised slew of text first: you write the messy and chaotic first draft without worrying too much about structure. Then you go through the piece and for every paragraph, write a single sentence that summarises it.

You then put your one-sentence summaries on small, moveable objects like post-it notes or cards, and reorganise them into a sensible flow.

Once you have a decent structure to work within, you go back to your crappy first draft, cut and paste salvageable bits of it into the new structure, and smooth out all the rough transitions.

This process helps you do a few important things:

  • Easily spot logical flaws or holes in your argument
  • Add transitional bridges between paragraphs that make large leaps or change topics unexpectedly
  • Combine paragraphs that are trying to say the same thing
  • Remove paragraphs you don't need or are tangential to the argument
  • Break up paragraphs that are trying to say too many things in one breath
  • Arrange your points into a narrative arc that will make sense to the reader

For a more comprehensive description of this process, read from Explorations of Style .

Classic Tools for Reverse Outlining

Reverse outlining is popular enough that we already have some specialised tools to help with it. I personally do it with digital whiteboarding tools like or that give you an infinite canvas to arrange arguments on.

Here's one of my Miro reverse outlines where I'm figuring out the structure of one of my longer essays on

Miro and Mural work well enough, but they're not specifically designed to help with this task.

is a much better example of writing tool that enables reverse outlining. It's designed for huge, heady projects like novels, non-fiction books, or screenplays where you have to wrangle lots of material. It's stuffed full of features but two in particular help with reverse outlining: synopsis sentences and corkboards.

For every chunk of text you can write a "synopsis" that summarises what it's about. These are visible in the inspector sidebar and on the "corkboard" – the other key feature.

The corkboard shows you a set of cards with the title and synopsis visible. Each of these cards represents a longer chunk of text that you can view if you click inside them. You can drag and drop these into different arrangements.

As you drag the cards into a different arrangement, the original, longer text chunks are also rearranged – there's a 1:1 mapping between them. This saves you from cutting and pasting the piece into its new structure after you've sorted your outline. There's a more detailed walkthrough of how Scrivener's synopses and corkboard work in .

This is already a big improvement over using whiteboarding software that's completely disconnected from notes and drafts stored elsewhere. We can still do better though.

Bring in the Language Models

Summarising existing text turns out to be something large language models are very good at. We can feed them long chunks of text and get back shorter, simpler summaries. This makes them promising tools for reverse outlining: we could have a model summarise each paragraph for us.

A few people have already started exploring this idea.

A group of researchers at the University of Bayreuth, Germany built a prototype specifically designed for reverse outlining with language models. In : Supporting Writers with Continuous Automatic Text Summaries (2022) they describe the interface and their results after testing it with a small group of students and academics

Here's an annotated screenshot of the main interface:

It's a split-view text editor with summary cards linked to each paragraph. The summaries themselves are generated by a language model – in this case model. They also tried a variation that pulls out the most important sentence directly from the text.

They baked an impressive amount of functionality into this. Users could obviously drag and drop to rearrange paragraphs. But they could also add new paragraphs, delete them, merge them, and split them. These kind of text interactions are essential for editing, but I imagine they're non-trivial to build.

Last year, shared a on Twitter that are remarkably similar in spirit. You have text and generated summaries shown side-by-side, and you can drag and drop to rearrange the content:

Both of these prototypes feel full of promise. But for the moment, neither exist in any public format. I can't point you to a link or Github repo to try them out yourself. I also haven't seen this feature in any of the existing “AI writing tools” flooding the market.

I wish I could end this note with a link to my own prototype that we could all play around with. But I am a very mediocre developer, and text editors are notoriously complex beasts. I know better than to dive down that rabbit hole. But I'm hoping someone else doesn't...

Design Considerations & Open Questions

I still have a few open questions about how this kind of system could be helpful to writers.

  • Are the summaries accurate enough?
    It might turn out that the automated summaries don't capture the essence of the idea well. This seems like a solveable problem given the pace of LM development. If they aren't good enough right now, they will be soon.
  • Does getting a generated summary help as much as writing your own?
    Perhaps the act of writing summaries yourself is critical to understanding what you're really trying to say. The meaning could very well be hidden in your mind and not on the page. In this case the automated summary points out what you're not saying – this still seems helpful to me, but it reframes the point of the summaries.
  • How much editing functionality does this need?
    I imagine any usable writing interface will need a high baseline of text editing functionality: selecting and moving text, copying and pasting, deleting, merging sections, auto-saving, bolding, italics, lists, export in various formats, etc.
  • How can we maximise the human-in-the-loop aspect of this system?
    Surely we'll want to sometimes edit or re-write the automated summaries ourselves. Ideally we could give it instructions on the kind of summaries we want it to write: we may need different levels of detail, or different summary types, depending on the type of work we're doing. It should feel like we're collaborating with the system and both working on the piece, rather than having it do all the work for us.
  • What other language model abilities could assist with reverse outlining?
    Could they spot logical flaws in your argument? Could they suggest new paragraphs that bridge the gap between points? Could they find duplicate arguments and help merge them?
Want to share?