Lodestar works standing mandates on your households and files proposals for an advisor to decide. These are the components that put that in your app: the proposal inbox with approve and reject, the Anchor-verified mark on every figure, the ledger of approved value, and mandate setup. Below, each one runs on the fictional book from a week of Lodestar.
The components hold no key and decide nothing. Approve, reject and create hand the decision to your app; your server makes the API call with its own approver or developer key, so who may approve stays your decision, enforced by Worthune’s roles. Every frame takes your brand colors, checked for WCAG AA contrast when you set them.
Proposal inbox
What is waiting, worth how much, soonest deadline first. Each card shows why now, the steps, the alternatives considered and the caveats, with approve and reject. Try them: here they only show the call your server would make.
Proposals
2 proposals worth $102,614 waiting for a decision
Pre-retiree, traditional-heavy
Fill a tax bracket with Roth conversions: Fill the 12% bracket each year
✓ Anchor-verified
Every figure here comes from one decision record computed by Worthune's published engines. Anyone can recompute its SHA-256, below, to show the figures were not changed.
vs. the current plan, lifetime federal and state tax through 2055, nominal dollars (not discounted), under profile demo-cma@1.0.0
Whole book
Move to the new assumption profile
A new assumption profile was published · Expires in 27 days if no one decides
Assumption profile demo-cma 1.1.0 was published (the book runs on 1.0.0). Moving to it changes the recommendations for 1 of 5 households; $127,726 of projected value moves. Nothing moves until this is approved.
<!-- one household's proposals, with a token from POST /api/v1/embed-tokens -->
<div data-worthune-embed="lodestar-inbox" data-token="wet_…"></div>
<script async src="https://worthune.com/embed.js"></script>
<script>
document.addEventListener("worthune:proposal-decision", async (e) => {
// e.detail = { proposalId, decision: "approve" | "reject", reason?, note? }
await fetch("/your-api/lodestar/decide", { method: "POST", body: JSON.stringify(e.detail) });
// your server: POST https://worthune.com/api/v1/proposals/{id}/approve (or /reject) with an approver key
});
</script>
Proposal card, Anchor-verified
One proposal on its own, here in the dark theme. Open the Anchor-verified mark: every figure on the card comes from one stored decision record of Worthune's published engines, identified by its SHA-256, and signed where your deployment signs records.
Pre-retiree, traditional-heavy
Fill a tax bracket with Roth conversions: Fill the 12% bracket each year
✓ Anchor-verified
Every figure here comes from one decision record computed by Worthune's published engines. Anyone can recompute its SHA-256, below, to show the figures were not changed.
What advisors approved, and the projected value of it, each line tied to its decision record. Projected, in nominal dollars under the assumptions each decision names; never presented as realized.
Approved moves
$898,326 of projected value approved across 4 decisions
Approved
Household
Move
Projected value
Jul 4, 2026
Retired couple, unequal earnings records
Change the withdrawal order
$33,143
✓ Anchor-verified
Every figure here comes from one decision record computed by Worthune's published engines. Anyone can recompute its SHA-256, below, to show the figures were not changed.
Every figure here comes from one decision record computed by Worthune's published engines. Anyone can recompute its SHA-256, below, to show the figures were not changed.
Every figure here comes from one decision record computed by Worthune's published engines. Anyone can recompute its SHA-256, below, to show the figures were not changed.
Every figure here comes from one decision record computed by Worthune's published engines. Anyone can recompute its SHA-256, below, to show the figures were not changed.
A mandate's standing instructions as an advisor or a client reads them: what it watches, when it proposes, how often it looks, and that nothing happens without approval.
Mandate · active
Tax Optimization · The conversion window
Minimize lifetime tax.
Watches: Fill a tax bracket with Roth conversions.
Proposes a move only when it is worth at least $1,000, at most 3 at a time.
After a decision, waits 30 days before raising the same strategy again.
Reviews the household quarterly, and whenever something changes.
Deterministic: every proposal that clears the checks is filed.
Nothing happens until an approver approves; Lodestar never moves money.
// From GET /api/v1/mandates/{id}, rendered by your app, or shown inside the inbox embed.
Mandate setup
A form that builds a valid mandate, checked as you type by the same validator the API runs. Open “The request this builds” to see exactly what your server would send.
<div data-worthune-embed="lodestar-mandate-setup" data-token="wet_…"></div>
<script>
document.addEventListener("worthune:mandate-spec", (e) => {
// e.detail.body is a POST /api/v1/mandates body; send it from your server with a developer key
});
</script>
Putting it in your app
Set your brand colors and allowed domains once: PUT /api/v1/tenant-config (Growth).
For each advisor view, mint a short-lived token for the household: POST /api/v1/embed-tokens with widget: "lodestar-inbox".
Drop in the element, listen for the decision event, and call the API from your server with the advisor’s approver key.
Without a token every widget shows this fictional book, labeled as such. See the embed docs and your console.