[MONSA]

Changelog

What has shipped, and when.

Monsa is built by one person. That is worth being able to check rather than take on trust, so every release lands here with a date on it.

Invoices are delivered again, and one payment means one document

3 changes

Fixed

  • Invoices issued from your account are now emailed out. Delivery had been calling a Fakturoid event that no longer exists in API v3, so every invoice was created correctly and then silently never sent. The new call carries no attributes, so subject, body and sender all come from your Fakturoid account settings, where the rest of your billing text already lives.
  • One Stripe payment now produces exactly one numbered document. Stripe sends both `invoice.paid` and `invoice.payment_succeeded` and the route listens to both on purpose, so two deliveries could run side by side and each issue its own invoice - that is how a single payment ended up as 191-2026-0001 and 0002. The second delivery now stops, unless it is the same event arriving again, which is the repeat the route relies on to finish an invoice it had already started.

Worth knowing

  • If an attempt is killed between claiming a payment and issuing the document, that payment is left without an invoice and only a query will surface it. Paths that raise an error still send you an alert email; an outright killed process does not.

Invoices get delivered, one per payment, and a dashboard that explains itself

8 changes

Billing

  • Your invoices are now emailed to the customer. Every invoice this account issued was issued correctly and then never sent, because the delivery call used an event Fakturoid retired in API v3. Subject, body and sender come from your account settings.
  • One payment now produces one invoice. Stripe sends two events for a paid invoice and both were racing, which is how a single payment ended up with two numbered documents. The second delivery now stops, while a repeat of the same event can still finish an invoice that was left half-created.
  • Invoices are issued into the number series you configure, and if marking a payment as paid or sending it fails, you get an email at SUPPORT_EMAIL instead of only a line in the event log. A rejected series ID falls back to the accounting default and records what Fakturoid refused.

Getting started

  • The strategy catalog now sits behind the button that offers it, so the first screen is a title and two cards instead of eleven tiles. "Skip - start blank" is its own line under the decision, not the eleventh tile you had to open the other ten to find.
  • An empty Positions tab now asks for a company by name and returns this portfolio's verdict on it as you type. Ten large S&P 500 companies are there as places to start, with copy saying they are not recommendations; the heading follows your watched tickers rather than your positions, the nightly rescore time is shown in your browser's timezone, and the Interactive Brokers import is linked from here as well as from Settings. A portfolio with no rules gets a quiet line for picking a strategy.
  • After you add your first ticker, four short coach marks point at the parts of the dashboard that do not explain themselves: Positions versus Watching, what the fit score is measured against, the Why column, and the Matrix. Each stop has a visible way out, it runs once on its own, and "Show me around" in the header replays it.

Learn

  • The Learn panel now leads with how far you have got and where to go next, and the question is one line you can open. The line carries the question text. Once opened it stays open as you move between pages, though not across a reload.
  • A lesson counts as done in one place only: when every question in it has been answered on the server. The panel, the nav badge, the hub and the lesson list all read that, so no two screens can disagree about the same lesson. Answering questions from the dashboard completes the lesson even if you did not read the text.

Score a company from an empty portfolio, a four-stop dashboard tour, and one definition of a finished lesson

19 changes

Starting from an empty portfolio

  • The empty Positions tab now searches for a company on the page itself and returns this portfolio's verdict the moment you type the name. Adding shares is a separate second step, after you start watching.
  • Ten large S&P 500 companies sit under the search box as a place to start. Clicking one only fills the search field - the verdict still comes from your own rules, and the copy beside them says plainly that this is not a recommendation.
  • The heading follows the tickers you watch, not only the positions you hold, so three scored candidates no longer sit under "Nothing to score yet".
  • The nightly rescore is stated in your browser's time, not in UTC and not in one fixed city.
  • Interactive Brokers import is linked from that screen as well as from Settings, and a portfolio with no rules gets a quiet line for picking a strategy.

