OpenNomosdocs
The growth loop

Memory vs opportunity

People and posts go in opportunities; conclusions, decisions, drafts and rules go in memory.

Both are project-scoped and both persist across sessions, so it is easy to put the same thing in both and then maintain it twice. Use this split.

Put it in…When it is…Examples
Opportunity (track, log_action)A specific person, post, community or partner you may act on, with a state that changes.A Reddit thread to reply to. An X account to DM. A newsletter owner you pitched.
Memory (memory_add)A conclusion, decision, rule, insight or draft: text that stays true without a stage or a due date."r/SaaS removes self-promo; reply with help first." "We only talk to people with under 5k followers." A draft reply you have not sent.
Experiment (track)A bounded attempt on one channel with a metric and a deadline."Helpful replies on Reddit for 14 days; stop if fewer than 2 people agree to talk."

Rules of thumb

  • A list of people is not a memory. A 30-person shortlist as one memory entry hits the 4096-byte limit and cannot be filtered or followed up. Make 30 opportunities, put the shared criteria in one memory.
  • Memory references, opportunities hold. If a memory needs to point at a person, quote the opportunity id or URL rather than copying the details. There is no foreign key; this is a convention.
  • When the state changes, it is an opportunity. If you would write "contacted on Tuesday, follow up Friday", that is log_action, not a note.
  • When it is a lesson, it is memory. After an experiment, save what you learned as a memory (for example kind: "decision") and record the experiment decision with track.
  • Drafts live in memory (there is no draft field on an opportunity). Tag them, for example ["draft", "reddit"], and forget them once sent.

What opportunities can hold today

FieldNotes
title, urlA title or a URL is enough. The URL is normalised (Reddit, X and Xiaohongshu post ids; tracking parameters removed) so the same post is never tracked twice.
kindFree text, default other.
summaryUp to 500 bytes of free text. Anything numeric (followers, engagement, tier) has no structured field yet: put it in summary or tags.
tagsUp to 20, each up to 60 characters.
priority−1, 0 or 1.
stage, next_followupSee Concepts and log_action defaults.
experiment_idOne experiment per opportunity.
sourceFree text, for example the tool that found it.

Known gaps

There is no batch stage change (each opportunity is moved by its own track item or log_action; track takes up to 20 items per call), no structured metrics or evidence field, no filter by tag or platform other than paging get_briefing with focus=pipeline, and one experiment per opportunity.

On this page