Skip to the case study

All case studies

Jill Low

Product Designer, UX/UI & Front-end Coder

Case study · Share management Head of Product Design, Starboard, later Stellar May 2021 to Sep 2024

Building the deepest cap table we could, then replacing it with a spreadsheet

A Singapore company secretary keeps the share register. Not a copy of it, not a view of it — the legal record of who owns the company, maintained to the letter, produced on demand when a regulator asks. Most of them keep it for 100 to 150 companies at once. I spent two years building software deep enough to do that job. By 2024 I had helped replace most of it with a spreadsheet.

01

The job nobody outside it can see

Shares look simple from outside. Somebody owns a percentage, the percentage changes when they sell, and a database row could hold it.

What a company secretary actually carries, for every company on their list:

  • advising the owners how to split the share capital in the first place
  • filing the structure with the Accounting and Corporate Regulatory Authority (ACRA)
  • issuing share certificates, then tracking every certificate number
  • following every movement — ordinary and preference shares, treasury, buybacks, shares held in trust
  • re-filing with ACRA whenever any of it changes
  • adding capital when the company raises
  • maintaining the statutory register, which the law requires be kept accurate to the letter
  • closing the share capital down if the company winds up

Multiply by 150. Then add that an ACRA audit arrives with about two months’ notice, and two months is not long to reconstruct whatever was not kept current.

Business owners think about their cap table when something forces them to. Company secretaries think about it constantly, because it is their liability rather than their curiosity.

None of that is written down anywhere a designer can read it. So I went to the registers themselves: I collected samples from real clients, the simple ones and the badly tangled ones, and worked through how the same structures were handled in the software already on the market. Then I learned the mechanics: how an ownership percentage is actually calculated, what happens to the register on a transfer, what a buyback does to it. There was no spec to work from, so I wrote it, then untangled it into something four developers could build from without becoming company secretaries themselves.

What I read, and what I wrote from it. Same statutory records, no two company secretaries keeping them the same way — then one release mapped out in stories a developer could pick up.
02

Why the obvious answer did not work

Singapore’s companies regulator, ACRA, holds a record of every company’s shareholding, exposes it through an API, and keeps a section of its own labelled registers. The first instinct — mine included — is that this is a solved problem: pull the data from ACRA and show it.

But what ACRA holds is a snapshot of the current shareholding. It says who holds what today, not the paper trail of transfers and allotments that got them there. The register a company secretary is legally answerable for is that trail: every movement in order, with dates, from which today’s position can be reconstructed — and so can any day’s. ACRA’s registers section cannot do that, which is why company secretaries themselves disagreed about whether it was worth using at all.

Pulling from ACRA is not harmless either. The API only talks one way, so pulling into a system that already holds the movements writes over them. And what comes back needs cleaning: several preference share classes arrive collapsed into one, and a shareholder who has long since left can come back holding zero shares.

So the register has to be maintained, not derived, and something has to be the place where that happens. We looked at the cap table software already on the market first. None of it went as deep as the job required, so we built it.

The share capital we kept, and what we put in front of the button that would overwrite it. “This action cannot be undone and can cause some Shareholders to be unlinked from their respective capital.”
03

Act one — building it deep

Starboard was selling to Singaporean company secretaries, and share management was meant to be the one place everything share-related lived. It was among the first things I worked on after joining, and it kept going for about two years.

What that meant in practice:

  • The register is an event log, not a snapshot. Ops asked for this and they were right. Every allotment and transfer is a dated row with a party, a quantity and an amount paid, and the current position is what those rows add up to. A snapshot cannot answer the questions a company secretary gets asked.
  • Share classes carry their own rules. Ordinary and preference sit separately, each with its own currency and its own issued and paid-up capital, because Singapore treats those as different numbers and a filing depends on the difference.
  • Price per share runs to eight decimal places. Not a rounding preference. Real companies divide small capital across millions of shares, and the registers I read from actual clients had prices like SGD 0.00002710 in them.
  • Certificates were generated, numbered and tracked. Issue one, replace a lost one, keep the numbering consistent, keep the history attached to the shareholder it belongs to.
  • And you could look at any date. A date picker at the top of the register rebuilds the position as it stood then, from the movements. Company secretaries need to see how ownership moved rather than only where it landed.

