@model StoryIntelligenceOverviewViewModel @{ ViewData["Title"] = "Story and portrait context"; }

Step @Model.WizardCurrentStep of @Model.WizardTotalSteps

Story and Portrait Context

Set the context choices for this manuscript before the analysis starts.

@if (TempData["OnboardingStoryIntelligenceError"] is string error) {
@error
} @if (TempData["OnboardingStoryIntelligenceMessage"] is string message) {
@message
} @if (Model.ExistingBatchID.HasValue) {

Analysis has already started

You can continue reviewing progress for the approved chapters.

Continue pipeline
} else {
Chapters @Model.ApprovedChapterCount

Approved chapters from your manuscript review.

Words @Model.ApprovedWordCount.ToString("N0")

Chapter text ready for analysis.

Estimated time @EstimateDuration(Model.ApprovedWordCount)

The analysis runs in the background, so you can leave this page and return later.

Review You approve creation

Scenes are created only after the analysis completes and you choose Create scenes.

@if (!string.IsNullOrWhiteSpace(Model.Message)) {

@Model.Message

@if (Model.MissingChapterTextCount > 0) {

@Model.MissingChapterTextCount chapter(s) do not include scanned text. Scan the manuscript again before analysing.

}
}

Pre-analysis setup

Context choices

Explicit manuscript evidence always wins. These choices guide unresolved generated portraits and broad story context.

Required before analysis
1Analyse chapters
2Review scenes
3Review story entities
4Build database
Back to scan review
}
@functions { private static string EstimateDuration(int wordCount) { if (wordCount <= 0) { return "A few minutes"; } var minutes = Math.Clamp((int)Math.Ceiling(wordCount / 3000m) * 2, 2, 30); return minutes <= 2 ? "About 2 minutes" : $"About {minutes:N0} minutes"; } }