Worldbuilding optimalisation for Narrova

I am working really hard to optimalize my codices (world lore etc) for Narrova. Intended use-case: developing spin-offs/new installments in Subtxt/Narrova for an existing story world.

(i.e. when letting Narrova ply it’s magic it uses names, locations, logic and lore from the storyworld, not just randomly spun)

I am sort of stuck beyond just summarizing all the info in relevant .md files.

Has anybody got any experience with this, or tips on how-to?

Thanks, Alison

One particular question is: OpenAI has a max of 20 file uploads at once. Does Narrova have that kind of cap? In which case it would make sense to combine .md files to a max of 20 …Or can I keep each .md entry seperate and upload f.ex. 100 md files to a context?

Thanks for the question. It gives us a chance to clarify how uploads work in Narrova, because there are really two different things people often mean when they ask about “limits”: the number of files and the total amount of document storage/context.

The short version is this:

There is not a simple small per-user file-count cap that we want people thinking about first.
What matters more in practice is the total amount of document material you keep in Story Context and Storyform Context, and how focused that material is.

Current plan-level document storage is:

  • Dramatica: 2 GB
  • Dramatica Plus: 10 GB
  • Dramatica Pro: 20 GB

So if the question is, “Can I upload more than a handful of files?” the answer is yes. Narrova supports multiple uploads, and the practical limit is much more about the overall document footprint than about hitting a tiny file-count threshold.

That said, there are a few important nuances:

1. File count is not the main limiter

One large draft and several smaller notes may matter more than the raw number of files. In other words, ten small files are not automatically “worse” than one large file. What matters more is the total volume of material and whether the files belong together in the same working context.

2. Context works best when it stays intentional

Narrova gives you three places to work with uploads:

  • Story Context for material that should apply across versions of the same story
  • Storyform Context for material tied to one specific structural version
  • Conversation Context for short-lived, chat-specific reference

The system works best when those contexts stay focused. If you upload every old draft, alternate version, research dump, and stray note into one place, retrieval becomes less clean. If you keep the Context aligned to the material you actually want Narrova using right now, responses stay sharper and more reliable.

3. More files is fine if the set is coherent

So the right mental model is not:

“How many files am I allowed to upload?”

It is more like:

“Do these files belong in the same working Context, and are they the files I actually want Narrova to draw from?”

That is the more useful way to think about it.

4. Retention still matters

Story Context and Storyform Context uploads remain available for 30 days after their last access, and using them resets that timer. If a file sits untouched beyond that window, it may need to be re-uploaded.

So the clean answer is:

  • Yes, you can upload multiple files
  • No, the main practical limit is not a simple file count
  • The current plan-level storage guidance is 2 GB / 10 GB / 20 GB depending on tier
  • Narrova works best when Story and Storyform Context are kept focused on the material you actively want it reasoning from

If it helps, we can also post a follow-up with a few concrete examples of what belongs in Story Context vs. Storyform Context, since that is usually the part that makes upload behavior click for people fastest.

1 Like

Very helpful. Thanks. So, I’ll keep topics that I wanted to keep separate just that.
When to use Conversation Context and when story/form context is clear to me, but I am not entirely clear about when to upload to storyform and when to story context..

I am guessing that general world lore etc goes to story context and background info on specific characters, locations etc only in that storyform goes to storyform. I’ll admit, though, the precise rule eludes me (probably because I usually work within one storyform in one story). So: examples? Yes, please :grinning_face:

Leading on from there: If I have a persistent world, do I treat that as a Story and each spin-off in there then as a Storyform?

Yes, you’re thinking about it the right way.

Conversation Context is for the conversation itself: what you want Narrova to keep in mind while you’re working through an exchange.

Storyform Context is the best place for anything that belongs to that specific Storyform: the particular characters, locations, relationships, setup, pressures, and story-specific material you want Narrova reasoning from for that one complete story.

Story Context is the larger container. That’s where I’d put the persistent world, larger continuity, world lore, rules, history, recurring locations, background mythology, and anything you find yourself repeating across multiple Storyforms. It’s also useful when you’re still not completely sure about the Storyform yet, because it gives Narrova the bigger creative frame while you work toward the more precise structure.

So for your example: yes, a persistent world can live as the Story Context, and each spin-off/installment can have its own Storyform Context inside that larger world.

This is also how development teams tend to use it. They can put the whole series, franchise, or shared world into Story Context, then have separate teams work on separate episodes or installments. Each episode might have its own Storyform Context, while still drawing from the same larger Story Context.

Episodes can have more than one Storyform, but usually they don’t. A complete Storyform generally wants enough room to play out fully, which is why a single episode often maps cleanly to one Storyform.

For solo work, especially if you’re usually working one Storyform inside one story, Storyform Context will probably be the most useful place most of the time.

@Alison this answers your question from email, but thought it would be helpful for everyone:

We found a couple of places where Narrova was being too literal with uploaded “codex” (worldbuilding) files. We’ve updated Narrova so those files are treated as reference material, not as authority over the current Storyform or the roles you’ve selected in the current conversation. That means if an older worldbuilding or character file says one person is the Main Character, but your current Storyform or latest instruction says otherwise, Narrova should follow the current story setup.

We also found the case where Narrova could lose a response and then ask you to paste the question again. We’ve changed that so Narrova can recover the original saved request and retry/answer it without making you repeat yourself.

Going forward, Narrova should do more of this automatically, but it will still help to organize uploaded codex files by purpose when possible: world bible, character profiles, timeline snapshots, prior-story events, and style/voice notes. The biggest thing is to separate “current story facts” from “history/reference from earlier stories.” Prior events are useful context, but unless you want them repeated or continued, they’re best framed as background history rather than instructions for the new story.

