How I Built LitPulse: A Python Tool for Literary Analysis (With Just a Hint of AI)

Hi, my name is Olga. I’m a web developer and a writer. I also have a deep love for linguistics, philology, and, of course, literature. About four years ago, I wrote my first book. The concept was (and still in progress, to be honest) ambitious, but the execution was clumsy and awkward. It was only when I stepped back and reread my own words that I truly realized how much I still had to learn. I devoured every book I could find on the craft of writing, but at some point, they stopped answering the question I was really asking: How does literary text work, and how can I refine my own voice? That nagging question — What’s wrong with my text? — just wouldn’t leave me alone. Of course, I understood that plot is one of the timeless pillars of good storytelling. But for me, personally, stories with a strong narrative voice and rich style have always been more meaningful than just a well-structured plot. In a way, I’m an aesthetic purist — and I think that’s the trait that ultimately led me to create LitPulse. Because writing is just a humble hobby for me, I couldn’t afford professional editors — not even a detailed manuscript critique. I spoke with other indie writers, even worked with a hobbyist editor, but I never quite got the objectivity I was hoping for. I saw texts that were polished to perfection — and yet they felt hollow, even lifeless. On the other hand, I came across texts that were vibrant and full of rhythm, but riddled with stylistic issues that ultimately ruined the experience. I already knew how important rhythm was, along with tone, register, and literary devices. But where was the golden mean? I needed examples. I needed to understand why something worked, and why something else didn’t. But everything kept revolving around subjective taste and individual expertise. That cursed question — What’s wrong with my writing? — haunted me. You probably know the feeling: everything seems to be in place, and yet… something’s off. That’s exactly where I was stuck. So I asked myself: What if I could find that objectivity through code? Maybe the elusive magic of style leaves behind a trace — even in cold, printed text. I’ll spare you the long and boring part — the criteria, the testing, the failures, and the endless loop of adjustments. But I will say this: I quickly lost faith in AI as a precise or dependable tool for this kind of analysis. Eventually, I had to accept that all I could rely on — for now — was syntax, grammar to some extent, and more trustworthy NLP methods (I chose spaCy as my main toolkit). I started running dozens of classic and contemporary texts through my system. And over time, I managed to uncover some patterns. I was able to map out literary quality in numbers and charts, to define boundaries — where clichés or complex structures are acceptable, and where they clearly go too far. Through trial and error, I shaped a set of metrics and filters. I abandoned some, shelved others for future work, and refined the ones that proved to be useful. Eventually, those individual parameters began to form a system — one that could evaluate texts based on stylistic consistency, structural and lexical diversity, tonal balance, redundant content, and even genre alignment (via averaged “literary standard” profiles). One of my earliest discoveries was this: a large vocabulary does not make a text rich or expressive. Often, the opposite is true. Beginner writers (hi, past me!) tend to overdo synonyms. It’s so tempting to dig out a rare or fancy word from a thesaurus and throw it into a sentence, just to impress the reader. I also found subtle clues left behind by purple prose. To my surprise, the issue wasn’t a surplus of adjectives, but an overuse of adverbs — especially those ending in “-ly”. That became one of the earliest flags in my “purple prose detector.” Then came the next big question: Is this even useful to anyone? Is it too technical? Too dry? Will anyone understand what I’m trying to do? I decided to take the risk. I launched LitPulse as an internal filter for recommended books on a literary platform I was developing in partnership. It’s a space where indie authors can publish and sell their work — and the number of uploaded texts has grown into the thousands. Plenty of material to test the system. I wasn’t expecting a wave of attention, but it came — though not quite the way I hoped. Writers complained about bugs, nitpicked the numbers out of context, and took offense at a “cold, heartless algorithm” that supposedly “didn’t understand creativity.” (Some even sent in a professional editor to fact-check me — fortunately, he was kind and constructive.) But there were also people who saw the value in the tool. From them, I received the first real feedback and suggestions. And that’s when I made my decision: LitPulse will keep going — as long as someone finds it useful. Who is it for? Editors — for deeper diagnostics. Publishers or contest curators — to sift through large volumes of texts and

Apr 21, 2025 - 22:53
 0
How I Built LitPulse: A Python Tool for Literary Analysis (With Just a Hint of AI)

