Floor one

A lender, drawn
in section

Storey Home Lending does not exist. It is a demonstration built by TheBigBot.com to answer a narrow question: what would a mortgage website look like if it were designed by somebody who had read the rules rather than the competitors?

Floor two

The brief we set ourselves

Almost every mortgage website is built from the same three moves. A photograph of a couple receiving keys. A row of numbers — years in business, families served, an average star rating. And a form, placed early and often, whose real function is to convert a visitor into a phone call before they have understood anything.

None of that helps the person reading it. A borrower arrives with one of about four questions — what would the payment be, how much can I defensibly spend, does refinancing pay for itself, is renting actually cheaper — and every one of those has an arithmetical answer that a website could simply give them. The industry’s habit is to withhold it, on the theory that a question left open is a lead.

So the brief was: give the answer first, show the working beside it, and let the form be the last thing on the page rather than the first. Everything else in this demonstration follows from that one decision, including the parts that look like aesthetics.

The consequence is uncomfortable and worth stating plainly. A site built this way has far less to boast about, because most of what a lender’s home page boasts about is either unverifiable (a rating), outside its control (a closing time), or a number it would rather you did not divide by anything (a volume claim). Take those away and you are left with the arithmetic, the rules the arithmetic follows, and an honest account of what you do not know. That turned out to be plenty.

Floor three

Why the whole site is a house cut in half

An architect explaining a building does not photograph the front of it. They cut it down the middle and draw what is inside, floor by floor, with dimensions on every part.

That is the organising idea here, and it is not decoration. A mortgage is a stack of components that most borrowers only ever see summed into one number, exactly as a building is a stack of storeys that most people only ever see as a façade. Draw the section and the components become visible; and once they are visible you can point at the one that is doing the damage.

So each section of each page is a storey, separated by a drawn floor slab rather than a hairline border. A lift descends the left rail as you scroll: it is a progress meter and the page’s table of contents at once, which is the only reason it earns fixed screen space. Cards are open-fronted boxes you look into rather than flat rectangles. And the signature readout on the home page — the payment — is drawn as an extruded stack of floors whose thicknesses are its components, so principal and interest is literally the thickest slab and the mortgage insurance you were not told about is a visible layer rather than a footnote.

The test we applied to every new component was blunt: if it does not read as part of a measured building, it is wrong for this site, however nice it looks. A few things we liked failed that test and are not here.

  1. Storeys and slabs

    Sections alternate ground, and the slab between them draws itself as it enters the viewport — a structural line, not a divider.

  2. The floor mark

    Every section is numbered like a level on a drawing, and the number is real navigation: the lift’s buttons are those same floors.

  3. The dimension rule

    The short ticked line under each heading is a dimension line. It is the smallest piece of the language and it appears on every page.

  4. One lit word

    The brand gradient is allowed on exactly one word of one heading per page. A gradient everywhere is a gradient nowhere.

Floor four

Four widgets, four corners

Sites like this usually end up with a small pile of floating buttons stacked in the bottom-right corner, each one added by a different person on a different week. There are four here and they are deliberately kept apart, because a control you cannot find is the same as a control that does not exist.

In the header

Light, system or dark

Both themes are drawn, not inverted: the light ground is plaster and the dark ground is a dim room lit by one warm opening. The default is “system”, and the choice is applied to the document before the stylesheet paints, so a shared link never flashes the wrong theme at you first.

Bottom left, as a tab

Colour schemes, and only colour schemes

Four palettes, each with its own light and dark triple, each checked against the ground it is painted on. The visitor-facing panel offers palettes and nothing else — no font pickers, no free colour wells, no identity fields. The full customiser exists, but it is behind ?studio=1 where a client can use it and a visitor cannot break the contrast.

Bottom right, as a knob

The handrail

Text size in three steps, a high-contrast ground, always-underlined links, and a motion switch that genuinely stops the animation rather than shortening it. Every transform on the site multiplies by one --motion variable, so one control turns the whole building still.

A sheet along the bottom

The storage notice

Not a cookie banner, because there are no cookies to consent to. It says which four preferences are kept in your browser, states that they never leave your device, and offers to clear them. Performing consent for tracking that does not exist would be theatre.

Floor five

Three things the arithmetic got wrong

This demonstration was rebuilt on top of a shared template whose calculator library had three defects worth naming. A calculator that quietly returns the wrong number is worse than no calculator, because it is trusted.

  1. FHA insurance that stopped when it does not stop

    The inherited code cancelled FHA annual MIP at 80% loan-to-value. That is the conventional PMI rule from the Homeowners Protection Act, and it does not apply to FHA at all: above 90% LTV at origination the annual MIP runs for the life of the loan, and below it for eleven years. On an ordinary 3.5%-down purchase the error understated the borrower’s own insurance cost by roughly seventeen thousand dollars — and it understated it, which is the direction that flatters the lender.

    See both answers side by side →
  2. A rent-versus-buy comparison that was not even-handed

    The renter’s investable surplus was clamped with Math.max(0, surplus). In every month where owning cost less than renting, the renter kept the difference without ever spending it and the buyer was credited with nothing — free money on one side of a comparison whose entire purpose is symmetry. Both households now spend the same budget, and whichever is cheaper that month invests the difference.

    See the corrected comparison →
  3. Sixty amortisation schedules per keystroke

    Affordability was answered by binary search: build a full schedule, check the ratios, adjust, repeat — about twenty-one thousand rows of work on every keypress, for a question that has an algebraic solution. The budget equation is now rearranged and solved once for each of the two mortgage-insurance branches and the self-consistent branch kept. The answer is exact rather than approached, and a test asserts five hundred evaluations finish in under a tenth of a second.

    See the rewritten one →

All three now live in src/lib/calc.ts as pure functions with a test suite beside them, and every rule they implement is printed on the page that uses it — the Homeowners Protection Act for conventional PMI, HUD Mortgagee Letters 2023-05 and 2013-04 for FHA, and 38 U.S.C. 3729 for the VA funding fee. Citing the rule is not pedantry; it is the only way a reader can check whether the number is right.

Floor six

Everything on this page that is invented

A demonstration is allowed to invent a company. It is not allowed to invent things that can be mistaken for records — so the fiction is kept to the parts that cannot mislead, and the parts that could are simply left out.

The firm, its founding year and its staff
Invented. Storey Home Lending was “founded” in 2011 because a page about a lender needs a date to sit under; nothing happened in that year, and no achievement is claimed for any year since. The six people on the team page are written characters with geometric marks instead of faces.
The address, phone number and email
The city, state and ZIP are real geography. The street name is invented and carries no house number. The telephone number sits in the 555-01NN block reserved for fiction, so it cannot ring anybody. The email domain ends in .example, a TLD reserved by the IETF that can never belong to a real organisation.
The NMLS ID and the state licences
Absent, not invented — this is the one place where a plausible-looking fake would do real harm. The licensing page explains the omission in full.
Ratings, volumes, approval rates and closing times
None appear anywhere, including in the structured data a search engine reads. A demonstration lender has no customers, so it has nothing to average, and the two parties who actually set a closing date — the appraiser and the title company — do not work for it.
The arithmetic and the rules
Not invented. The formulas, the statutes and the HUD letters are real and cited, and the tests are real tests. That is the half of the site that is supposed to survive contact with a sceptical reader.
Storey Home Lending is a fictional company built to demonstrate a website. It does not lend money, take applications, or hold any licence. Every figure, person and scenario on this site is illustrative.

Floor seven

Where to go from here

The calculators are the part of this demonstration that does actual work, so start there. The team page shows how staff can be presented without photographing a stranger, and the licensing page is the one a real lender would have to get right.