Newspaper management software feature list

About two years ago I started building a software application to help manage different aspects of our operations in print and online.

It started out focused on streamlining subscriber management β€” the previous system in place involved a physical card catalog β€” but now it touches much more, from print production to web publishing to advertising sales and billing to retail delivery coordination.

I couldn’t be bothered to come up with a good name at launch, so it’s called “Manage”. I know, I know.

Since being able to build and expand this tool is one of the “unfair advantages” I’ve personally brought to the world of local newspaper publishing, I’ve been wanting to blog more details about it and share some of the code. But the reality is that I haven’t had the time.

And although I do not currently intend to sell or distribute it for use by other publications, as a way of recognizing how far Manage has come, I’m sharing this “feature list” as a snapshot in time of what it does now.

Here we go:

Subscriber and Subscription management

  • Create and update subscriber records
  • Create and update subscriptions
  • Validate subscriber postal addresses against USPS database
  • Renew subscriptions by check, cash, credit card payment (integrated with Square web SDK), point of sale system (integrated with Square POS app)
  • Record gift subscriptions
  • Integrate subscriber records with Mailchimp / newsletter audiences, including custom segments based on subscription status, synchronizing newsletter subscription status, etc.
  • Schedule and manage pausing print delivery (vacations, travel, etc)
  • Generate and export a subscriber list for printing on mailing labels that our printer uses each week
  • Record delivery issues (newspaper missing, late, damaged, etc.) and extend subscriptions accordingly
  • Create an invoice for a subscription payment
  • Automatically generate and mail out subscription renewal reminder post cards via USPS (integrated with PostGrid), including per-subscriber custom QR codes, renewal amounts and messaging
  • Review subscriber history including transactions, delivery issues, previous subscriptions, communications
  • Searching and reporting
  • Automatically send USPS post office contacts a weekly report of delivery issues reported by subscribers to request investigation
  • Self-service print subscription renewal without a WooCommerce account, using a custom WordPress shortcode, API calls and the Square web SDK
  • Automatically deactivating expired subscriptions, with related Slack advanced notice and completed notice
  • Slack alerts when there are subscription postal addresses that can’t be automatically validated

Online Subscription Management Integration

  • Receive new and updated subscription information from WooCommerce Subscriptions plugin via webhook
  • Send some kinds of subscriber and subscription changes back to WooCommerce via API calls
  • Automatically check to confirm that WooCommerce and Manage subscriptions are in sync

Print Issue Management

  • Create and update print issues being scheduled, planned, ordered, printed and shipped
  • Set number of pages and which ones are color (auto calculated with reasonable defaults)
  • Set up other internal production systems for that issue once the page count is determined
  • Track USPS auditing and statement of ownership data such as advertising percentage, quantity mailed in/outside of county, free copies, retail copies, online subscribers from WooCommerce, etc.
  • Generate a production checklist for the print issue that lists all display ads, legals, classifieds, obituaries, etc. that need to be confirmed as on the page in print.
  • Store final issue PDFs and public notices PDFs and generate thumbnail images of those for use elsewhere
  • Automatically initialize future print issue folder structures on our InDesign layout file server

Obituary Management

  • Create and update obituary requests
  • Automatically generate a word count for invoicing
  • Create and send invoices (integrated with Quickbooks Online)
  • Store and manage obituary photos, validate dimensions and resolution for print quality
  • Send confirmed obituary records to our print production tracking system
  • Send obituary photos to our InDesign layout file server
  • Report on obituary status for upcoming issues, including which requests still need follow-up

Display and Classified Advertising Management

  • Create and update ad records as requests come in
  • Record specifications such as color/B&W, design services needed, dimensions, fee structure, word count, etc. and calculate fees based on published fee schedule
  • Create and send invoices (integrated with Quickbooks online)
  • Send approved ads to our print production tracking system
  • Generate status and progress updates for advertisers
  • Store and manage ad images, validate dimensions and resolution for print quality, send finalized files to our InDesign layout file server
  • Report on ads that need follow-up, prepayment, etc.
  • Searching, reporting, filtering
  • Regular Slack advertising status reports for the upcoming issue
  • For our “business card directory” ad feature, automatically generate the grid of business card ad accounts paid/in good standing for a given print issue and send to our InDesign layout file server
  • Automatically copy recurring ads to future print issues

Legal Advertising and Public Notice Management

  • Create and update legal ad requests
  • Record specifications such as government unit being advertised to, cause number, notice type, publisher’s claim signer, notarization required, ad lines and columns, extra proof copies requested, whether it includes tabular work, calculated fee structure
  • Generate publisher’s claim forms with legal ad run information filled in
  • Create and send invoices (integrated with Quickbooks online)
  • Send approved ads to our print production tracking system
  • When a legal ad has completed its run, generate a publisher’s claim packet with proof of publication and related mailing labels for postal mailing, or for delivery via email when notarization is not required
  • Reporting on ad requests that need follow-up, billing, etc.
  • Tool for our legal ad print paginator to directly enter ad lines and columns used, for calculating fees
  • Create and update available government entities being advertised to
  • Searching, reporting, filtering
  • Automatically publish the latest public notices PDF file for uploading to a statewide public notice database

