The office

One vault that remembers

cupel keeps all of its state in one Obsidian-compatible vault, the office, not in the current project. Every note is plain markdown with a small YAML frontmatter block, [[wikilinks]] for provenance, and #tags for classification. Find it with cupel where; it is ~/cupel unless CUPEL_HOME is set.

001The layout

A folder you can read

The office is a flat, legible folder you can read with your eyes or open in Obsidian for the graph view. Three singleton notes describe you; five folders hold the work.

~/cupel/ PROFILE.md brokers, currency, constraints, how you work EDGES.md your circle of competence: what you see first MANDATE.md goals, horizon, risk, position-size and sell rules sources/ people and sources you trust, each with a last-checked date watchlist/ ideas you are tracking, with provenance themes/ edge trends mapped to the public names that express them positions/ what you hold (core + satellite), each with a role and size; cash is the remainder theses/ full write-ups, one per idea journal/ a dated decision log: every buy, sell, and pass

Keep frontmatter minimal and put the thinking in the body. PROFILE.md, EDGES.md, and MANDATE.md are singletons cupel always reads; PROFILE.md is free-form (brokers, currency, constraints, preferences), and MANDATE.md frontmatter holds max-position-pct, satellite-target-pct, and review-stale-days, which the linter honors. Keep the whole vault under git: the decision journal’s value compounds as its history grows.

002Note types

Five shapes, each with required fields

cupel doctor infers a note’s type from its directory and enforces a small set of required frontmatter fields. The rest is prose.

sources/<slug>.md

A person or source you trust. What they are good for, their track record, how to read them.

---
name: Dave Chen (semiconductors)
domain: semis, foundries
trust: former fab engineer; calls supply gluts early
bias: structurally bullish on hardware
url: https://example.com/feed        # optional: where to check
last-checked: 2026-05-20
---

watchlist/<TICKER>.md

An idea you are tracking. Every entry traces to a seed. The optional fields rank it on merit; correlation is shown as information, not a demerit.

---
ticker: NVDA
company: NVIDIA
status: watching          # watching | researching | passed | promoted
provenance: "[[Dave Chen]]"   # a [[source]], [[EDGES]], or a hunch
tier: B                   # optional: A | B | C | PASS — merit ranking
conviction: medium        # optional: how strongly you hold the view
edge: in-edge             # optional: in-edge | anti-edge
correlation: high         # optional: overlap with what you hold — info, not a demerit
ai-correlation: high      # optional: exposure to the AI build-out — info
url: https://nvidia.com   # optional: go straight to the company
horizon: 3-5y             # optional: the holding horizon you have in mind
entry-trigger: pullback under 100  # optional: what would make you act
last-reviewed: 2026-05-20
---
#fast-grower
Why it is on the radar, what would have to be true, the open questions.
Rank on merit; correlation is information, not a demerit. cupel board reads tier to rank the whole watchlist at a glance, and a dotted ticker files with the dot as a hyphen: SOP.PA becomes SOP-PA.md.

theses/<TICKER>-thesis.md

The full write-up: the story in two minutes, the load-bearing claim, valuation and what is priced in, a Scenarios & timeframe block (bear / base / bull with rough magnitude and horizon), risks, and falsifiers.

---
ticker: NVDA
company: NVIDIA
figures-as-of: 2026-05-20   # date of the figures the scenarios project from; doctor flags stale ones
last-reviewed: 2026-05-20
---
The story in two minutes. The load-bearing claim. Valuation and what is
priced in. Scenarios & timeframe: bear / base / bull, rough upside and
horizon, projected from real, dated figures. Risks. Falsifiers.
Links: [[Dave Chen]], [[EDGES]].

positions/<TICKER>.md

Everything you hold — diversified core ETFs and edge picks — each tagged with a role. size-pct is a percent of total capital including cash, so cash is the remainder. doctor flags a satellite over your cap; a core holding is exempt.

