Build-out & go-to-market · propose-only · 2026-07-05

oll-write — Build-Out & Go-To-Market

The product works; here's how we make it a service people rely on and pay for, the oll-am changes that support it, and the exact people and places to reach this week. Two halves: Part I — the build-out that turns a demo into a chargeable service (and the platform primitives it banks); Part II — precisely who to sell it to and where they already gather. Grounded in the feature docs, the product thesis, and the integration plan.

"A real editor where your private corpus is live context — indexing on-device, pay once."

Honest flag — read this first. This is after-/alongside-first-franc platform work. The humaniz.me money path stays P0 — nothing here jumps that queue. And within oll-write itself, the chargeable rung comes before the exotic features: we ship "the sidecar works in prod, gated behind CHF 9" (Rungs 0–2) before we ship gap-chips, voice-profile, or a second-brain product (Rungs 3–4). This is propose-only: a sequenced plan and a decision surface, not a mandate.

Two things are already truer than the demo shows. (1) oll-memory (PR #80, unmerged) already does PDF ingest, hybrid retrieval, ACL scoping, delete, and structured extraction — so half the "premium" roadmap is wiring, not building. (2) The real work is correctness plumbing — stable doc-ids, a relevance floor, retries, and routing generation through the one server that owns entitlement — because a writing tool whose citations can be wrong is worse than one with fewer features.

Part I — Build-Out (product + platform)

What we found in the code

Before proposing features, we read the two services. Two surprises: the memory backend already outruns the UI, and the real risks are correctness, not capability.

oll-memory already does more than the sidecar exposes

PR #80 (unmerged) ships capabilities the front end never calls — so several "premium" items are a wiring job, not a new service to build:

Already in the backendWhat it unlocks for oll-write
base64 PDF / binary ingestPDF ingest is frontend + BFF wiring only — the parse/chunk path exists.
hybrid dense + keyword (RRF) retrievalPrecision retrieval for both the proactive lane and chat — no re-implementation.
ACL-tag scopingThe per-user boundary is enforceable in the service, not just the BFF.
DELETE-by-document_idA delete affordance + the upsert story for edited sources.
schema-locked /api/extractStructured extraction powers gap-detection, style-profile, and onboarding summaries.
The read: PDF ingest, gap-detection and style-profile are mostly wiring, not new services. The scarce work is making retrieval trustworthy — which is the next block.

The real gaps — six risk cards

Ranked by how badly each hurts a writing product, where documents change constantly and a citation is a trust promise.
RISK 1 · correctness · highest

Stale chunks on edit

document_id is content-hash-derived — edit a source and it hashes differently, so old chunks orphan and linger. In a tool where docs change every save, retrieval slowly fills with stale, contradictory versions. The #1 correctness gap.

RISK 2 · correctness

No relevance floor → hallucinated citations

query always returns top_k and the prompt pushes the model to answer. A retrieval miss therefore becomes a plausible cited claim with a real-looking source chip. A green citation that points at nothing is worse than no answer.

RISK 3 · reliability

Memory chat has no retry loop

The editor ops carry a TRANSIENT retry/backoff; memory chat does not. Under Groq 429s, chat fails while the editor recovers — an uneven, demo-breaking reliability seam.

RISK 4 · monetization

Prod generation is a stub for chat

Chat calls oll-model directly with privacy:"any". So the 70b / Claude dial and metering never reach chat — the exact levers a paid plan sells. The dial is wired for editor ops, not answers.

RISK 5 · security · unverified

Per-user scoping is sound but unproven

The BFF pins collection = mem:user:{id} server-side (good design) — but there's no executable cross-tenant test, only a comment. A silent regression could re-open the IDOR and no build would fail.

RISK 6 · UX gap

Drag-to-cite isn't wired

ChunkCards are read-only — the "drag a memory into the draft as a citation" gesture (previously mis-reported as done) doesn't exist yet. The signature trust gesture is still a plan.

Product improvements, prioritized

Lean on the existing three-pane GUI — nothing here rebuilds the editor. Each row names the files that change so the estimate is honest.

Tier A — cheap wins that harden demo → product (days)

#ImprovementWhat it fixesWhere it changes
A1Stable caller-supplied document_id + upsert + delete affordanceKills RISK 1 — edits replace, not duplicate. Corpus stays clean.oll-memory ingest/upsert; BFF ingest route; left-pane delete button.
A2Relevance floor + honest abstention (3 claim states: grounded / no-source / contradicted)Kills RISK 2 — a miss says "I don't have this," never invents a citation.oll-memory service floor; BFF chat compose; chat answer renderer.
A3Retry / backoff on memory chat (lift the editor's TRANSIENT loop)Kills RISK 3 — chat survives Groq 429s like the editor does.BFF handleChat; shared retry util.
A4PDF ingest — wiring onlyBiggest-corpus formats accepted; backend already parses base64 PDF.Frontend upload accept + BFF ingest passthrough. No backend change.
A5First-corpus "what I found" onboarding (auto source summary + 3 suggested questions via /api/extract)Never show an empty sidecar — NotebookLM's highest-leverage move.BFF onboarding route over /api/extract; left-pane empty-state.

Tier B — the v2 set as concrete builds (1–2 weeks)

#BuildThe discipline that makes it trustworthyWhere it changes
B6Inline citation Plate nodeMirror the repo's mention-kit; validate every citation maps to a retrieved chunk before render — no orphan chips.Plate node/plugin; BFF citation validation.
B7Draft-from-bulletsOutline → per-section retrieval constrained to that section's chunks → generate. Grounding is scoped, not global.new write-service /api/write/draft-grounded; editor outline UI.
B8Gap-chipsDecompose draft into claims via /api/extract, classify entailed / neutral / contradicted, calibrate by importance × gap to avoid alarm fatigue. Model on the repo's margin-layer.BFF gap route; margin-layer render.
B9Voice / style profile ("learn my voice")Extract a style spec from the corpus, inject into every op. A reusable primitive humaniz can share.write-service style-extract; op prompt assembly.
B10Streamingwrite-service already has SSE rewrite — extend to chat + long ops so answers arrive token-by-token.write-service SSE; BFF stream passthrough; chat renderer.
B1170b-for-chat dialRoute chat through write-service so the Groq ↔ Claude / 70b toggle finally reaches answers, not just edits.write-service /grounded-chat; BFF handleChat.
B12Folder-sync / incremental ingestLower priority — retention plumbing, not a wedge. Powers the Rung-4 second-brain expansion.a sync worker + incremental upsert.

Service-quality essentials — do alongside

Retrieval precision

Shallow beats deep. Answer quality peaks at ~2 strong sources; deeper retrieval adds citation noise, not accuracy. Tune for precision, cap the source count.

Citations everywhere

Click-to-quote on every claim, and abstention as a first-class state — "no source for this" is a valid, visible answer, not a failure to hide.

Export-to-Markdown-with-citations

Retention and the answer to "is my corpus trapped?" — the objection NotebookLM, Notion and Craft all leave open. Own it: your notes and your citations walk out as plain .md.

Copy vs avoid

COPYNotebookLM's auto source-guide + click-to-passage + ground-only prompt; Sudowrite's typed context cards + generate-then-refine chain + isolated style field; Notion's permission-aware retrieval (we already have it); Craft's chrome-kill focus + clean export.

AVOID — silent index failures; credit/metering anxiety that punishes feeding the corpus (meter generously — feeding is the value); stale-content contamination (add recency weighting); and treating a green citation as correctness — it's checkable, not correct. A citation says "here's the source," never "this is true."

Supporting oll-am platform changes

oll-write's build-out is also a platform build-out: every hardening lands a primitive other products reuse. Three tracks.

1 · oll-memory hardening

2 · Deployment

Merge PR #80 through green CI → stand up oll-memory as its own Coolify app (Base Directory /services/oll-memory, Watch Paths, $PORT, X-Service-Token, alias oll-memory) + a private Neon oll_memory DB (pgvector, per ADR-008) + Ollama running nomic-embed-text (EMBED_PROVIDER=ollama, EMBED_DIM=768). The local hashed provider stays the CI / dev default so the pipeline needs no model download.

3 · Route generation through write-service in prod

Add POST /api/write/grounded-chat (and /draft-grounded) to oll-write's write-service. It verifies the Core JWT + plan, calls oll-memory /query, assembles the grounded prompt, generates via oll-model with the entitlement-appropriate model (Groq-8b free / 70b / Claude pro), applies metering + retry, and returns {answer, citations}. Then the BFF handleChat calls write-service instead of holding the oll-model token.

Why this is the keystone: it moves entitlement + the model dial + metering + retry to the one server that already owns them for editor ops. Chat stops being a special-cased stub and becomes just another metered, gated, retried op. RISKs 3 and 4 close together.

Reusable primitives — what each hardening banks

PrimitiveWhere it livesWhat else it unlocks
Context-assemblywrite-service grounded-chatspecview docs Q&A · a support bot over any product's help corpus.
Multi-tenant memoryoll-memory + the scoping test"chat with your docs" for any oll.am product, drop-in.
Citation / provenanceBFF validation + Plate nodeauditable, source-linked answers everywhere.
Structured extraction/api/extractgap-chips · style-profile · braindump→spec · a standalone data-extraction product.
Style / voice profilewrite-service style-extracthumaniz "sound like me" — the honest personalization lever.
Folder / incremental ingestionsync worker (Rung 4)a "connect your Drive / Obsidian" second-brain product on the same stack.

Sequenced build-out roadmap

Five rungs. The chargeable rung (2) lands before the exotic set (3), and the platform product (4) is last — each rung ships something usable.
0

Make it real in prod

Merge #80 → deploy (Coolify + Neon oll_memory + Ollama nomic) → route memory chat through write-service /grounded-chat (entitlement + model dial + metering + retry).

Ship: the sidecar on live services with the Groq ↔ Claude / 70b dial + rate-limit resilience.
1

Trustworthy & correct

Stable document_id + upsert + delete · relevance floor + honest abstention · inline citation node with pre-render validation · executable cross-tenant test.

Ship: edits don't poison retrieval, no hallucinated citations, click-to-passage trust.
2

Onboarding & the chargeable hook

First-corpus "what I found" · PDF ingest wiring · export-with-citations · gate the 70b / Claude dial + grounded chat behind the CHF 9 Pro plan (usage-meter-paywall).

Ship: the oll-write dollar.
3

Compounding v2 (each also a primitive)

Voice / style profile · draft-from-bullets · gap-chips · streaming.

Ship: the differentiated writing studio + 3 reusable primitives banked.
4

Power-user / second-brain expansion

Folder-sync + package multi-tenant-memory + folder-ingestion so a new "chat with your Drive" product is a thin frontend on the same stack.

Ship: a second product born from oll-write's own plumbing.

Part II — Go-To-Market (who + where)

Segment priority — pain × reachability

Ranked by where the pain is sharpest and the room is reachable. Each carries its own wedge; the anti-patterns (anti-AI rooms, confidentiality traps) are named so we don't walk into them.
SegmentWhy hereThe wedge
1Researchers / academics
PhDs + PKM / Obsidian power users
Best fit. The private "chat over my own notes / PDFs" conversation already happens around Obsidian Smart Connections — we're the missing writing half.The editor that reads your own library while you write it up.
2Authors / ghostwritersHighest emotional pull post-Sudowrite / NaNoWriMo privacy backlash — but the most anti-AI / anti-promo rooms. Lead privacy-first, never "AI writing."Your manuscript never leaves your computer.
3Solo lawyers + grant writersNarrower, highest willingness-to-pay, cleanest confidentiality story — on-device is a professional-responsibility argument.A drafting aid you stay responsible for; nothing uploaded.
4Consultants / agenciesGood pain (re-deriving decks from a scattered Drive), noisier — but strong paid-Slack targets to reach directly.Re-derive the proposal from everything you've already written.
The one sentence to lead with everywhere: "a real editor where your private corpus is live context — indexing runs on-device, and you pay once instead of renting."

Where each segment gathers

Named rooms, not "post on social." The rule for the top two: complement, never attack the tool they already love (Smart Connections; local-Ollama rigs).
SegmentNamed communities
Academics / PKMr/PhD · r/GradSchool · r/AskAcademia · r/ObsidianMD · r/Zotero · r/AcademicWriting · Obsidian Forum "Share & showcase" + Discord (highest-fit) · Zotero Forums · Ness Labs · academic Bluesky starter packs · scholar.social / fediscience Mastodon · newsletters PKM Weekly · Ness Labs · The Effortless Academic. Earn into Obsidian Smart Connections users — complement, don't attack.
Authors / ghostwritersr/selfpublish (best) · r/worldbuilding · r/fantasywriters · r/pubtips · r/KDP · Literature & Latte / Scrivener forum · KBoards · Sudowrite & NovelCrafter Discords (the BYOK / local-Ollama crowd) · Facebook 20BooksTo50K · Association of Ghostwriters · reviewers ALLi · Indie Author Magazine · Written Word Media.
Grant writers + lawyersr/grantwriting · r/nonprofit · GPA / GrantZone · Learn Grant Writing · Freelance Grant Writers' Network (FB) · r/Lawyertalk · r/LawFirm · ABA GPSolo + SoloSez listserv · Lawyerist LAB · Legal.io Slack · LawyerSmack.
Consultants / agenciesr/consulting · r/managementconsulting · r/copywriting · paid Slacks Fractionals United (best fit) · The Copywriter Club · Superpath · Online Geniuses · Umbrex · IMC USA.

6 reachable personas

Real people, findable this week. Each hook leads with private / on-device + a real editor — never "AI writing."
Academic · beachhead

Priya — 3rd-year PhD

Pain
Lit review from a 150-PDF Zotero library; won't paste unpublished work into a cloud tool.
oll-write value
Ingest the whole library, write the review with related passages surfaced as she types, every claim cited to a PDF.
Where
r/PhD · r/Zotero · Obsidian Discord.

"Draft your lit review with your library as live context — the PDFs are embedded on your machine, nothing's uploaded."

PKM power-user

Marcus — postdoc, Obsidian

Pain
Has a local-RAG stack (Smart Connections) but no real writing surface on top of it.
oll-write value
The missing writing half — a proper editor that reads the same private vault.
Where
r/ObsidianMD · Obsidian Forum · PKM Weekly.

"You already retrieve locally — here's the editor that writes from it. Complements your vault, doesn't replace it."

Author · fiction

Maya — series author

Pain
Continuity anxiety across a long series; won't upload the manuscript after the Sudowrite scare.
oll-write value
Ingest the whole series, ask "did I change the captain's eye colour?", write forward with canon on hand.
Where
r/fantasywriters · NovelCrafter Discord · 20BooksTo50K.

"A continuity check that never uploads your manuscript — the index lives on your disk."

Ghostwriter · NDA

Daniel — book ghostwriter

Pain
Hours of NDA'd client interview transcripts; cloud AI is contractually off-limits.
oll-write value
Ground each chapter in the transcripts, cite the exact quote, keep it all local.
Where
Association of Ghostwriters · r/selfpublish.

"Write the chapter from the interviews — cited to the transcript, and the transcript never leaves your laptop."

Grant writer

Maria — freelance grants

Pain
5–8 clients; reuses winning-proposal language, some embargoed; can't pool it in a shared cloud tool.
oll-write value
A private corpus of past wins; draft new proposals that reuse the language that landed.
Where
r/grantwriting · Freelance Grant Writers' Network · Learn Grant Writing.

"Reuse the language that won — from your own archive, kept private per client."

Solo attorney · high WTP

David — transactional lawyer

Pain
A precedent library unsearchable by meaning; ethics rule out upload / training.
oll-write value
Semantic search + drafting over his own precedents, on-device, with citations he can verify.
Where
SoloSez listserv · ABA GPSolo · r/LawFirm.

"Draft from your own precedent library, searchable by meaning — on-device, you stay responsible for every line."

Launch / submission targets

This-week order. Social proof compounds — so the big-swing surfaces (Product Hunt) come last, after the lasting boards and directories have banked evidence.
  1. Show HN — an honest, plain title (no marketing copy). The first real test with a claim-inspecting crowd.
  2. Free lasting boards — Uneed · MicroLaunch · Fazier · Peerlist.
  3. Pay-once directories — NoSubscription.org · Buy Once Software · Pay Once Alternatives · PayOnceApps · the recurring HN "buy once" threads. This is our home turf: "pay once" is the positioning.
  4. Evergreen SEO — SaaSHub · Launching Next · BetaList.
  5. AI directories — There's An AI For That · Toolify · Futurepedia.
  6. GitHub PRs — awesome-pkm · awesome-ai-tools.
  7. Authentic community posts — r/SideProject · r/ObsidianMD · Indie Hackers · #buildinpublic.
  8. Newsletter pitches — Ben's Bites · Recomendo / Cool Tools · TLDR AI.
  9. Product Hunt — last, after banking social proof from the steps above.

8 demo use cases

Script-ready: ingest → task → what surfaces → the punchline. Every one ends on the same three words: nothing uploaded / on-device / cited.

PhD lit review

Ingest a 150-PDF paper library
Task draft the "prior work" section
Surfaces related findings as you type, each cited to a PDF
Nothing uploaded · embedded on-device · every claim cited.

Ghostwriter chapter

Ingest interview transcripts
Task write chapter 3 in the client's voice
Surfaces the exact quotes that ground each beat
Transcripts stay local · grounded · quote-cited.

Series continuity check

Ingest the whole series manuscript
Task "did the captain's eye colour change?"
Surfaces the two passages that disagree
Manuscript never leaves the disk · cited to the page.

Grant reuse

Ingest past winning proposals
Task draft a new narrative section
Surfaces the winning language to reuse
Per-client private · grounded · source-linked.

Lawyer precedent draft

Ingest a precedent library
Task draft an indemnity clause
Surfaces the closest prior clauses by meaning
On-device · cited · lawyer stays responsible.

Consultant proposal

Ingest old decks + notes
Task re-derive a proposal
Surfaces the reusable framing from past work
Your Drive stays yours · grounded · cited.

PKM writing surface

Ingest an Obsidian vault export
Task write an essay from your notes
Surfaces related notes proactively as you write
Same private vault · the missing editor · cited.

Agency brand voice

Ingest a brand's published content
Task onboard the voice, draft new copy
Surfaces a style profile + on-brand phrasing
Client corpus private · voice-matched · cited.

Honest outreach angles

Per-segment, participate-first, disclosure-always. The caution below is the guardrail for the whole campaign.

Academics / PKM

Answer real "chat with my PDFs privately" threads; disclose authorship; complement Smart Connections; show the local-embeddings architecture — this crowd inspects claims.

Authors

Lead "your manuscript never leaves your computer", never "AI writing." Ride the Sudowrite / NaNoWriMo distrust with a factual local-embeddings post.

Grant writers

Share a real "reuse winning language" workflow — a genuinely useful post, product mentioned in passing.

Lawyers

Professional-responsibility framing; never imply any bypass of review or duty — a drafting aid the lawyer stays responsible for.

Consultants

Participate-first in paid Slacks; offer a lifetime / free tier via the deals channel where those rooms expect it.

The caution. On writer / academic rooms and HN, lead with "private + real editor + you own it" and a plain, honest title — never "AI writing," never marketing copy. The ethics line holds across every segment: oll-write is an honest writing tool the author stays responsible for, not a way to dodge review, disclosure, or duty.

oll-write — Build-Out & Go-To-Market · propose-only · 2026-07-05. Grounded in the feature docs (what ships today), the product thesis (the empty market cell), and the integration plan (how memory welds in). Feeds Backlog + Strategy.

Honest sequencing: the humaniz.me first franc stays P0; oll-write's own chargeable rung (Rung 2) precedes the exotic features (Rungs 3–4). A real editor where your private corpus is live context — indexing on-device, pay once.