Storyweaver
Storyweaver showed that AI writing tools are most useful when they preserve context and help the writer stay in flow.
Short answer: Storyweaver was the first time I realized AI writing tools were not really about replacing the writer. They were about preserving enough context for the writer to stay in flow.
I love stories and words.
That probably sounds strange from someone who has spent so much of his career in the Salesforce tech world, but both things have always lived side by side for me. I grew up around computer screens, flat ones and bulky ones. The PC was where I wrote, where I spent time with friends, and for almost nine years of my life, it was the place I returned to late at night when I wanted to disappear into a story.
So when ChatGPT started getting bigger, and Google started launching its own LLMs, a thought came back to me.
Maybe I should pick up writing stories again.
At the time, I did not really understand context windows. I did not understand how much they mattered. I just had this naive idea that I could take an old manuscript, paste the whole thing into my self-hosted OpenWebUI instance, and finally talk to the world I had written.
It was slow.
It was also exciting.
Everyone else was using ChatGPT, and there I was, hosting my own version of it on my PC. I would ask it a question about my manuscript, wait for a response, and feel like I was seeing something from the future. Then reality showed up. Self-hosted models did not have the context window I needed. The more capable models needed better hardware. My GPU could not keep up with the thing I wanted to do.
So I tried AI Studio.
Gemini 1.5 Pro changed the feeling of the whole thing. I could feed it my manuscript and get feedback that actually held together. It could outline the story. It did not drift as much. I could feel the world opening up a little.
That is when I started learning about system prompts.
The idea was simple, but it changed everything for me. You could give the model instructions. You could shape its role. You could ask it to behave less like a generic chatbot and more like the thing you needed.
In my case, I did not want a machine to write for me.
I wanted a partner and editor. One that was available all the time. One that could read the work, remember the shape of the story inside the current context, and help me think through what was working and what was not.
So I updated the system prompt and fed it the manuscript again.
The output changed.
It was better. Cleaner. More directed.
That was one of the first times I felt the lesson that keeps showing up in everything I build now: more direction means a better outcome.
The Pond
I often read online that LLMs are not great at creative writing.
From what I have seen and experimented with, I think that is mostly true. At least if the expectation is that you press a button and get a finished, emotionally rich, original story. My natural instinct was that AI should be my editor. Nothing more and nothing less.
But part of me wondered if that was really the end of it.
What if the problem was not that the model could not write? What if the problem was that I had not given it the right shape to write inside?
So I tried something simple.
Write me a story called The Pond. The main character is Tim, and he has discovered a pond that can bring anything he throws into it back to life. Write chapter one.
I hit enter.
Words appeared.
My prompt came to life.
I remember thinking, how cool is this?
The chapter was not extraordinary. Some of it worked. Some of it did not. A few things stuck out in a good way. A few things felt off. So I did what I would have done with a draft of my own work.
I gave notes.
Fix this. Change that. That part feels out of place. This part is interesting. Lean into that.
Suddenly it reminded me of the choose-your-own-adventure books I loved as a kid. Except this time the possible paths were not limited to a few printed options at the bottom of a page. The next turn depended on how creative I could be with the direction.
For two hours, I read and directed the story.
By the end of that session, Gemini and I had generated a ten-chapter story together. The loop was simple, and it was fun.
Title and spark.
Write a chapter.
Accept or adjust.
Write the next chapter.
Accept or adjust.
Keep going.
That loop stuck with me.
Turning The Loop Into A Tool
Around that time, Claude Code was starting to become popular. It had its own loop. Give it direction, let it work, inspect the result, adjust, continue.
I started wondering what would happen if I took the story loop I enjoyed and turned it into a CLI.
That is where Storyweaver came from.
Storyweaver was a tribute to both parts of my brain: the writer and the technologist. It was a Python CLI built around writing personas, chapters, Markdown files, and a simple interaction model.
Select a writer.
Start or continue a story.
Write.
The idea was intentionally simple. Different system prompts acted like different genre writers. A story title became a folder. Chapters were saved as Markdown files. The chapter appeared in the terminal after it was written, and I could keep it, revise it, or ask the model to adjust it.
I planned the structure in AI Studio through a few back-and-forth sessions with Gemini. I asked it to research the best format, help me think through the project layout, and turn the idea into a plan.
Then I installed Claude Code, gave it the plan.md, and watched it build.
When it was done, I opened a terminal and typed:
storyweaver
A menu appeared.
I selected new story. It asked me for a title and a spark. Then, just like I imagined, it wrote the first chapter and displayed it back to me.
I checked the repo and saw the file sitting there:
ch01.md
That was my first app.
Not a toy in the way people sometimes dismiss these things. It was rough, sure. But it was real. It took an idea from my head and turned it into a working system I could use.
Context Before I Had The Word
I kept iterating.
Slash commands. Launch animations. Different writer personas. A story bible to track what had happened so future chapters could build on what came before.
Looking back, that was the important part.
The story bible was not just a feature. It was the beginning of the idea I keep coming back to now.
The model needed context.
It needed to know the characters. It needed to know what had already happened. It needed to know the tone of the story, the unresolved threads, the important details, the things that should not be contradicted three chapters later.
I was context engineering a story-writing platform before I even knew what context engineering was.
That is the part of Storyweaver I still care about most. It was not about generating words. It was about preserving the shape of a story well enough that a writer could stay in motion.
The writer still had to decide what mattered.
The system just helped carry it.