Retail Distribution Management

  • Create and update retail delivery drivers
  • Create and update retail delivery locations, including billing information, point-of-sale barcode scanning integration, etc.
  • WordPress shortcode to display the list of active retail delivery locations on our website by fetching data via API
  • Generate and print label bundles of papers to be used with stacks of retail papers as they are prepped for distribution each week
  • Generate and print a summary list of retail delivery routes and drivers each week
  • Record quantities of unsold copies returned
  • Generate sales records
  • Invoice retailers for papers sold (integrated with Quickbooks online)
  • Adjust quantities distributed based on historical retail sales information

Editorial and Content

  • Monitor and notify about quantity of articles needing editing
  • Automatically generate a list of death notices from area funeral home obituaries
  • Automatically generate a print-ready version of the local community access television station schedule based on their public Google Calendar schedule
  • Automatically generate a print-ready version of the property transfer records provided by the county government
  • Automatically generate a print-ready incident reports feature based on narratives and data published by local law enforcement agencies
  • Automatically generate a print-ready list of marriage licenses and divorces filed with the county clerk’s office

Print Layout

  • Organizing advertising assets, obituary images and other files on our InDesign layout file server
  • Using an InDesign script to pull newspaper stories from the Airtable API in to a page layout that’s ready to be dragged around
  • (Coming soon) Generate broken out InDesign pages for an upcoming issue based on a template and designated page topics/classifications

Customer Service

  • Automatically categorize and tag incoming email, phone and voicemail messages based on content
  • Automatically send internal updates and notes to customer service tickets based on advertising and subscriber activity
  • Synchronize customer records with our accounting system

Digital Publishing and WordPress Integration

  • Create draft WordPress posts from edited articles in our print production system
  • Send PDFs of newspaper editions and public notices to WordPress for use in producing our online e-edition / flipbook feature
  • Manage terms and media in a custom print issue taxonomy, send a thumbnail of a print edition to associate with a term, which is then used in organizing and displaying information about the current print issue in various locations across the site
  • Scan area funeral home websites and automatically publish found local obituaries to WordPress

Other

  • Slack reminders and information about everything
  • Snapshotting statistical information for reporting and graphing
  • Receive and process webhook events from various third-party services for various local actions
  • Generate USPS statement of ownership reports, along with the text of the report to be printed in the actual newspaper
  • Automatically generate the list of available issue dates in an online Google Forms reader feedback form, when each new print issue is shipped
  • A few bits of machine learning / LLM usage via API

So, it’s a start.

I’ll try to keep adding to this list via new posts as I keep building, and I’ll also try to blog more about the technologies and behind-the-scenes of this application.

When I look at the list, it’s pretty mind-blowing that so many aspects of our operations are touched by this tool.

But let me be clear about one thing:

No matter how many tools I build or services I integrate, the heart and soul of the newspaper I publish is still the people.

It’s the reporters who attend the meetings, do the research, write the articles, and care about the communities they cover. It’s the other staff who work hard every week to get the paper out the door and make sure we have money coming in the door. It’s the subscribers and readers who support us with their dollars and their kind words. And it’s the neighbors who care enough about what’s going on in the community and our coverage to occasionally tell us we’re doing a good job or to say to someone they’ve just met, “well, you should really check out the Western Wayne News…there’s a lot in there.”

Chris Hardie is a journalist, newspaper publisher, software developer and entrepreneur based in Indiana, USA. Read more from Chris on this site, learn more on his personal website, subscribe for updates or follow Chris on Mastodon.

2 responses

  1. Davis Shaver Avatar
    Davis Shaver

    Very impressive! Hope you keep blogging about this software. Curious what your primary stack is & how you are using LLMs in the software and to build the software.

    1. Thanks, Davis!

      I will write more about the stack but it’s basically a Laravel (PHP) app using the Filament admin panel builder. It’s been a great fit for shipping quickly in a one-developer-multi-user setup, and I’ve even managed to maintain a semblance of code testing and review best practices along the way. πŸ™‚

      LLM usage is so far limited to filling in some info on obituaries obtained in non-standard formats, categorizing incoming email/voicemail tickets and normalizing data in PDFs of marriage/divorce info from the county clerk’s office. I do ask ChatGPT some questions now and then about how to approach a certain technical problem, which really helps when I’m programming after a long day and my brain is mushy.

Leave a Reply

Your email address will not be published. Required fields are marked *