This will be going out in tonight’s rollout, so looking forward to hearing how it goes.

Thanks. Looking forward to trying it out!

@general background (for other readers) :

(My codex making skills are improving, but the errors I encounter due to sloppy OpenAI, or personal misunderstandings might be useful to others. )

The message Jim replied to wa s:

… I (Alison) have been dry-running the codex inside subtxt. It worked reasonably well, but there were a few persistent error type s.

1) timeline: if I want to do prequels and sequels, I need before and after snapshots of the world. As of now, Narrova keeps reverting to the current story world. Makes sense, but not what is needed. So, I need to update the codex for these different conditions. Easy enough, but a bit of work which I need to do.

2) Whatever has happened in the stories that I used to generate the codex keeps on happening again in new stories generated. Again, makes sense, but not what is needed. I need to separate established story happenings from locations and places to stop them from repeating in newly generat ed sto ries.

3) Keeping characters consistent with their established personality: It’s a tight balance between an established personality and a new dramatic function into which they might be placed. In my dry run the character Shams, f.ex., totally changes his established personality to fit the dramatica needs. To avoid this I need to recreate the character codices to firmly state their personal ities.

4) Important: Keeping characters role neutral in their codex descriptions. I based the codex on already written story, which has a protagonist MC (Risha) and a few logical influence characters. In the dry run, I purposely defaulted to different MC and IC characters, but Narrova kept pushing me back to the already established book MC and IC. The new story and the story upon which the codices were based thus conflict and cause troubling errors and contradictions. I need to recreate the character codices to be role neutral. (Now solved b y Jim!)

(end of message)

A few things I learnt that might hel p others:

- Claude is more versatile and delivers far better RAGs than OpenAI. Way better. I can load loads of files in one project, which it then handles intelligently and coherently. However, Claude easily reaches it’s max usage under a normal paid subscription, which causes lots of downtime.

- OpenAI: really needs the (extended) thinking turned on for codex generation. Can only handle 20 files. Best for distilling the gist of things. Claude tends to stay more literal. OpenAI really needs to be told to stick to the source material and not add its own crumby inter pretations.

- NotebookLM loves short responses, even when I ask for complete and thorough. (I use the free version). So, I gave up on th at for this.

- The message reprinted above described the end of my first round of RAG-generation. I have my books well-tagged in Causality software and output each tag to a docx, which I then supply to an AI. I have now learnt that this first run is necessary, but preliminary.

- My second round, I am doing in Claude. I uploaded all first generation RAGs to a project and in the instructions I mentioned the above 4 error types. I also asked to check for overlaps. It understands beautifully: removes the redundancies and solves the above error types. I have it generate each RAG-type individually in the same chat. Costs me a lot of tokens/downtime, but keeps each RAG-category as a whole system.

Work in progress. Corrections by those who know more ar e welcome:blush:

1 Like

The codex has been completely de-storified according to the above criteria. However, when I use it in Subtxt and have filled in substantial portions for the new spin-off, it still really likes to revert to what happened in the original story.

When I ask for it to develop a new story IC-arc, for example, it rehashes the now irrelevant events of that old story. Despite there being a timestamp on the story situations (i.e. sequel) and these being clearly defined inside the markdown files.

I really don’t know how to further de-storify my markdown files.

Thanks for solving! It now reads the storyform.

1 Like

So we’re good now? Just want to make sure there isn’t anything else we can do.

Well, since you’re asking :slightly_smiling_face:

High on my wishlist (probably not possible - if so, no problem; no harm in asking):

Sometimes a new story picks up where the old story left off (or directly leads to it), in that case the events and memories of players are important and should be included in Narrova generation (as they are now).

Sometimes, however, a new story starts with familiar people (or not) and a clean slate albeit in the same world (f.ex. Mandalorian, or whatever). In that case regurgitating memories and happenings of players is undesirable.

This creates a conundrum: the memories and happenings have to be included, but sometimes they have to be ignored and ‘discontinued’.

It would be great to have standard option to choose from:

A: this storyform continues from or leads to the main story (in which case use all memories);

B this storyform starts in the world but from a cleanish slate (don’t regurgitate memories).

If that were available when starting a new spin-off that would be fabulous.

Thanks for asking. Feel free to not implement :slightly_smiling_face:

Very cool idea - I’ve been working on some improvements to memory in general across Narrova, so will see what I can do about getting these kinds of ideas in there.

1 Like

Just thinking out loud here:

My best fit for the codex markdowns so far has everything in the story context including a temporal reference index (and a location index).md.

Then, in the storyform context a single markdown (so far) stating the temporal reference (i.e. before, after the main story etc), and the location.

Referencing the different types of spin-off (ranging from totally unrelated to next episode) would to me seem to belong in that single storyform context markdown file.

If it were possible, when starting a new spin-off to … just answer a few basic questions about where it belongs on the above range etc. and finishing up with any personal note to add. If that were then to be automatically written into the storyform markdown, then that would then be available for the whole of that storyform.

Of course, it might be much more logical to place the whole of that in the ncp file during these preliminary questions. You’re the expert.

What I’ve noticed is that I only discover during the brainstorming phase what needs adjusting and tweaking as regards to retrieval from the codex. Manually rewriting the storyform markdown each time would be a serious timedrainer.

Thanks for your attention.

OK, I think we’ve worked out a way to get this in there for you in the next release, you’ll have to let us know!

1 Like

@Alison there’s a new Memory feature rolling out in Narrova this weekend that you might want to check out. It’s experimental, but so far I’m finding it quite useful! It might do what you’re looking for.

Here’s the new documentation for it: Narrova Memory

1 Like

Wow, looks perfect. I most certainly will!

1 Like