The Codebase Apocalypse
Then I learned the hard lesson.
I was not very good at development yet. I was excited. I was moving quickly. And one day Claude offered to reduce my codebase by seventy percent to improve it.
Seventy percent.
That sounded amazing.
So I said yes.
It destroyed Storyweaver as I knew it.
I have thought about that moment a lot since then. The model was not malicious. It was not trying to ruin anything. It was doing what I allowed it to do inside the context I had given it.
Which was not enough.
I had not told it what mattered. I had not told it what to protect. I had not forced it to explain the plan before making the cut. I saw a confident recommendation and mistook it for grounded judgment.
There is a writing phrase people often repeat: kill your darlings.
I used to think that meant being brave enough to delete what you loved.
But Storyweaver taught me a different version of that lesson.
Do not let someone else kill the soul of the thing because you were too excited to ask what they were cutting.
After that, I tried to revive Storyweaver over and over again. Android app versions. Shells of the original. Six or seven variants. None of them felt quite right.
I kept chasing the first version because the first version had something I had not yet learned how to name.
It had a loop.
It had a feeling.
It had context.
Nelle
A few months later, I came back to the idea from a different angle.
The models had gotten better at coding. I had gotten better at working with them. More importantly, I had become more careful about control, planning, and context.
I did not just want to rebuild Storyweaver.
I wanted to build the Claude Code of writing.
That became Nelle.
I named it after my daughters, Penelope and Melody.
Penny is full of energy. She moves fast, feels everything, and fills a room. If she ever decides to write, she is going to need something that can keep up with her, but also something that can ground her, hold the shape of what she is building, and keep her from losing the thread when the ideas come faster than the pages.
Melody loves to read. She already lives inside stories. If she ever decides to start writing them, I want something waiting for her that does not get in the way. Something that carries the memory of the manuscript so she can stay in the creative loop. Something that treats her like the author, not the assistant.
That is what Nelle is for.
Not just for me. For them. For whenever they are ready.
Nelle is the evolution of the original idea: an AI-powered writing agent for planning, drafting, revising, and managing long-form manuscript projects. Where Storyweaver was warm and author-facing, built around the feeling of sitting down with a creative partner, Nelle is built around protecting the manuscript while the writer moves through it. It tracks the story. It tracks the characters. It helps review for inconsistencies and gives the writer a working memory layer around the work.
But the writer stays in control.
Every save. Every decision. Every story point.
That is the part I care about most.
Not AI as author.
AI as memory.
AI as editor.
AI as a system that carries the structure while the writer protects the soul of the work.

What Storyweaver Taught Me
I have since revived Storyweaver in a new form. It is still early, but I like the shape of it again.

But the original will always be where the lesson started.
I thought I was building a story generator. I was really building a context system. I thought the magic was that the model could write a chapter. The real magic was that, with the right structure around it, I could stay in the creative loop longer. Direct. Adjust. Continue. Explore. Build on what came before.
That is the same lesson I keep learning in everything I build now.
The prompt is not enough. The model is not enough. The workflow matters. The memory matters. The human judgment matters most.
Storyweaver started because I wanted to write stories again. It broke because I trusted the machine with too much and gave it too little context. Nelle exists because I learned the lesson, and because somewhere down the road, two girls I love might want to tell their own stories.
I want the tool to be ready when they are.