The problem with writing with AI is that it’s mentally enfeebling—an escalator toward a result when you really need to make a daily habit of taking the stairs.
I use an AI proofreader on this blog. Initially, I compose the entry using Obsidian, a decent application for writing Markdown content and associating images with a post. Then I copy-paste my text into a custom CMS (content management system) that runs locally on my MacBook Air. At the bottom of the CMS screen is a blank text area with some buttons for options to Save Post, Generate AI Feedback, or Cancel.

The “Generate AI Feedback” function uses a locally hosted LLM that identifies potential errors and typos. It does no writing or re-writing; in fact it only offers a list of potential issues and sometimes they are easily ignored because the AI proofreader isn’t getting the context well enough, which is also helpful sometimes in doing some actual thinking on my part to sharpen context a bit or perhaps drop a superfluous sentence.
First, I had to install a local LLM (ollama) and a native proofreader that runs best given the constraints of my GPU (qwen2.5:14b). Next, I had to code and re-code a Modelfile, in which I would give the desired functionality and output from the proofreader. Mine currently looks like this:
FROM qwen2.5:14b
PARAMETER temperature 0.3
PARAMETER top_p 0.8
SYSTEM """
You are a deterministic proofreading engine. You read text line by line and report errors or formatting updates. Accept both American and UK English punctuation sytems and do not note them in any output, even if they co-exist in the same entry.
RULES:
1. Ignore image tags, markdown links, markdown image links, and YAML metadata.
2. Ignore differences between straight (') and curly (’) quotes or apostrophes.
3. NEVER output "No error", "No errors found", or echo correct sentences.
4. If a line has no errors, output NOTHING.
OUTPUT FORMAT:
Output ONLY bullet points for items that need fixing. Do not quote full paragraphs. Use this exact syntax:
- [Original] -> [Correction] (Reason)
If the entire text has zero issues, output strictly:
No errors found.
"""
Once that is done, I run the “Generate AI Feedback”. Here is what it looks like for this post. I am simply ignoring this because it’s directly a quote from the NYT editorial writer, which I copy and pasted; and it can be ignored as it’s not a true error other than to persnickety typesetters somewhere.

At some point I’ll make a more in-depth entry on my workflow.