Skip to content

Software

Software keeps a Customer's records and the rules that change them, defined once as Nouns and Verbs and reached through every Interface.

Software is a Product that keeps a Customer's records and the rules that change them. SoftwareBuilder builds it from one definition, headless first, and every Interface serves the same behavior.

One definition

A Software Product is a set of Nouns and Verbs. A Noun is a type of record with properties and relationships. A Verb is an action on a Noun, with inputs, outputs, and one Event when it completes.

Everything else is compiled from that set. Take clinicshift.app, a Startup that sells shift scheduling to clinics. Its definition names Shift, Clinician, and Swap, with Verbs such as Shift.assign and Swap.request.

Add Swap.approve to the definition, and one merge produces its API route, SDK method, CLI command, and MCP call. The same merge adds the App's button, the webhook Event, and the reference row. No Interface carries a second definition, so no two Interfaces disagree.

Rules live in Verbs

A rule belongs to the Verb that enforces it, never to a field or a screen. Swap.approve is legal only from requested, and only when the incoming clinician holds the license the shift requires. A call that breaks a rule returns a refused Action naming the rule, on every Interface.

Every call becomes an Action: pending, done, failed, canceled, or refused. The Action records who acted, for whom, and on which Thing at which Version. A Dashboard, a webhook, and an audit read that one record.

The Function behind a Verb never shows. Code, a model, an Agent, or a person can run Swap.approve, and the caller sees the same Action either way.

Stateful and stateless

Stateful Software owns records and moves them through their lifecycles. A Swap keeps its history from requested to approved or declined.

A stateless Verb transforms an input and stores nothing: Roster.optimize takes a week of shifts and returns a better assignment. A lookup against reference data looks the same on the wire. It belongs to a Dataset, which owns the truth of the answer.

Classify a Verb by who owns the truth, never by its URL. A stateless Verb states its transformation and its errors. A stateful Verb states its preconditions and its effects.

Tenants and Entitlements

Every Customer gets its own Tenant, created by provision when it accepts an Offer. The Tenant holds that Customer's records apart from every other Customer's. No Verb reads across Tenants.

An Entitlement grants one Verb on one Noun inside the Tenant, and a Limit can bound it. clinicshift.app's starter Offer grants Shift.assign for up to 40 clinicians. The 41st assignment waits on an Approval for the clinic's owner.

A Meter counts done Actions only. A refused or failed call never reaches an invoice.

Apps on the same API

An App is an Interface with screens over the same API, never a Product of its own. Each App serves declared Personas: clinicshift.app has one App for clinic managers and one for clinicians on their phones.

SoftwareBuilder compiles an App from its Personas and the Verbs each one may run. A screen's buttons are the record's available Verbs for that caller, so an App never holds a rule the API lacks. A button and an Agent's call always agree.

One address serves three renderings: HTML for the App, JSON for code and native clients, and Markdown for an Agent's context. The record behind all three is the same.

Product Templates

Three Product Templates start a Software Product with its Nouns, Verbs, and Offers in place.

Product TemplateWhat it sells
Headless SaaSSoftware with no App, for developers and their Agents
SaaSHeadless SaaS plus an App, seats, and onboarding
MarketplaceMatching buyers with Suppliers, for a take rate

Next

Datasets covers the Product that sells the truth of its records.