Hi, my name is Olga. I’m a web developer and a writer. I also have a deep love for linguistics, philology, and, of course, literature.
About four years ago, I wrote my first book. The concept was (and still in progress, to be honest) ambitious, but the execution was clumsy and awkward. It was only when I stepped back and reread my own words that I truly realized how much I still had to learn. I devoured every book I could find on the craft of writing, but at some point, they stopped answering the question I was really asking: How does literary text work, and how can I refine my own voice? That nagging question — What’s wrong with my text? — just wouldn’t leave me alone.
Of course, I understood that plot is one of the timeless pillars of good storytelling. But for me, personally, stories with a strong narrative voice and rich style have always been more meaningful than just a well-structured plot. In a way, I’m an aesthetic purist — and I think that’s the trait that ultimately led me to create LitPulse.
Because writing is just a humble hobby for me, I couldn’t afford professional editors — not even a detailed manuscript critique. I spoke with other indie writers, even worked with a hobbyist editor, but I never quite got the objectivity I was hoping for.
I saw texts that were polished to perfection — and yet they felt hollow, even lifeless. On the other hand, I came across texts that were vibrant and full of rhythm, but riddled with stylistic issues that ultimately ruined the experience. I already knew how important rhythm was, along with tone, register, and literary devices.
But where was the golden mean?
I needed examples. I needed to understand why something worked, and why something else didn’t. But everything kept revolving around subjective taste and individual expertise.
That cursed question — What’s wrong with my writing? — haunted me. You probably know the feeling: everything seems to be in place, and yet… something’s off. That’s exactly where I was stuck.
So I asked myself: What if I could find that objectivity through code? Maybe the elusive magic of style leaves behind a trace — even in cold, printed text.
I’ll spare you the long and boring part — the criteria, the testing, the failures, and the endless loop of adjustments. But I will say this: I quickly lost faith in AI as a precise or dependable tool for this kind of analysis.
Eventually, I had to accept that all I could rely on — for now — was syntax, grammar to some extent, and more trustworthy NLP methods (I chose spaCy as my main toolkit).
I started running dozens of classic and contemporary texts through my system. And over time, I managed to uncover some patterns. I was able to map out literary quality in numbers and charts, to define boundaries — where clichés or complex structures are acceptable, and where they clearly go too far.

Image description

Through trial and error, I shaped a set of metrics and filters. I abandoned some, shelved others for future work, and refined the ones that proved to be useful. Eventually, those individual parameters began to form a system — one that could evaluate texts based on stylistic consistency, structural and lexical diversity, tonal balance, redundant content, and even genre alignment (via averaged “literary standard” profiles).
One of my earliest discoveries was this: a large vocabulary does not make a text rich or expressive. Often, the opposite is true. Beginner writers (hi, past me!) tend to overdo synonyms. It’s so tempting to dig out a rare or fancy word from a thesaurus and throw it into a sentence, just to impress the reader.
I also found subtle clues left behind by purple prose. To my surprise, the issue wasn’t a surplus of adjectives, but an overuse of adverbs — especially those ending in “-ly”. That became one of the earliest flags in my “purple prose detector.”

Image description

Then came the next big question: Is this even useful to anyone? Is it too technical? Too dry? Will anyone understand what I’m trying to do?
I decided to take the risk.
I launched LitPulse as an internal filter for recommended books on a literary platform I was developing in partnership. It’s a space where indie authors can publish and sell their work — and the number of uploaded texts has grown into the thousands. Plenty of material to test the system.
I wasn’t expecting a wave of attention, but it came — though not quite the way I hoped. Writers complained about bugs, nitpicked the numbers out of context, and took offense at a “cold, heartless algorithm” that supposedly “didn’t understand creativity.” (Some even sent in a professional editor to fact-check me — fortunately, he was kind and constructive.) But there were also people who saw the value in the tool. From them, I received the first real feedback and suggestions. And that’s when I made my decision: LitPulse will keep going — as long as someone finds it useful.
Who is it for?
Editors — for deeper diagnostics. Publishers or contest curators — to sift through large volumes of texts and filter out those that are clearly underdeveloped. (Just to be clear, I’m not claiming this system can replace an editor. But as a first-pass filter, it saves time — and time is priceless.) And of course — it can help beginner writers, too. Not the ones who want shortcuts. But the ones who care about their craft. The ones who want to tell great stories in a way that feels alive.
I'd love to hear your thoughts, suggestions, or even criticism.
Thanks for reading.