Show N'Tell: AcquisitionsEditor.py

Show N'Tell: AcquisitionsEditor.py

Maintaining relationships with authors is an important task for publishers, but it can be challenging, and takes a lot of attention to detail. I’m sorry to admit that I have my ups and downs on that score, and sometimes I drop the ball; so this weekend I created a Python class to put me on a smoother upward trajectory. I’ve been working on automating publishing workflows for twelve years now—about time to become an overnight success!—and I was impressed by how far I was able to get in a couple of three-hour sessions adding up to 7 hours 12 minutes. I’ve come a long way, but more importantly, so has technology: OpenAI and Github Copilot may not have made me “10x” more productive, but I’d say it was near “5x”.

Goals, Design, and Scope

My goal was to set up an automated tool that will “touch” every contracted author on a regular schedule and will help me ensure that all mutual commitments are met on time. Practically speaking, I was envisaging a Python script that I could run using?launchctl, the MacOS replacement for the?cron?scheduling utility for *nix systems. I had a pre-existing design that provided a helpful context:?BookPublisherGPT,?the python library that is the latest incarnation of the algorithmic publishing systems I began building with PageKicker. BookPublisherGPT (or?bpg?as I abbreviate it) contains a number of classes, including one that I call Masthead. Masthead contains agents whose role corresponds to familiar publishing job titles. To this structure, I added AcquisitionsEditor.

BookPublisherGPT
     classes
        ...
        Masthead
           > AcquisitionsEditor
            ContributingEditors
            CopyEditor
            Editor-in-Chief
            ...
        Metadata4CodexBooks
        SyntheticReader
         ...        

Defining the scope of the role required a bit of research. When prompted with

In book publishing, what is the name for the editor who is responsible for managing relationships with authors?

Google Bard offered three drafts by default (something that costs extra with the OpenAI API that I normally use). I started with this one:

The editor who is responsible for managing relationships with authors in book publishing is called the?Acquisitions Editor?or?Acquisitions Manager. They are responsible for finding new authors and their manuscripts, evaluating their work, and negotiating contracts. They also work with authors to develop their ideas and help them to produce the best possible books.

In some publishing houses, the Acquisitions Editor may also be responsible for editing the author's manuscript. However, in larger houses, this role is typically handled by a separate editor.

The Acquisitions Editor is a key member of the editorial team and plays a vital role in the success of a publishing house. They are responsible for finding the next great books and helping authors to bring their stories to life.

Here are some of the responsibilities of an Acquisitions Editor:

  • Scout for new talent:?Acquisitions Editors are constantly on the lookout for new authors and their manuscripts. They attend book fairs, read submissions, and network with literary agents to find the best new talent.
  • Evaluate manuscripts:?Once an Acquisitions Editor has found a promising manuscript, they will evaluate it carefully. This includes reading the manuscript, providing feedback to the author, and negotiating a contract.
  • Develop relationships with authors:?Acquisitions Editors build strong relationships with authors. They work with authors to develop their ideas, help them to produce the best possible books, and promote their work.
  • Manage the editorial process:?Acquisitions Editors may also be responsible for managing the editorial process. This includes working with editors to edit the manuscript, coordinating with designers and marketers, and ensuring that the book is published on time and on budget.

I tend to think of scouting for new talent as part of my role as Publisher, and evaluating manuscripts is handled mostly by the Synthetic Reader class. I also already have a CopyEditor agent who is responsible for taking the manuscript from acceptance to publication. So define the AcquisitionEditor’s role more narrowly: once the manuscript has been handed “over the transom”, the AE is only responsible for seeing that the main contractual deliverables occur, and that the author is happy at and after publication.

Submit a manuscript!

Objects, Methods, and Functions

I typically separate a Masthead member class into four or more modules, like so:

classes/Masthead/AcquisitionsEditor # directory
            ../../AcquisitionsEditor.py - the class, its objects and methods
            ../../AcquisitionsEditorUtilities
            ../../acquisitionseditor2email.py - command line that sends emails on behalf of AE

pages/Acquisitions_Editor.py - a presentation layer that provides web UI using Streamlit - stored in a top level directory parallel to classes/         

There are three objects that are central to the AcquisitionsEditor class: the?contractable_work,?a document; the?contractable_works_dataframe (cwdf); and?EditorActions,?a collection of actions the automatic AE can take.

  • By “contractable” works I mean not just works that are already under contract, but works that may become under contract, i.e. authors who are heading towards signing a contract. Works are book-length manuscripts received from authors and cleared to proceed to publication. Typically, they begin as Microsoft Word documents, but in theory, they could arrive in text, markdown, PDF, or layout formats.
  • A dataframe is a tabular data format used with the popular?pandas?data analysis software, which I use throughout BookPublisherGPT. The
  • EditorActions are methods that can act on the?cwdf.

In this “0.1” version I’ve deliberately kept the attributes of?contractable_work?to a minimum:

title,?author,?original_ms_filepath,?status,?contract_acceptance_date,?contract_offer_date,?contract_signed_date,?manuscript_due_date,?manuscript_acceptance_date,?publication_actual_date,?final_publication_assets_filepath

Getters, setters, and deleters can operate on?contractable_work?(document) attributes one at a time. Batch operators are also available to fill in missing values, etc.

The ContractableWorksDataFrame subclass is focused on creating the dataframe and manipulating it by filling in missing values, sorting, and so on.

I save the cwdf in a simple csv file, which I read and edit using LibreCalc because it handles csv files more cleanly and consistently than Excel.