---
ticker: NVDA
company: NVIDIA
role: satellite         # core | satellite — core is exempt from the cap
size-pct: 6             # % of total capital (incl. cash); core + satellite + cash ≈ 100
cost-basis: 110.40
currency: USD           # currency of cost-basis / last-price
opened: 2025-02-11
broker: DeGiro          # optional: which account holds it (you may use several)
source: manual          # manual | broker
last-reviewed: 2026-05-20
sell-triggers:
  - thesis breaks (loses pricing power)
  - position exceeds mandate cap
---
Held since 2025. Thesis: [[NVDA-thesis]].
cupel portfolio reads last-price and price-as-of for the per-holding gain % — recorded prices, never live quotes. doctor flags a stale price-as-of.

journal/<YYYY-MM-DD>-<slug>.md

A decision. The review-on date is when pulse resurfaces it.

---
date: 2026-05-20
kind: buy               # buy | sell | trim | add | pass | review
ticker: NVDA
review-on: 2026-08-20   # when pulse should resurface this
---
What was decided and why, in plain words. Falsifiers: what would prove
this wrong. Links: [[NVDA-thesis]].
003Provenance

No orphan ideas

Provenance is mandatory on watchlist entries: every idea traces to a [[source]], an edge, or a stated hunch. Wikilinks build the graph, and cupel doctor flags dangling ones.

  • A thesis links its [[source]] and [[EDGES]].
  • A position links its [[thesis]].
  • A journal entry links the [[thesis]] or [[position]] it concerns.

Links match by slug, so [[Pragmatic Infra Letter]] resolves to pragmatic-infra-letter.md (case, spaces, and hyphens are ignored). For a note whose natural title differs from its filename, add an aliases: field with the display name so the link resolves in Obsidian too.

---
name: Pragmatic Infra Letter
aliases: [Pragmatic Infra Letter]
last-checked: 2026-05-20
---
Tags classify alongside links: Lynch’s six categories (#fast-grower, #cyclical, and the rest) plus status (#held, #passed). Dates are always YYYY-MM-DD; the linter measures staleness from last-reviewed, last-checked, and last-synced.
004The journal

Judge the reasoning, not the price

Whenever a conversation reaches a decision, a buy, sell, trim, or a deliberate pass, cupel writes a dated note to journal/ as a byproduct: the date, what was decided, the thesis in a sentence, the provenance, and the falsifiers, what would prove this wrong.

On review

When pulse or brief resurfaces an entry whose review is due, cupel judges reasoning quality first. A sound decision can have a bad outcome and a poor decision a good one, so separate the decision from the result. Profit and loss is secondary; if you want it, cupel asks for the current price rather than guessing. It never fabricates a number.

005The linter

cupel doctor keeps it honest

The LLM does the judgment; the linter guards the filing cabinet. After any write, cupel runs doctor and fixes what it flags:

  • Missing or malformed required frontmatter fields.
  • Dangling [[wikilinks]] that point at no note.
  • Mandate breaches: a satellite over your max-position-pct, or satellite total over your satellite-target-pct (a core holding is exempt).
  • A large idle-cash remainder, or sizes summing past 100%.
  • Stale reviews, measured against review-stale-days, and decisions whose review-on date has arrived.
  • Stale thesis figures, where figures-as-of has aged out, so scenarios never project from numbers you can no longer trust.
$ cupel doctor
# reports time since last pulse, plus any inconsistencies

cupel portfolio reads your positions deterministically: core vs. satellite, each holding’s size, the satellite total against your target, and the cash remainder. It also shows, per holding, the gain % from recorded cost-basis to last-price and a size-weighted price return — recorded prices, never live quotes — and, once cupel capital sets your total investable capital, value and gain in money. The arithmetic is the CLI’s; what to do about a concentrated, over-cash, or oversized book is the model’s call.

$ cupel portfolio
# core VWCE 41% · satellite AMD 12% (over 10% cap) · cash 47%

Because the linter is deterministic and the office is plain files, the slow-burning value, the dated decision journal, the provenance graph, the staleness checks, stays readable and yours, with or without cupel installed.