Choosing a strategy

  • The ten strategy templates now sit behind the button that offers them. The collapsed screen has the same shape as the first-run screen before it: a title, two cards, centred.
  • The decision stays in a narrow column in both states, so expanding does not change the width of the cards under your cursor.
  • "Skip - start blank" is a line under the decision instead of an eleventh tile, so you can find it without opening the ten options it declines.
  • Expanding scrolls the first row of tiles under the header, smoothly unless you have asked for less motion.
  • The opening paragraph is two lines instead of four.

Dashboard tour

  • After you add your first ticker, four short coach marks point at what the dashboard will not explain by itself: that Positions and Watching are two different numbers, that fit score is measured against one portfolio's rules and not against the market, that the Why column is our own output, and that the Matrix exists. Each stop is one or two sentences with a visible way out.
  • It runs once on its own, then only from "Show me around" in the header. Skipping is recorded the same way as finishing.
  • Seen or not seen is kept in your browser, so a second browser runs the tour again. The tour also waits until your setup is finished, so no stop points at a panel that is still empty.

Learn

  • The Learn panel leads with how far you have got and where to go next. The question is one line, and that line carries the text of the question rather than the word "question".
  • Once you expand the question it stays expanded while you move around the app. A reload closes it again.
  • A lesson counts as finished when every question in it has been answered. The panel, the nav badge, the hub and the lesson list all read that one definition, so no two screens can disagree about the same lesson. The per-browser list is gone: it claimed nothing was done on a second browser and never moved when you answered from the dashboard. The trade-off is named openly - answer the questions from the dashboard and the lesson is finished even if you never opened the text.
  • The panel button uses the accent colour, not green. Green is the "fits" verdict, and a green button next to a score reads like a verdict.

Billing

  • Invoices are issued in the configured number series instead of the accounting default. If that series is rejected, the invoice still goes out on the default and the rejection is logged with the full response, and an invalid value in configuration is dropped with a warning instead of taking requests down.
  • If marking a payment or sending an invoice fails, an email now reaches support. Before, it was only a row in events that nobody was reading.

One voice across generated text and email

5 changes

Generated text

  • Tear-sheets, fit narratives and public feature board titles no longer describe Monsa as a stock analysis terminal, so the wording you see matches the rest of the product.
  • Fit analysis is now barred from giving advice, not just from adding disclaimers. Narratives stay on whether a holding still matches the rules you wrote.

Email

  • All four HTML emails now draw their colours, type and spacing from one shared skin, and the leftover [MONSA] label is replaced with the product name.
  • The invite email no longer promises anything about the first 100 operators and now carries the same tagline as the rest of the product instead of its own drifted variant.

Elsewhere

  • The confirmation after you save rules states the version number of the rule set you just saved.

Onboarding, empty states, and a changelog that keeps up

12 changes

Getting started

  • The sign-in screen shows a sample rule book with three lines of real output instead of a simulated boot log, and the tagline is now the headline.
  • On the welcome screen, the way into the app is a full-width button, pinned to the bottom on mobile, and saving a nickname is a quieter outline button.
  • The first screen after signing in gives you two equal paths and a blurred preview of what comes next, instead of six empty panels. The "I already hold stocks" path creates a portfolio for you, so you can enter share counts right away.
  • In the strategy picker, two cards sit at the top, the rules are tucked behind a details toggle, and every template names the school it comes from - worded "in the tradition of", never "by", because all ten were written by Monsa.
  • "New to investing" in the navigation shows how many steps are still open, and that signal now comes from the server rather than your browser, so it no longer lights up for people who picked a template instead of the questionnaire. Finished steps are struck through.

An empty portfolio

  • An empty portfolio now points straight at the Track ticker dialog with a full button, and that dialog asks for the ticker and the share count together. The sentence names how many rules the holding will be measured against.
  • A portfolio with no rules gets its own wording and sends you to the Rules tab.
  • The Candidates link only appears when there is something to show.
  • The dashboard keeps its single line without a button, now describing the shorter route.

Interface and changelog

  • Tab labels line up with the same edge as everything else on the page, and vertical spacing is consistent throughout.
  • Learning screens use the same sizes as the rest of the interface, and the beginner button is a standard large button. The centered column stays.
  • Changelog entries are now written every day in all nine languages, or not at all on a quiet day. The gap since 2026-08-05 is filled with one summary entry.

