Round #61Score 4/5Real estate

The medical signed-record locked a lease, then hit its one-signer ceiling

Route: /lease-contract
Desktop preview
Mobile preview

Captured at a 375px viewport. Long pages scroll inside the frame.

The screenshots stay in Japanese. Every round is a real screen for a real Japanese industry, so an English re-render would no longer be the screen the agent actually produced.

Write-up

The medical signed-record locked a lease, then hit its one-signer ceiling

⁠Build log series⁠: I hand a real screen to an AI that has never seen Gunjo (@gunjo/ui) and let it build. Real estate, screen two: a ⁠lease contract with its statutory disclosure⁠ (contract terms, special clauses, the disclosure, party signatures, then execute, lock, and amend by addendum).

A different animal from 's rent roll (an operations dashboard): this is a ⁠legal document being drafted and executed⁠. Assemble the rent and the special clauses, have the licensed broker walk through the statutory disclosure, and let the parties sign. Once executed, it becomes ⁠a signed record that only an addendum can change⁠.

Result: 4/5

tsc and build passed, the console stayed clear, 375px turned the parties table into cards, the six disclosure items plus the tenant's confirmation gated execution, executing locked every tab read-only (aria-readonly, all four signatures in), addenda appended, and the page had a single h1.

The star this round: medical SignedRecord mapped one-to-one onto a lease

SignedRecord, built in for medical signed records (nursing notes, discharge summaries), was adopted unprompted by this round's agent for contract execution:

🟢 SignedRecord reused across industries: a strong fit.⁠ Built for clinical notes and discharge summaries, but its draft, sign, lock read-only, append-only abstraction maps ⁠almost one-to-one onto execute, lock, and addendum⁠. The canSign gate, the children({readOnly}) render prop (flipping the whole tab body read-only), aria-readonly, the lock notice, the signature audit row, and the addendum input with its thread: all of it is already in there. Swapping labels re-voiced the whole thing into leasing vocabulary. ⁠This component genuinely does not care which industry it is in.⁠

Medicine's "sign, lock, append" and real estate's "execute, lock, addendum" turned out to be ⁠the same skeleton wearing different words⁠. One labels swap turned a nursing-record component into the execution engine of a lease. CoSign (built in ) covered the mutual confirmation between the licensed broker and the tenant on the disclosure, as-is.

What I fixed this round: CurrencyInput had no label (the input set is now complete)

  • 🟡 CurrencyInput has no label or description⁠, so the rent, deposit, and key-money fields each got a hand-rolled labeled wrapper. The ⁠third instance of the same omission⁠, after Textarea (issue #245) and Input (issue #249), now fixed (issue #258, PR #261). With this, every major input component carries label and description.

Logged, not built (waiting for a second sighting in contracts and legal)

SignedRecord is strong, and the contract work still exposed contract-shaped gaps:

  • 🟠 ⁠Multi-signer support for SignedRecord (issue #259). A lease executes with four parties (landlord, tenant, guarantor, licensed broker) and an addendum with two, but signedBy and author are singular. ⁠An extension, not a rewrite⁠: signers: {id, role, required}[] plus allRequiredSigned plus addendum.parties. CoSign stays a fixed two-party tool and should not be generalized.
  • 🟠 ⁠An ordered, editable list⁠ (special clauses need add, remove, and ⁠reorder⁠, issue #260). TagInput is unordered short tags, List is display-only, EditableDataTable is a grid. The agent hand-rolled <ol> rows of Textareas with up, down, and delete. An OrderedListEditor or ClauseList is the right shape.

What I took away: how far a component generalizes shows up outside its home turf

medical:     sign, lock, append   (nursing notes, discharge summaries)
real estate: execute, lock, addendum (a lease)
= the same skeleton. The difference: one signer versus four

SignedRecord looked complete in medicine. It took a lease, a ⁠four-party⁠ execution, to expose the one-signer ceiling (the same shape as the ScanGate case in issue #237, where a missing end-of-flow step surfaced). ⁠A component's true boundary only becomes visible when it gets used outside the domain it was built for.⁠ The skeleton (execute, lock, append) crossed the industry line; what is missing is one contract-specific dimension (multiple signers), and an extension covers it. This is what training components across industries buys.

Next up: build log

  • ⁠Another real-estate screen⁠ (tenant screening, or viewing bookings and listings) aiming for second sightings of multi-signer issue #259 and the ordered list issue #260, or close real estate at three screens and change industries.

The run

Gunjo was still in early alpha at the time; issues are welcome.

This series is co-created with AI (Claude and Codex). A human designs the experiments, makes the calls, and fact-checks before publishing; the AI does the hands-on work and drafting.

Components from @gunjo/ui

The components this screen's source imports directly.

The code the agent actually wrote

Click a file to expand its source.

業界別「AI指示書パック」、先行登録を受付中です。