The?EditorActions?subclass contains the main author-facing functionality, including daily, weekly and monthly status checks; reports on pending, complete and overdue tasks; and LLM prompts composing letters to authors. Similar subclasses of “all at once” actions are found for other classes in?Masthead?such as?CopyEditor?and?MarketingManager.

I use an OpenAI prompt and the?gpt-3.5-turbo?model to compose a letter to each author:

You are writing a pleasant, professional letter to the author of a book that is under contract with your publishing company. The purpose of the letter is to update the author on the status of the book, whose contract details are provided below.
RUN, SPOT, RUN! by C. Beagle is accepted and awaiting c/e.
In exactly three complete paragraphs, reiterate your enthusiasm for the book as it stands and your desire to see it published. Do NOT encourage the author to revise the book. Thank the author for his or her patience and cooperation. Provide the author with bulleted suggestions on how to prepare for the book launch.

A command-line script called?acquisitioneditor2actions.py?opens the saved?cwdf?and relies on the status info in the dataframe to select the appropriate?EditorActions?methods.

Then, the fun part …

I run this script from the command line:

$ python classes/Masthead/AcquisitionEditor/acquisitioneditor2actions.py

and it:

  • generates status reports for authors
  • warns me about things that are coming due
  • opens a browser for external actions like ordering review copies
  • generates a stack of letters, one for each author
  • updates itself to reflect this latest round of activity
  • waits for its next scheduled run

Here is a sample draft. (I treat myself as a contracted author for books I have made public commitments to write.) GPT-3.5 is over-the-top sometimes, so I usually edit these letters along the lines illustrated

Dear Mr. Zimmerman,

I hope this letter finds you well. I am writing to update you on the status of your upcoming book,?The State of the Art of Algorithmic Book Publishing 2024 (SOTABOOK).?We at Nimble are eagerly awaiting its manuscript and are thrilled about working with you towards its successful publication. Your unique?storytelling style?ability to procrastinate?has left an indelible impression on us, and we firmly believe that your work will be a valuable addition to the?literary?publishing?world.

We would like to express our sincere gratitude for your patience and cooperation throughout this process. Publishing a book is indeed a journey that requires time, dedication, and understanding from all parties involved. Your professional demeanor has made it easier for us to navigate through this process smoothly. Rest assured that we are doing everything in our power to ensure the success of?SOTABOOK.

As we move closer to the launch date of your book, there are several things you can do in preparation:

  • Start creating buzz about your book on social media platforms.
  • Consider hosting virtual readings or discussions related to themes within your book.
  • Reach out personally to influencers or critics who may be interested in reviewing SOTABOOK.
  • Prepare a list of potential interview questions about the content and inspiration behind SOTABOOK for press releases or promotional events.

Once again, thank you for entrusting us with bringing SOTABOOK into print. We look forward not only to its successful release but also witnessing reader’s appreciation of your?exquisite narrative?unique?skillset.

While opinions will vary about the verbose style of this letter, I hope we can all agree that it is darned useful to push a button and have eight of these in my outbox ready to edit and send.

TK

Some of the code will follow in an email for paid subscribers on Substack.

To come in future releases of this class:

  • a publicly available web UI;
  • author recruiting, manuscript generation and contract management tools;
  • referrals to copy editing and marketing;
  • integration with tools like LangChain and AutoGPT.

TALK TO ME

Do you want more Show N' Tell? More AI? More books? More business?

Cordially,

Fred Zimmerman

要查看或添加评论,请登录

Fred Zimmerman的更多文章

  • Professional Editing of Seed Tasks May Make Open Source AI Smarter (part 1 of 3)

    Professional Editing of Seed Tasks May Make Open Source AI Smarter (part 1 of 3)

    Professional Editing of Seed Tasks May Improve the Quality of Self-Generated Instructions[1] Fred Zimmerman, Nimble…

  • Innovating in medical equipment with Stable Diffusion and DALLE-2

    Innovating in medical equipment with Stable Diffusion and DALLE-2

    As frequent readers will recall, I recently had a serious and unusual bilateral quadriceps tendon rupture which…

  • Watch that step!

    Watch that step!

    Until I stepped off the curb last Tuesday, September 20, at 11:45 pm, my plan was to begin "31 Days of AI for…

    1 条评论
  • Sprint #4: I Couldn't Compile for 12 Days!

    Sprint #4: I Couldn't Compile for 12 Days!

    Sprint #4 went off track when I created a bug that prevented me from compiling the AltBrains Workshop capsule for 12…

  • Sprint 3 retro

    Sprint 3 retro

    What went well: * I achieved the core objectives, i.e.

  • "Find AltBrains About X" sprint is complete

    "Find AltBrains About X" sprint is complete

    In the AltBrains capsule for Samsungs Bixby conversational personal assistant, users can now browse the AltBrains…

  • Announcing AltBrains Workshop

    Announcing AltBrains Workshop

    I'm turning the page today to a new adventure as publisher of AltBrains Workshop LLC, where I create premium content…

  • Three years ago today

    Three years ago today

    This came up under my "3 years ago today" thingie on Facebook. Results of an afternoon's bigthink about PageKicker.

  • Machine-payable APIs for Harry Potter facts

    Machine-payable APIs for Harry Potter facts

    At 21.co, the pioneering Bitcoin network, machines can buy and sell API calls?—?including, as of today, a feed of…

    2 条评论
  • Creators Will Move Up the Value Chain in Algorithmic Publishing

    Creators Will Move Up the Value Chain in Algorithmic Publishing

    I received some more interesting feedback about the PageKicker publishing tool suite from independent publishing expert…

    1 条评论

社区洞察

其他会员也浏览了