Three weeks of getting out of your way

6 changes

One interface, product and site

  • Monsa used to ship two skins: a dark terminal for people who already knew the words, and a light one for people who did not. There is one now, and it is the friendlier of the two.
  • The marketing site was rebuilt on the same design, so arriving from monsa.ai no longer looks like arriving somewhere else.

Starting out was rebuilt end to end

  • The sign-in screen shows what Monsa produces instead of a machine starting up, and the first screen after signing in offers two routes: put in what you already hold, or pick your rules first and try stocks against them.
  • The ten predefined strategies now say which school each one comes from, and their rules sit behind a disclosure instead of sixty rules at once. A portfolio with nothing in it says what to add and why.

Fixes you would have noticed

  • Lesson answers survive a reload, and a link that pointed at a specific screen lands there after you sign in rather than dropping you on the dashboard.
  • Reviewing a question shows the verdict on the question you clicked. Scoring reads freshness in the database rather than after the fact, and a long history pages through instead of stopping short.

The changelog, translated too

4 changes

This page now reads in all nine

  • The entry above drew one line for all running content: chrome translated, entries left in English. This page crosses it and the request board deliberately does not. Every release entry here now exists in all nine editions, and a release written in English and forgotten in another language fails the build rather than shipping a page that quietly stops three entries short.
  • `CHANGELOG.md` is still the source of record and still the file a release is written into. Its translations live beside it and are checked against it for the same releases, the same groups and the same number of bullets.

What operators ask for stays in English

  • Feature requests are not translated, in any edition. They are quotes - somebody else's words about what they want - and running them through a translation would put words in an operator's mouth on the one board whose whole point is that the queue is theirs. The board page says so on itself.
  • An earlier version of this entry announced the opposite. Translating requests was designed and then dropped before any of it shipped, and this entry described it anyway for a few hours - which made the changelog wrong about the one thing it exists to be right about.

The whole site, in nine languages

8 changes

Every page now has a translated edition

  • monsa.ai publishes English at the root and eight translations under a path prefix. Until now that covered the home page, price alerts, and the pages added alongside them; the rest of the site was English only, and a reader who arrived on the German home page hit an English page the moment they followed a link. Every route now has an edition in all nine.
  • That includes the pages generated one per template and one per tool. Each of the strategy templates and each comparison now reads in whichever language the reader arrived in.
  • The links between them are the point. Before this change each translated edition carried nineteen links to routes that did not exist in it. It now carries none.

What stays in English, and why it says so

  • Criterion names, template names and the guidance behind them come from the same file the product scores with, and the product says them in English. A translated criterion would teach a word the terminal does not use.
  • What a comparison says about somebody else's tool is written once and checked once. Eight retellings of a claim about a third party are eight chances to get it slightly wrong, on the pages whose credibility rests on being fair to the other side.
  • Release entries and feature requests are running content. Requests in particular are quotes - somebody else's words about what they want - and rewriting one is the single thing that board must not do.
  • Where any of this applies, the translated page says so on the page rather than leaving a reader to work it out.

The legal pages

  • Privacy and terms now read in all nine, and each translated edition states that the English original is the version that applies. That matters most for the paragraph saying nothing here is investment advice, and for the one admitting that a pageview inside the product carries a ticker.

Your Interactive Brokers positions, without typing them twice

8 changes

Import from Interactive Brokers

  • Settings can now connect an Interactive Brokers account with a Flex Web Service token. Monsa reads the open positions on your statement, matches them to the instruments it scores, and shows you what it would change.
  • Nothing is written until you tick it. The preview lists every position, including the ones that already agree, because a row missing from a list of changes reads as a row about to be removed.
  • It cannot place an order. The token IBKR issues for this serves statements and has no endpoint that could trade or move cash.
  • It never rewrites a holding you typed yourself. Where your number and the broker's disagree on a holding you entered by hand, Monsa marks the row and says why rather than picking one.
  • Imported holdings land unassigned. Which portfolio a holding belongs to is a judgement about your own strategy, and a statement says nothing about it.
  • Every night Monsa reads the statement again and e-mails you only when something differs. The nightly run prepares a proposal and never applies one.

