The live product, since v1.0

This repository was handed over on 2026-08-23 and frozen. The product built from it went live at tendd.co and kept changing by the founder's decisions. On 2026-09-30 every page here was brought level with it. This is the account of that sync.

synced at product commit 4158f6c 73 pages in colour, was 58 75 components + 3 patterns, was 70 + 3 22 decisions logged in the product since 2026-09-02 28 gaps open of 55

How it was done

The running product was the reference, not its source code read in isolation. The product's own development server was walked by a script as eleven people built for it in its development database, one per shape of data the design draws: a list typed by hand, the free bank scan held for seven days, the same scan after the hold ended, Tendd Pro with a live bank, Pro cancelled but not ended, Pro with a failing renewal, a bank that needs a new sign-in, an empty list, one subscription, a short list, and a cancellation reported. Every route was captured as rendered markup and as screenshots at 390 and 1440, and every page in design/ was compared with the capture of its state.

What travelled whole, copied rather than rewritten: design/system/ (byte for byte the product's system/), voice/docs/microcopy.md, docs/decisions.md (with a mirror header), docs/gaps.md (new here), docs/bank-connection.md, handoff/docs/behaviour.md and the fourteen merchant marks in design/visuals/logos/. The landing's motion is the product's own script, bundled into design/landing.js, with the command that rebuilds it in its banner.

The one rule every page was brought level by. What the product DECIDED changes the page: a structure, a class, a string or a state that moved because of a decision with an id. What the product has simply not built yet stays as the design's intent, because a gap in a running product is not a verdict on the design. Every changed page says which it was in its own top comment, with the decision ids.

Was, became, and why

WhereWas at v1.0BecameWhy
WelcomeD-Hero: a round window of fourteen merchants gathering into the listLight 2. The fourteen float beside the promise, a whirlpool eats them, the list forms and three are cancelled while the total steps 192.90 to 144.92. White in both themes; WebGL with a still fallbackP16, the founder's choice of six explorations
Sign in, Path ChoiceTwo screens of their own, wordyPanels: Google first, email one step in, a sent step; Get started is two pictured doors. On the landing both open as a dialog over the pageP17, P11
Home, and three branchesOne Emma: on Free, with Chase read and every name visible, which D-Gate made the Pro shapeHome is Emma on Free after the free scan: three names across three categories, then one block, "You have 11 more subscriptions", Get Tendd Pro or Add them yourself. Beside it, as states of the same screens, Free typed by hand and Tendd Pro: Home, the reveal, Connections, Settings and the cancel guideD-Gate, P31 to P34; the founder's decision of 2026-09-30
Guided revealStep 2 named everythingStep 2 names three and says the rest in the same block, without the amountD-Gate, D1, P31
Connections (two new states)A bank was connected or notA free scan's connection is held seven days unread, then stops; a stopped bank still names what it foundP20, P32, G52
Connect bank (new state)-After paying past the hold: one line of why, no step counterP32
Upgrade$7.99 a month, one row of plans$9.99 a month, $69 a year, each plan card with its own button, the year in the middle; a cancelled plan can be kept (new state)D4 amended 2026-09-30, P24, P26, P27
Trends, Pro viewA drawn view of what Pro would showWhat moved lists only what moved, per range, and the category sentence agrees with its own rowsP25
Subscription detail, Connections, Data and privacyThe way back in the bar at every widthPast 760 the way back is the first line of the page, so the rail never moves; the detail keeps the tab barP26
Cancel guide, AlertsPro promised screenshots per step, a link that "skips the retention screens", unusual-charge alertsPro is a direct link to the service's own cancel page; the promises nothing could keep are goneP30, G56
SettingsFour notification switchesA fifth, "A charge is coming up", Pro and off by default, because Tendd now writes lettersP29
Terms, Privacy, Help, About, Contact (new)Links that pointed nowhere; "Careers" in the footerFive public documents in the product's own lines; "Careers" became "Help"P12, P35, P36
The design system70 components75: six new (landing type, landing button, locked list, landing benefits, stats, and the auth panel), the orbit removed; pill and go buttons, a drawn checkbox, two new rolesP16, P17, P26, P34
Microcopy1318 lines2064 lines: every string the product added, with its rewrite logThe product owns the file now

Kept on purpose, although the product does not show it

Each of these is a gap in the running product and not a decision against the design, so each stays on the pages as intent. The product's own list of them is docs/gaps.md, 28 rows open of 55.

WhatWhy the product lacks it
"Hi, Emma" and the plan chip in the app barThe product stores no names yet
The "not opened in a while" nudge on HomeNo usage data exists to drive it
"Last checked today, 9:14 AM" on the trust lineNo published form for a time that is not today (G4)
Loading and error screensThe product renders each view whole on the server and draws none
Share snapshotNot built
The failed renewal as its own dated screenBeing built in the product as this sync ran (its next decision), so it is not in this sync

For the founder to decide

QuestionWhy it is open
Answered 2026-09-30: which Emma is canonicalThe founder: three states, "полностью фри без подключения банка, фри с подключенным банком и платный про". The etalon is Free after the scan, as the site draws it. D3 in CLAUDE.md says it: one product, a plan is a state of a screen, and where plan and source change a screen it has three
Answered with it: the Pro edition of the cancel guideDrawn, cancel-guide-pro, as one of the three branches
The shared screens and their source linesSubscription detail and Alerts are drawn once, with the v1.0 data: every name, from Chase, and a Free offer of Pro. Under the three branches that is exactly true on no branch. Aligning them (one source line per branch, or three states of each) is the next pass if you want it
Petrol on the locked blockThe block spends petrol on its count and its front tile beside its primary button, which the One Voice Rule of D-Concept forbids and which P26 refused for a price. It is the product's choice (P34), mirrored as it is
Settings still says "unlimited bank connections"D-Gate made it false; the product prints it too, so the mirror does
The wireframesThe grey was not redrawn. It is the structure contract as handed over, and a page the product changed or added has no grey twin

What was checked, and with what

Every changed page was swept at seven widths (360, 390, 760, 780, 900, 1000, 1440) in both themes by the agent that changed it: no sideways scroll, no failed request, no console error, and screenshots compared with the product's. Then the repository's own instruments ran over the whole tree; their results are in the section below.

InstrumentWhat it askedResult, 2026-09-30
rollout12.cjsNo style of its own on 73 screens; every link resolves0 violations, 0 classes the system does not define, 0 dead links. 15 pages have no grey original, which the mirror expects
quality13.cjsSix questions of every screen at two widths and two themesThe two flush-text pairs it has always accepted, and three small targets on the public pages, filed for the product
route13.cjsEvery link in every page and document, and the click depth3754 links in html and 57 in markdown, 0 dead; the route holds
width12.cjs, edges13.cjs, pages13.cjsReading measures, right edges at 1920, and 135 non-screen pages at 320 to 390All ok; 0 split families; 0 pages scrolling sideways
a11y13.cjs, aria13.cjsLandmarks, headings, 200% zoom; names and busy states0 pages without a single main, 0 sideways at 200%; 0 ARIA findings on 126 pages
plans13.cjsOne product, not two0 findings. Free on 16 pages, Pro on 10, the plan named in the screen on 25 pages
design13.cjsDESIGN.md against tokens.css0 disagreements

Three instruments were taught, not silenced. The old landing had no main and was never swept; the new public pages have one, and 265 findings arrived, none of them a line of text crossing its frame. quality13.cjs now skips pictures marked aria-hidden, boxes with a deliberate negative margin, and boxes the public page places by transform, and counts a wrap by lines rather than by rects. rollout12.cjs reads every head of a nested rule and treats a query as a query. plans13.cjs compares the two corpora only where both have the page and the three branches did not move its plan. Each change is dated at its line.