RMFU Desk

Atlas · signed-in desk

Every module is a route, not a buried menu

Below is how we talk about the desk internally: what problem each surface solves, what “done” looks like, and how it plugs into the operating rhythm. Numbers are from this build: 75,716 lines across 335 Python files — depth you can cite.

Brief & pulse

Job. Shared morning read — what changed overnight, what deserves calories today.

Done. Everyone hits the same ordered list before models and headline parsers spin up.

Library

Canonical briefs, frameworks, concepts — searchable under stress, export as evidence after decisions.

Drills

Short spaced reps tied to concepts — vocabulary that survives committees and gap opens.

Risk & scenarios

Stress paths when the thesis has real breakpoints — refi walls, policy pivots, concentration.

Not prophecy: traceable assumptions Committee B can replay.

Macro

Policy and cross-region context with the same chrome as the rest of the shell — shared language across PM, risk, treasury.

Companies & war room

Entity stitching when you are booked, not browsing — narrative + quant hooks in one surface.

Capability lens

Where depth usually lands first in serious deployments.

Read · brief + pulse Remember · library + drills Stress · risk + macro Size · tools + scenarios Ship · exports + trace

Three-minute mental model

RMFU is one surface for reading (brief + pulse), remembering (library + drills), and stress-testing (risk, macro, scenarios). Sign in to reach your tenant desk; this public site is the story, not the datastore.

Open the full guided tour → (recommended instead of this short blurb).

Use Open desk when you already have access — you will authenticate at the gate like any other protected route.

Sign in

Live calculators vs. marketing

After sign-in, /tools hosts shareable one-page calculators (NPV, payback, Kelly, and more). This public tools hub explains what exists for crawlers and prospects.

Open desk

Why drills matter

Bookmarks decay. RMFU uses short, spaced repetitions so vocabulary and frameworks stay retrievable when you are in front of a committee or a live tape — not only when you are reading alone.

Nudge inputs

Edit fields, then Apply & refresh (or use on the card). Same payload as the public demo API.

Last response JSON

app/engines/tools/service.py

Leading lines of the real module (marketing excerpt).

"""Operator pocket tools — small pure functions used by /tools.

Each function returns a dict with the inputs echoed back, the result, and a
short interpretation sentence (in casual exec tone).
"""
from __future__ import annotations

from dataclasses import dataclass
import math
from typing import Iterable


# -------- IRR / NPV ---------------------------------------------------------

def npv(rate: float, cashflows: list[float]) -> float:
    return sum(cf / ((1 + rate) ** t) for t, cf in enumerate(cashflows))


def npv_rate_sensitivity(rate: float, cashflows: list[float], bump: float = 0.01) -> dict:
    """±bump hurdle NPV and approximate $ / 1% change in NPV (last period scale)."""
    base = npv(rate, cashflows)
    up = npv(rate + bump, cashflows)