Corrections

  • Four places on this site said Monsa never connects to a brokerage: the privacy policy, the MCP page and two FAQ answers, in all nine languages. That stopped being true the day the import shipped. They now say what is true and is the stronger half anyway: connecting is optional, what Monsa reads is read-only, and it cannot place an order.
  • The privacy policy now lists the broker connection among the things stored, which it had never mentioned.

Ask your own Claude about your own book

5 changes

Monsa over MCP

  • Settings can now issue a token that lets an MCP client - Claude Desktop, or anything else that speaks the protocol - read your portfolios, your rules, your holdings, your fit scores and your price targets. You ask in your own words, in the Claude you already have open, and the answers are your numbers against the rules you wrote.
  • It reads and only reads. Nothing over MCP can create a portfolio, track a ticker, set a price target or change a rule. A model that can add one holding can add fifty, and you would find out from your own book.
  • Every score that leaves over MCP carries the sentence that explains it: a fit score measures agreement with your written rules. It is not a rating of the company and not advice.
  • A token is shown once and stored only as a hash, so losing it means issuing another rather than asking for it again. Revoking one takes effect on the next call, not at some expiry.
  • A token reads your book and nobody else's. That is enforced by the same row-level rules the app itself runs on, not by a filter somebody has to remember to write.

A price worth being told about

14 changes

Referrals

  • The screen you land on after paying now tells you if you arrived on somebody's link, and that a month is going onto your renewal. It only ever talked about the link you could share, so the person who had just been given thirty days was the one person not told about them.
  • A referral link lands on a page that says what it is, instead of dropping you into the pricing section of the ordinary home page with nothing said. The link also gets its own preview card when it is shared.
  • An e-mail arrives when the days actually land, a month after the payment. It is the only point where any of this reaches somebody who has stopped thinking about it, and the person who was referred is the likeliest to have forgotten there was a link at all.
  • The referral card lists the people you brought in, one row each, by operator number. It used to show only a count, and the count was derived from credits rather than from people - so somebody who paid through your link and whose credit had not been written yet appeared as nobody at all.
  • A credit that has not been written says so, in amber, instead of being invisible. It is recovered the same night.
  • Credits are now reconciled nightly against who actually paid. Stripe delivers the checkout and the invoice separately and in no fixed order, and a bad interleaving could leave a real referral with no credit and no complaint.

Watching a price

  • Name a price on any ticker you track and Monsa tells you when the market gets there, by e-mail and on your own page. One field: a number above the last close means you are waiting for a rise, below it means a fall, and the dialog says back which one it read before you save.
  • It is checked once a night against the closing price. A stock that touches your number at lunch and closes back below it does not count, and every screen and message says so rather than leaving it to be discovered.
  • Each target fires once. What was reached stays on your page until you dismiss it, so an e-mail that went to spam is not the only copy.
  • One message a night, however many targets were reached.
  • Five targets can wait on the same ticker at once. A level to add at and a level to get out at are two questions about one stock, and the first version made answering the second throw away the first. The dialog lists what is waiting, cheapest first, and each one goes on its own.
  • The dialog says which address the e-mail goes to, so there is no guessing which inbox to watch.

Tracking a ticker

  • The portfolio is already chosen when the dialog asks where the ticker goes. Running one portfolio meant picking it out of a list of one, which is a question whose only answer was already on the screen behind it.
  • The average cost field shows today's close as a hint instead of a dash. It is the number you reach for when asked what you paid, and it was not there. Leaving the field empty still records no cost.

A name to be listed under

15 changes

The board

  • Everybody who pays now gets a handle without having to think of one: `moat_monk`, `dcf_tourist`, `13f_lurker`. It is on the screen you land on after paying, next to your number, and it is one field to change.
  • You are listed on the public board under that handle from the first payment. What is shown is the handle and how closely your holdings follow your own rules; never your name, your e-mail or what you hold. Untick the box on that screen, or in Settings, and you are not on it at all.
  • Handles are unique, case-insensitively, so nobody can take a name that is already on the board.

