13 December 2019

General election 2019: Semi-automation makes it a night of 689 stories

The BBC is rightly respected for the breadth and accuracy of its election coverage. As well as the hours of broadcast programmes on radio and TV, BBC News Online provides statistics and final results for every constituency. But News Labs wanted to go one further - could we publish a local story for every licence fee payer on election night?

With 650 electoral areas in the UK, all returning results in the hours after polling stations close, the idea of writing a story for each one seemed impossible. That was until we started our experiments with Semi-Automated Local Content (SALCO) earlier this year.

What began as a discussion about our medium-term ambitions for this technology became frenetic work a few months ago when it looked as if a snap poll was possible.

Collaborating with our colleagues in newsrooms in Scotland, Wales, Northern Ireland and London, we built a natural language generation template that could create a story for every constituency.

News Labs editor and executive product manager review a semi-automated story

News Labs executive product manager David Caswell and editor Robert McKenzie on election night.

The system was hooked up to the results data feed used for elections at the BBC and in theory we could now send the stories to our content management system for publishing. That was similar to our previous projects using semi-automation, notably the 16 local election results we published earlier this year.

The biggest story of the year

Things started to get really tricky when we thought about the scale of the task. We’d never published that many stories before, and they all had to be checked, edited and sent to the correct constituency pages on the BBC website as soon as possible after the results were declared. All in the space of only a few hours on the busiest news night of the year.

Added to that the pressure and visibility of working on a general election – the most high-profile regular news event at the BBC – and it started to feel like we were really pushing our limits.

We built the story template by writing logic to process the results data and then create sentences and a narrative structure that matched the outcome in the constituency: hold, loss or gain. The team crafted the templates in an iterative process with feedback from colleagues that regularly cover politics. Similar to previous SALCO experiments, we used the natural language generation tool Arria for this step.

Once we’d worked out how to generate the stories, our next challenge was to enable our team of volunteer journalists to find, edit and publish them - spread across 690 individual constituency pages. The team set about building a workflow for editors using the automated notification feature in the messaging app Slack. This would let the team know whenever a new story was generated based on the live results feed.

Labbers Tom Francis-Winnington and Joe Whitwell survey the queue of stories in the newsroom

Labbers Tom Francis-Winnington and Joe Whitwell verify the queue of stories to be published.

Linking these notifications to the BBC content management system for editing and publishing, and the webpages used for election results for verification, created a new user experience we hadn’t even considered before an election looked likely.

Once we were confident this could work we started to show it to journalists. Colleagues in all four newsrooms quickly volunteered to sub-edit the stories.

Up all night

On the big night, journalists adapted the articles, with recent news in noteworthy races added to stories. Some of this additional content was prepared in advance by News Labs journalists and included in the automated notifications, to save valuable time.

Journalists said they enjoyed the experience of using the tool, with the stories coming out of the system also proving accurate and dependable in advance of editing.

If you’ve started to wonder why we created 689 stories when there are only 650 constituencies, the answer lies in Wales. With the help of our colleagues in Cardiff we wrote a template in Welsh for the 40 constituencies there - the first time we have built templates in a language other than English. (The result in one constituency, St. Ives, is still undeclared).

The Cardiff team edited those stories on the night. Collaborating across multiple newsrooms to get the most out of semi-automation while under time pressure on election night was a highlight of the project. Along with sharing tips on how to get through the 3am slump.

The team in the newsroom as the night draws to a close.

Team members look on as Allison Shultes publishes one of the last stories.

In total the team published approximately 100,000 words in 10 hours on Friday morning.

As if we didn’t break enough new ground with all of the above, a shout out goes to Labber Allison Shultes. She worked as a developer on the project in the months leading up to election night and then put her BBC journalism experience to use by editing stories in the wee hours of Friday morning. A first for the BBC.

You can find your local story by entering your constituency name on the BBC election results page.

We’ll have more on the details of SALCO and how we wrote semi-automated content in the months to come.


Love data and code?

We'd like to hear from you.