Everything above was correct about the domain. None of it was the problem.

Share capital with its trail underneath, shareholders grouped by holder, the forms for allotting and transferring, and the register that comes out of all of it.
04

What it cost to keep

It was overengineered.

Not wrong — overengineered. Every rule in it was a real rule, and the structures I had read from client registers genuinely were that complicated. But the feature sat at a distance from how the people using it actually worked, and keeping it current was a chore that never ended. Adding a transfer meant working through the one movement at a time, which is slower than the thing those company secretaries were already doing.

It sounded right at the start. Upkeep is where the bill arrived.

05

Act two — five months, and a spreadsheet

Selling to company secretaries stayed hard. They were underserved and had been burned through COVID, when files and documents were still physical and nobody could move, and they were slow to take on new software. Starboard also employed its own company secretaries, which put us on both sides of the same market. Under pressure to expand into the US, the company changed shape: we became the provider ourselves, rebranded to Stellar, and rebuilt the product from the ground up.

The rebuild window was about five months, for the whole platform.

So share management got asked a hard question: is this worth carrying over as it stands? The answer was no, and what replaced it was mostly not an interface.

  • ACRA goes first, and only first. Pull the ownership data before touching anything, because the pull overwrites whatever is there. After that the spreadsheet is the record, and the rule was simple: if you have started fixing an entity by hand, do not pull again.
  • Then it is a spreadsheet. Download the sample file, edit it, upload it back, and the share capital or membership structure is generated from it. Change something later, update the file, upload again.
The file that replaced the interface. Two tabs, and a capital number joining a holding to the class it came out of.

That was not a shortcut dressed up as a decision. The company secretaries who were good at this were already running their registers in Excel. Bending a familiar file into our format cost them almost nothing, and it was far quicker than entering transfers into an app one at a time.

The structures multiplied, and the spreadsheet absorbed it. Stellar now formed companies in the US as well, and ownership does not mean the same thing across the border. A Singapore Pte Ltd has shares with issued and paid-up capital, and a Malaysian Sdn Bhd runs close enough to share the model. A US C Corp has shares with par values instead. A US LLC and a Singapore Company Limited by Guarantee have no share capital at all, only membership interests — and those two turned out to resemble each other more than either resembles a Corporation. Three ownership models across three markets, each needing its own data structure, and the sample file came in a shape for each. On screen, members got their own pages rather than a shareholders page with the labels changed. The rule I held to was to make it feel simple to the business owner while giving the ops manager the full picture. Clients read; ops act.

Shares with capital, shares with par values, and members with neither. One page shape, three data models behind it.

Certificates and registers moved to templates. We gave up generating certificates automatically inside the product. Instead I used the document generation feature to make them templates, so a certificate could be produced from a company’s data and sent out for signature from inside Stellar. Share certificates, replacement certificates for lost ones, the Register of Registrable Controllers and the Register of Sealings all went in as templates.

The certificate we stopped generating ourselves, rebuilt as a template with the entity’s data dropped into it.

We decided this together, and at the time we framed it as a workaround: something to revisit when there was room to look at cap table tooling properly.

06

What it turned out to mean

The company secretaries told us they were happier working this way, and most of them understood it immediately.

One piece of the deep version survived, deliberately: you can still view the shareholding as at a chosen date. That one was never about completeness. Being able to walk backwards through the movements is how a company secretary understands what happened to a company, and no spreadsheet round trip replaces it.

The market comparison is the part I would want read carefully. The US side is real, and it is much lighter — no statutory registers to maintain, no share certificate requirement. Singapore demands all of it. The depth in the first version was not indulgence. It was one jurisdiction’s law, correctly implemented, for users who were going to keep using Excel anyway.

A spreadsheet that works beats a UI that doesn’t.