Your book

  • Every holding now has a red cross next to the pencil, and it asks what you meant. "Move to watchlist" drops the position and keeps the ticker scored against every portfolio; "Remove position" deletes it, and stops tracking the ticker when nothing else holds it.
  • The same two answers are on the cross inside the positions dialog. Clearing every field and saving used to be the only way to put a holding back on the watchlist, and there was no way at all to remove one without leaving the page.
  • A portfolio's own page can add a ticker to it. Same dialog as everywhere else, with the portfolio you are standing in already chosen.

Setting up

  • A new portfolio comes named. The dialog offers "My first portfolio", then "My second", and taking the offer is pressing the button: it only asks you to type if you want something else.
  • Setting up is two steps, not three. Tracking a ticker already asks which portfolio it goes into and how many shares you hold, so there is nothing left to go back and mark by hand.

Referrals

  • Clicking your referral link copies it, and a message says so. It used to open it, which is the one thing nobody needs to do with their own link: it leads to the pricing section you have already paid for. Same behaviour in Settings and on the screen you land on after paying.
  • The link, the post on X and the e-mail invite are one card with three rows, not two cards that looked like different features. They earn the same days, and one count covers all three.

Settings

  • Settings reads top to bottom now: your account, then referrals, then what gets built next, then what you pay and what you have used. It was a grid of six cards of equal weight with no obvious place to look.
  • Interface size and sign-out are gone from the page. Both sit in the bar at the top of every screen, so Settings was showing them twice.
  • The account card is three lines and two buttons. It also stops telling operators who left the public board that they are on it.
  • Billing and usage are one card at the bottom, and the founding-seat offer moved there from the account card: it is about what you pay, not who you are.
  • The changelog is a line at the foot of the request-board card rather than a card of its own, which leaves the board as the thing to press.

The board in public

4 changes

What gets built next

  • monsa.ai now has the whole request board at monsa.ai/requests, not just the six most-voted. Anyone can read what operators asked for and how many wanted it, before deciding whether to open an account.
  • Posting and voting still need an account, and the page carries no name of whoever asked.
  • Settings shows the board rather than linking to it: how many requests are up, which one is most wanted, and how many asks you have left this month.
  • Every request now carries the number of the operator who asked for it, in the app and on monsa.ai. The number is all of it: no name, no handle, no address.

Tracking and scoring

5 changes

Tracking

  • Tracking a ticker now asks where it goes. Say how many shares you hold and it joins the portfolio in the same step, or leave it and it stays on the watchlist, scored against everything you run.

Scoring

  • Deep Value is judged on cash flow rather than book value. A company that has bought back stock for a decade, or one whose assets are largely depreciated, is no longer excluded before anything else is read.
  • A score that could not use most of your rules no longer reads as a full fit. Where a strategy leans on judgement, the verdict says so until you run the analysis.
  • Every threshold now gives partial credit near the line, so just missing one no longer counts the same as missing it by a mile.
  • GARP is stricter: the price ceiling came down, three-year earnings growth sits beside the single year, and return on capital replaced return on equity.

Open to anyone

3 changes

Access

  • Monsa no longer needs an invite. Sign in, pick a plan, and you are in. There is no allowlist, no waiting list and nobody approving accounts.
  • The founding annual price is still limited to 100 seats. That is a price, not a door, and it is the only thing here that runs out.
  • Send Monsa to as many people as you like. It grants them nothing they could not get themselves, and Settings shows whether the mail went out, whether they signed in, and whether they subscribed.

Invoices

3 changes

Billing

  • Every payment now produces a real invoice, not only a card receipt. It is issued the moment the payment goes through and e-mailed to you.
  • The tax on it follows the billing address you gave at checkout. A business in the EU that entered a VAT number is invoiced under reverse charge, and outside the EU there is no EU VAT on the document at all.
  • A VAT number entered at checkout appears on the invoice, which is what your accountant needs in order to deduct it.

Feature requests

7 changes

