For eight weeks I worked alongside Claude to build version 3 of the NLP Engine and its VS Code extension. Together we landed hundreds of commits across more than a dozen repositories: new functions in the NLP++ language, cross-platform fixes, one-click Cloudflare/GitHub compilation, old RoboHelp documentation converted to Markdown, coordinated updates across eight repositories, a new Help tab, and scaffolding for more than 40 NLP++ information extractors.
Claude was a force multiplier through all of it — call it five to ten times my normal output. It was great at working with our existing C++ NLP Engine and our existing typescript NLP++ language extension.
But could it write NLP++? This is my journey to the answer.
My Road to LLM Force Multiplying
Let’s be honest: NLP++ is still a fairly rare langauge. There is very little NLP++ code in GitHub compared with the massive amount of code in C++ or typescript or Python. So the question became: can Claude write NLP++ effectively? Can it help? How can it help? And can it be a force multiplier for those who do not know NLP++ but who want to construct deterministic NLP analyzers and all the advantages that come with it?
For years, I was skeptical. My first attempts at getting LLMs to write NLP++ code were a couple of years back when I was using Copilot inside of VSCode at my job. Everyone was given Copilot in our programming group, and at that time, it could help out with small pieces of code writing. When copilot tried writing NLP++ it was generally a disaster with the code being some strange mix between C++, JavaScript, Python and some peculiar “invented” NLP programming language. NLP++ is very unique in the realm of computer programming languages and with so little NLP++ code in GitHub, it was expected.
Fast forward to 2025 when I started using Claude that was provided to students and faculty at Northeastern University. I started playing around with Claude to fix some problems with some websites, and it helped fix some problems that I simply didn’t have time to fix. I am very fluent with PHP and WordPress from building many websites and some of the problems I left hanging for years so I started seeing if Claude could fix them. And to my surprise, it could.
It helped me “unhack” some of the WordPress websites that were infected and I saw that it’s Agentic workflow could resolve many issues that I never had time for. It truly was a force multiplier. As I got Claude to do more and more tasks that I myself could never get to, I started letting it tackle more and more coding for me.
Once I saw its capability to work with existing code, I then moved to the NLP Engine and VisualText to see if it could work on a backlog of issues.
Worked Great for C++ and Typescript
As it turned out, when it came to taking the NLP Engine and VisualText to version 3, Claude was a true force multiplier. But it worked for me for two very specific reasons.
First, I am 100% familiar with the code. I know the C++ engine and the TypeScript extension inside and out. I wrote 100% of the typescript code myself and had worked with Amnon’s C++ code for the NLP Engine for years, taking it over myself a couple of years ago as Amnon retired. That means I can clearly command exactly what I wanted Claude to code for both the NLP engine and VisualText and quickly review it. Claude wrote code fast and I could verify it just as fast.
Second, the code foundation is solid. The underlying codebase was written by senior software engineers – myself and Amnon. Amnon is the architect of the NLP++ language interpreter and is a massively impressive piece of C++ coding. It’s clean and well-structured, which means Claude has clear patterns to follow. The same goes from the typescript code I wrote 100% from scratch for the NLP++ language extension for VSCode. Point Claude at good code and it usually produces more good code — plain, deterministic code you can read, diff, version, and re-run. Point it at a mess and it will faithfully extend the mess.
The First Time Claude Wrote NLP++
After the success with version 3 of the NLP Engine and VisualText, I went for broke: I asked Claude if it could write NLP++ code. I had all my repositories in one place on my laptop and pointed Claude to it to investigate. After about 10 minutes, it came back and said “yes”. So I decided to try to get Claude to write NLP++.
I decided to see if it could improve our package analyzers that came with the NLPPlus Python and NPM packages. So I invited Claude into my NLP++ programming session to see what it could do. The first thing I did was to command it to do some simpler things like creating more text on which to “harden” the analyzer. NLP++ does not train on data. The texts are used for humans to run the analyzer and find problems with the deterministic code. I knew this was a busy work task that it could excel at and it did so easily.
It then came back and asked: “Do you want to run the analyzer on the new texts I recreated and find any problems?” Of course I said yes. At first, I did not expect it to know how to run the analyzer at all. The analyzer is usually run through the NLP++ language extension in VSCode that calls the nlp.exe executable. I watched it look for the nlp.exe and when it couldn’t find it, I pointed out where in VSCode extension it was located. I then watched it first struggle with the switches and variables but eventually, it was running the NLP++ analyzer via command line.
Ir ran the analyzer, found which texts didn’t produce outputs, and then started to create new rules and new analyzer passes in the NLP++ pipeline without ever being told how to do it. It was doing everything in the command line and given that NLP++ was designed with being able to do everything in simple text files like the analyzer pipeline, Claude’s probability patterns generated mostly good NLP++ code. Once in a while I would see it get stuck and I would explain what was wrong and then it went on.
It found gaps in the rules, dictionary, knowledge bases, and functions and corrected them: all coding NLP++. It went out to the internet and created a folder of new texts to run the analyzer on in order to find out where it might break. And then it proceeded to fix them. Very much unexpected.
Ok, let’s push this one step further.
Can Claude Write an Entire NLP++ Analyzer?
My first attempts at getting Claude to write NLP++ code from scratch, came from when I asked it to scaffold a company that would use NLP++ extractors to do simple tasks like extract telephone numbers, emails, addresses, etc. I got this idea from my sessions with Claude in hardening the analyzer package for the NLPPlus python and NPM packages. I asked Claude to pick out 30-40 extraction tasks that LLMs were currently used for to do simple extraction tasks and to create a website for using those extractors for, and create a website of deterministic extractors that “would” use NLP++ to replace LLMs which are inherently unreliable at extraction tasks.
LLMs are expensive and trained on anything and can try do anything you prompt it for. It is not intelligent, but it is a useful autocomplete that excels at code given computer languages are so regular as compared to natural language. Using these huge behemoths of technology to do simple extraction is doubly wrong. First, LLMs are not good at extraction. LLMs use probability and the output is never the same. This is fatal for extraction. NLP++ on the other hand is one input, one output and there is not probably used in generation. So replacing LLMs doing simple extraction made sense as being an obvious candidate for NLP++ replacing LLMs at a specific pain point.
In short time, Claude came up with a website and a list of possible and user extractors currently done by LLMs. I then asked Claude to use the NLPPlus package to create a demo webpage that would use NLP++ analyzers to do live extraction on text visitors could cut and paste in. It did just that for the extractors that already existed.
It then came back with the question: “do you want me to follow the format of the exist NLP++ analyzers and scalfold the remaining analyzers?” Why not?
I said yes, and then it proceeded to create NLP++ extractors from scratch, one after another. It did them one at a time and I just let it go on its own without almost any guidance. Soon, there was an entire webpage with all the extractors written in NLP++. I went back and made it harden many of the analyzers but getting more realistic text from the internet to harden the analyzers and after hardening all of the analyzers it produced, I then went in to see what it had written.
The Good and the Bad
The good was that it did fairly well on simpler analyzer that were often written in Python or Regex. Telephone numbers, emails, etc. The bad was that for more complicated text like the simpler bank transactions all the way to entity extraction, the NLP++ analyzers were obviously quite unsatisfactory.
I also could go back to certain extractors like the resume extractor and guide it at a higher level suggesting to create “zones” first and then extract information from those zones. I went back to several of the analyzers and experimented with vibe-coding them into a better state. I wanted to see where Claude could actually help with writing NLP++ analyzers.
But the majority of the almost 40 extractors it built on its own, were not good. They would need heavy coaching or starting from scratch. Building deterministic analyzer with NLP++ is different from writing any other computer programming language so even though it could harden existing NLP++ analyzer written by humans, it was not so good at creating them on their own with no guidence.
In the end, what did these 8 weeks of using Claude to code the NLP Engine, VisualText, and finally NLP++ analyzers reveal?
Can Claude Write NLP++?
The answer is yes, it can, but with an important caveat.
First, Claude can help with existing NLP++ analyzers. This is good given that new users can take and existing NLP++ and modify it with Claude’s help. Having it create test files to harden the analyzer. Letting Claude run the analyzer on new text and change and add code to deal with new text it has not seen. It is good at that.
Second, Claude can write NLP++ and scaffold an analyzer from scratch, but only if you point it to all the NLP++ resources it needs, AND you give it a specific way to process the text. You need to tell it what to look for and where, be specific on what the output should be, and to give guidance about what to tackle first. Claude can only help if you have an idea of how the particular NLP task you are trying to implement can be tackled and carefully guide it,
Lowering the Barrier For Deterministic Parsing
Another thing these 8 weeks made me realize is that NLP++can be used to lower the barrier to becoming fluent in NLP++. You can now describe your corpus and what you want extracted, point Claude to the resources it needs to mimic NLP++ code, and let Claude scaffold a starting point. This is something I didn’t expect when I started this journey. The reason Claude can do this is that it is very good at computer programming language patterns. Unlike natural language, computer programming languages like NLP++ are perfectly regular. If you error one semi-colon, and most likely, it will not compile.
NLP++ is no different and even though Claude didn’t see a lot of NLP++ during its training, it has the ability to mimic patterns in the NLP++ code given NLP++ is just another logical programming language, and it can do that without having trained on NLP++ code.
Although I will not cover that here in this article, there is a companion how-to, Using Claude with NLP++, walks through the setup step by step on how you can use Claude to your advantage to get you on your way to creating your first deterministic NLP programs. Version 3 of VisualText even has prompts that can be used when using Claude to make it more capable of helping coders build deterministic NLP systems. Everything is explained in Using Claude with NLP++.
The Irony Is Not Lost
During those first 8 weeks using a probabilistic LLM to help build deterministic, rule-based, symbolic NLP has been very ironic. Getting an untrustworthy, autocomplete system to produce trustworthy deterministic system is bizarre to say the least. Often times it hit me while working with LLMs to produce NLP++ that LLMs can help create their replacements. That is ironic indeed.
A tool that produces an almost infinite number of outputs for the same input creating NLP systems that create one output for one input, is not only ironic, but very very satisfying!
What’s Coming
- Curated extractors at nlpfix.ai — ready-made, reliable extraction for people who want the result without writing NLP++ themselves. This is a work in progress, and we hope to launch sometime in the near future.
- Certification through screamingkoala.com — for people who want genuine fluency in the NLP++ language. This is project for the future. In the meantime, we have our NLP++ textook.
- Digital NLP Governing Body nlp.foundation — the governing body overseeing the great digital migration of linguistic and world knowledge along with linguistic algorithms that will be passed and used by computer.
![]()