What gets built next

  • Ask for something in Settings, and vote on what other operators asked for. The board is ordered by votes, and the most-wanted become the week's tasks.
  • "Refine with AI" turns a one-line ask into a request other people can vote on. It asks you at most three multiple-choice questions and writes the rest. It has its own monthly allowance and does not touch your AI analyses.
  • Posting as written always works. If the refinement fails or you have used this month's allowance, your own words go up unchanged.
  • Requests matching something already on the board are shown to you while you type, so a second row saying the same thing does not split the vote.
  • Five requests per operator per month. Vote on as many as you like.
  • Requests are reviewed before anything reaches monsa.ai. Until then they are visible in the app, where you can vote on them either way.

Changelog

  • The changelog is now in Settings as well as on monsa.ai, so you can check what shipped without leaving the app.

Founding seats separate from operator numbers

4 changes

Pricing

  • A founding seat now comes with the annual plan. The first 100 annual subscriptions lock $100/year for as long as they stay; the monthly plan buys access and leaves the seat on the table.
  • Your operator number is unchanged and unaffected. It is issued the first time you pay, on either plan, and it is yours for good - it never moves, and nobody else's purchase can push it.
  • Everybody who already held a founding seat keeps it, on either plan. Nothing was taken back from anybody.
  • Settings shows how many seats are left if you are on monthly, so the choice is visible rather than buried in the pricing page.

Founding launch

23 changes

The first public release. Everything below is live, not planned.

Scoring

  • Every holding gets a fit score from 0 to 100 against the strategy its portfolio applies, with a verdict of fits, borderline, or violates.
  • Deterministic rules do the arithmetic. Qualitative criteria - moat durability, management execution, whether a turnaround plan is credible - are judged separately, and the reasoning is shown next to the result.
  • Every criterion is visible on its own line: what it required, what the company actually posted, and how much it counted.
  • Scores rebuild overnight. Fundamentals, end-of-day prices and FX refresh first, then the whole book re-scores, so a company that reported after the close has a new verdict waiting in the morning.

Strategies

  • 10 built-in templates - GARP, Classic Value, Deep Value, Quality Compounders, Dividend Growth, High Growth, Momentum, Turnaround, Wide Moat and All-Weather Defensive - each one a real rule-set with thresholds and weights, not a label.
  • Every threshold, weight and hard line is yours to change once a portfolio applies a template.
  • Write your thesis in plain English and Monsa drafts the criteria from it, which you then edit. Starting from nothing is the case this exists for.
  • Portfolio constraints are checked too: maximum position size, maximum sector concentration, and a cap on the number of holdings where the rule-set sets one.

Data

  • 34 metrics per company, sourced from fundamentals and end-of-day prices.
  • Coverage is US and major European exchanges - London, Frankfurt, Amsterdam and Copenhagen - with FX handled so a mixed-currency book still adds up.
  • Every metric carries a flag: reported, derived, or missing. A rule can require a number, ignore the position when it is absent, or fail it outright, and an empty cell never silently reads as a zero.

Your book

  • 5 parallel portfolios, 50 tracked tickers, each holding assigned to the portfolio whose rules should judge it.
  • The Matrix: one dense grid of every holding against every strategy you run, for the question of whether a stock would sit better somewhere else.
  • Wishlist - score companies you do not own yet against your own rules, before there is a position to regret.
  • Tear-sheet: a written read-out of the company inside each ticker.
  • 100 AI analyses per month.

Sharing and the board

  • Share a single verdict as a public permalink, with a card that renders in full when the link is posted.
  • The public leaderboard ranks operators by discipline - how tightly a book tracks its own strategy - and it is off until you turn it on.
  • Every operator is issued an operator number and keeps it. The first 100 paying operators additionally lock the founding annual price for as long as they stay.

Access and account

  • Sign in with Google or with a one-time code sent to your email address.
  • Monthly and annual subscriptions; annual is priced from the operator number, so the founding rate cannot lapse mid-checkout.
  • Each operator can send Monsa to as many people as they like.
  • A command palette, and an interface scale control for people who do not run their browser at the default size.

Entries describe what the product does differently after a change. There is no list of what is coming next - this page reports, it does not promise.

Get founding access →

The nightly run is the part that has to keep working whether or not anything new ships. That is what this page is really tracking.