theopenerp (Project X) is an AI Business Systems Engineer. It helps people turn business requirements into working business systems through conversation. The product's central promise is a disciplined one: a person describes their business and its processes in plain language, an AI Business Analyst asks relevant follow-up questions, and the platform produces a structured, runtime-validated Business System Specification (BSS) that becomes the canonical definition of the business system. The user then reviews and edits a readable Business Blueprint derived from that specification and explicitly approves a version.
This document specifies the first functional stage of theopenerp: onboarding, organizations, projects, AI conversation, structured BSS generation, blueprint review and editing, approval, and version history. It also specifies the extension points that later stages (application generation, deployment, maintenance) will attach to — without claiming those later capabilities already work.
The audience is the people who define business systems: business owners and operators who know their processes but not software architecture, and business systems engineers/builders who define systems across multiple organizations and projects. theopenerp is a platform capable of defining many business systems. It is not a timesheet application and not a generic chatbot.
theopenerp is a responsive web application delivered as a modular repository. The current stage covers the full definition lifecycle from first sign-in to an approved specification version:
Actors. The accepted active human personas are the Business Owner / Operator and the Business Systems Engineer / Builder. The AI Business Analyst is a system-side capability (server-side Gemini adapter), not a human persona. Google is the identity provider; Gemini is the AI provider. Both are non-persona actors.
Ownership and boundaries. Chat is an input to the BSS definition, not a direct instruction to generate or deploy arbitrary production code. The BSS is canonical; the approved version is the artefact of record. Application generation, deployment, and maintenance are future stages and are represented only as clearly labelled, non-functional extension points.
Narrow exclusions for this build. Billing, GitHub App integration, customer Google Sheets/Apps Script deployment, Gmail/Calendar integrations, and autonomous production changes are not implemented and are not advertised as functional.
theopenerp is delivered as a first-party web application with application-owned identity. Google sign-in is the accepted identity mechanism; the application owns the user record, organization membership, project membership, conversations, specifications, blueprints, approvals, versions, and activity that follow from it. Because organizations, projects, specifications, and approvals are durable, actor-specific state that must remain bound to the correct participant, identity continuity is indispensable: the landing page is anonymous, sign-in is anonymously reachable, and every protected destination requires an established identity.
The current delivery boundary is the definition stage. Everything the platform does today ends at an approved specification version. The pipeline is drawn honestly on screen: Conversation → BSS → Blueprint → Approval are live; Application, Deployment, and Maintenance are drawn in muted grey with a "not yet available" caption. No screen claims a capability that is not wired.
Server-side execution is required for accounts, organizations, projects, conversations, BSS validation, blueprints, approvals, versions, and activity. The Gemini API is called exclusively from the server; no provider credential is ever exposed to the browser, source code, or chat. If the environment cannot support a preferred component (for example a managed PostgreSQL instance or a specific auth provider), the closest portable supported approach is chosen and the difference is explained — the platform never pretends an unsupported database, server function, authentication provider, or integration is connected.
Not applicable. No reference directive in this project declares content_source; all product facts derive from the authoritative user requirement thread and the accepted Planning Scope.
Each requirement is a distinct story point with provenance, lifecycle facts, and observable acceptance. Provenance is explicit (stated in the authoritative thread), basic_default (accepted default), or required_inference (indispensable inferred mechanics).
FR-1 — Anonymous product entry. As a visitor, I should see a restrained landing page that explains theopenerp, its intended users, and its conversational business-system definition workflow, so that I understand what the product does before signing in. Provenance: explicit. Trigger: visiting the landing page. Observable result: the page renders the headline, the pipeline diagram with future stages muted and captioned "not yet available", and the category tiles. Access state: anonymous. Failure/recovery: if the sign-in route is unreachable, the CTA shows an inline message and remains retryable. Continuation: the visitor proceeds to Sign-in.
FR-2 — Google sign-in. As a user, I should sign in with Google so that my organizations, projects, specifications, and activity are bound to my identity. Provenance: explicit. Trigger: activating "Sign in with Google". Observable result: identity is established and the user is routed to Onboarding (first use) or the Organization/project dashboard (returning). Access state: anonymous entry, protected state unavailable until identity is established. Failure/recovery: provider denial, cancellation, or misconfiguration shows a specific, non-secret message; retry is available. Continuation: onboarding or dashboard.
FR-3 — First-use onboarding. As a newly signed-in user, I should complete onboarding so that I have an organization context for my projects. Provenance: explicit. Trigger: first successful sign-in. Observable result: an organization is created and the user is routed to the dashboard with an honest empty state. Access state: login required. Failure/recovery: validation or persistence failure shows a field-level or page-level message; no partial state is left behind. Continuation: create the first project.
FR-4 — Organization and project dashboard. As a user, I should see my organizations and their projects with each project's specification status and last activity, so that I can route into active project work. Provenance: explicit. Trigger: opening the dashboard. Observable result: projects are listed as a ruled table with truthful status. Access state: login required. Failure/recovery: load failure shows a retryable message. Continuation: open a project or start a new one.
FR-5 — New-project flow with guiding categories. As a user, I should create a project guided by the initial system categories — CRM, Quotation management, Task and workflow management, Timesheet management, Simple order management, Custom business systems — so that discovery is guided without being restricted to rigid templates. Provenance: explicit. Trigger: starting the New-project flow. Observable result: a project is created with a name, a guiding category, and an initial description, and the user enters its Project workspace. Access state: login required. Failure/recovery: validation or persistence failure; no partial project is created. Continuation: begin the conversation.
FR-6 — Business and process description. As a user, I should describe my business and processes in the Conversation panel so that the AI Business Analyst has the input it needs. Provenance: explicit. Trigger: sending a message. Observable result: the message is appended to the thread with author and timestamp. Access state: project access. Failure/recovery: send failure preserves the user's input and offers retry. Continuation: the AI Business Analyst responds.
FR-7 — AI Business Analyst follow-up questions. As a user, I should receive relevant follow-up questions from the AI Business Analyst after describing my business and processes, so that the specification captures what I actually mean. Provenance: explicit. Trigger: a user message in the conversation. Observable result: the AI Business Analyst's follow-up questions appear as messages, with a stepped three-dot thinking indicator while the response is produced. Access state: project access; server-side Gemini configuration required. Failure/recovery: provider failure shows a specific message and preserves the thread. Continuation: answer the questions or request BSS generation.
FR-8 — Structured BSS generation. As a user, I should have the AI create a structured Business System Specification from the conversation so that the business system has a canonical definition. Provenance: explicit. Trigger: requesting generation from the Conversation panel. Observable result: a structured BSS is produced and runtime-validated against the specification schema. Access state: project access; server-side Gemini configuration required. Failure/recovery: schema validation failure blocks canonicalization and reports which fields failed. Continuation: review the blueprint.
FR-9 — Runtime-validated canonical specification. As a user, I should have the BSS validated at runtime before it becomes canonical, so that the definition of record is structurally sound. Provenance: explicit. Trigger: BSS generation or blueprint save. Observable result: only a schema-valid specification becomes canonical; invalid specifications are rejected with field-level detail. Access state: project access. Failure/recovery: the previous valid version remains intact and reachable. Continuation: correct the failing fields and re-save.
FR-10 — Readable Business Blueprint. As a user, I should review a readable Business Blueprint derived from the canonical BSS, so that I can read the specification as a document of record rather than a chat transcript. Provenance: explicit. Trigger: opening the Business Blueprint panel. Observable result: numbered sections render as ruled tables of Field / Type / Required / Notes with tabular figures. Access state: project access. Failure/recovery: blueprint load failure is isolated to the panel and retryable. Continuation: edit inline.
FR-11 — Blueprint editing. As a user, I should edit the Business Blueprint inline and save my edits as a new specification version, so that the canonical definition reflects my corrections. Provenance: explicit. Trigger: editing a blueprint cell and saving. Observable result: a new specification version is written and the panel's status bar reports the new state. Access state: project access. Failure/recovery: validation failure blocks the save and reports the failing fields; the previous version remains intact. Continuation: approve the version or continue editing.
FR-12 — Explicit version approval. As a user, I should explicitly approve a version, so that the approved specification is the artefact of record and chat is never treated as the instruction. Provenance: explicit. Trigger: activating the approve control on a valid version. Observable result: the version is marked approved with author and timestamp, and the panel's status bar turns black. Access state: project access. Failure/recovery: approval is blocked while the specification is schema-invalid. Continuation: the approved version becomes the input for later stages.
FR-13 — Version history and activity. As a user, I should see specification and blueprint versions together with project activity, so that I can track what was approved and what changed. Provenance: explicit. Trigger: opening Version history and activity. Observable result: a ruled ledger lists version number, status, author, timestamp, and delta summary, with the approved version marked by the orange bar and every earlier row reachable. Access state: project access. Failure/recovery: load failure shows a retryable message; the ledger is read-only. Continuation: inspect a version or return to the workspace.
FR-14 — Project settings. As a user, I should configure project-specific settings and boundaries, so that the project's definition context is correct. Provenance: explicit. Trigger: opening Project settings. Observable result: project name, guiding category, description, and boundaries are saved and reflected in the workspace. Access state: project access. Failure/recovery: validation or persistence failure. Continuation: return to the workspace.
FR-15 — Organization settings. As a user, I should configure organization-level settings and administration, so that the organization context for its projects is correct. Provenance: explicit. Trigger: opening Organization settings. Observable result: organization name and details are saved; the organization's projects are listed. Access state: organization access. Failure/recovery: validation or persistence failure. Continuation: open a project or return to the dashboard.
FR-16 — Honest extension points. As a user, I should see the future stages — application generation, deployment, and maintenance — drawn as clearly labelled, non-functional extension points, so that I am never sold a capability that does not exist. Provenance: explicit. Trigger: viewing the landing page or Project workspace. Observable result: the pipeline diagram shows Conversation → BSS → Blueprint → Approval live and Application · Deployment · Maintenance muted with a "not yet available" caption. Access state: any. Failure/recovery: not applicable. Continuation: none.
FR-17 — No fabricated account content. As a user, I should never see fake customers, fake conversations, or fake deployed apps in a new account, so that I can trust that everything shown is real. Provenance: explicit. Trigger: any first-use state. Observable result: empty states are honest bordered panels with a one-line instruction and a single action; any optional sample content is clearly labelled and separated from real data. Access state: any. Failure/recovery: not applicable. Continuation: create real content.
FR-18 — Server-only AI provider access. As a user, I should have all Gemini API calls made exclusively from the server, so that no provider credential is ever exposed to the browser, source code, or chat. Provenance: explicit. Trigger: any AI interaction. Observable result: the browser never receives a provider credential; AI responses arrive through server-side adapters. Access state: project access. Failure/recovery: missing server-side configuration surfaces as an explicit configuration limitation, not a silent failure. Continuation: the operator supplies configuration outside the browser.
FR-19 — Modular separation of concerns. As a builder, I should have presentation, business logic, AI provider adapters, specification schema and validation, database access, and future application builders and deployment adapters kept separate, so that later stages can attach without rewriting the definition stage. Provenance: explicit. Trigger: development. Observable result: the repository is modular (for example apps/web and packages/bss, ai, agents, shared). Access state: not applicable. Failure/recovery: not applicable. Continuation: future stages attach at the defined extension points.
FR-20 — Truthful capability reporting. As a user, I should receive a report of what actually works, what is incomplete, and any configuration I must supply, so that I know the real state of the system. Provenance: explicit. Trigger: completion of the build. Observable result: a report distinguishes working capabilities, incomplete work, and required configuration. Access state: not applicable. Failure/recovery: not applicable. Continuation: the operator supplies the listed configuration.
FR-21 — Organization and project membership authorization. As a user, I should only reach project work for organizations and projects I belong to, so that protected state remains bound to the correct participant. Provenance: required_inference. Trigger: navigating to a protected destination. Observable result: access is granted only for the user's organizations and projects; protected state is unavailable until identity and membership are established. Access state: login required. Failure/recovery: unauthorized access is refused with a clear message and a route back to the dashboard. Continuation: the user selects a project they belong to.
FR-22 — Approved version as the future-stage input. As a builder, I should have the approved specification version be the only input later application-generation, deployment, and maintenance stages consume, so that the canonical definition remains the single source of truth. Provenance: required_inference. Trigger: a future stage attaching to the extension point. Observable result: the approved version is the referenced artefact; unapproved drafts are not consumed. Access state: not applicable in this stage. Failure/recovery: not applicable in this stage. Continuation: future stages are implemented in later builds.
Product context. This persona runs a business and knows its processes in operational detail, but does not think in software architecture. They arrive at theopenerp with a process in their head — how quotes get approved, how jobs get scheduled, how orders move — and need it captured accurately without learning a modelling language.
Primary goal. Produce an approved specification that canonically defines their business system, so that the system they eventually get actually matches how their business works.
Distinct accepted responsibilities. Describes the business and its processes in the Conversation panel; answers the AI Business Analyst's relevant follow-up questions; reviews the readable Business Blueprint; edits blueprint content inline where the AI has misread the business; explicitly approves a version; relies on version history to track what was approved.
Relevant inputs and decisions. Plain-language descriptions of business processes; corrections to field names, types, and required flags in the blueprint; the decision to approve a specific version.
Interactions with other accepted participants. Works with the AI Business Analyst (system-side) through the Conversation panel. May share an organization with a Business Systems Engineer / Builder who created the project; the owner's contribution is the domain truth, the builder's is the structure.
Observable success. An approved specification version exists, is marked approved with author and timestamp, and is reachable in the version ledger. The owner can point at the approved version and say "that is my business."
What makes this role different. The owner supplies domain truth and holds approval authority over meaning. They are not primarily concerned with repository structure, category selection, or organization administration — they are concerned with whether the specification describes their business correctly.
Product context. This persona defines business systems for others, often across multiple organizations and projects. They are comfortable with structured specifications, versioning, and the difference between a draft and an approved artefact. They treat theopenerp as an instrument for producing a definition of record.
Primary goal. Produce a reviewed, approved specification ready for later application generation stages, and keep multiple projects organized across organizations.
Distinct accepted responsibilities. Creates new projects using the initial system categories as guidance; drives the AI conversation; refines the Business Blueprint; manages approval and version history; configures project and organization settings; works across multiple organizations and projects.
Relevant inputs and decisions. Project names, guiding category selection, initial descriptions, blueprint structural edits, approval decisions, project and organization settings.
Interactions with other accepted participants. Works with the AI Business Analyst (system-side) to generate and validate the BSS. May work alongside a Business Owner / Operator who supplies domain truth; the builder structures it and manages the project and organization context.
Observable success. Multiple projects exist across organizations, each with a truthful specification status; at least one project has an approved version ready for later stages; project and organization settings reflect the real boundaries.
What makes this role different. The builder owns structure, organization, and the readiness of the specification for downstream stages. They are the persona who cares that the pipeline diagram is honest, that the extension points are real, and that the approved version is the only thing later stages will consume.
The creative direction is authoritative for this section: Less, but better — a specification instrument after Dieter Rams. The register is engineering trust, not marketing hype. The emotional target is calm authority — an instrument panel, not a landing page.
Mode. Light mode is the primary and only specified mode.
Colour tokens by role.
| Role | Token | Value |
|---|---|---|
| Background (page ground) | --color-bg | #F2F0EC |
| Surface (functional panels) | --color-surface | #FFFFFF |
| Text (primary) | --color-text | #171614 |
| Primary (controls, rules, active nav) | --color-primary | #171614 |
| Accent (single signal colour) | --color-accent | #E8590C |
| Muted (metadata, timestamps, hints, disabled) | --color-muted | #7A756C |
| Hairline border | --color-border | #D8D3CB |
Warm off-white #F2F0EC carries the page; pure white #FFFFFF is reserved for functional panels — the conversation thread, the blueprint sheet, the spec table — so surfaces read as instruments placed on a workbench. Near-black #171614 is both text and the primary control colour. Braun orange #E8590C is the single signal accent and is rationed hard: approval state, the currently focused version, the one live CTA per screen, and the strip that marks a spec as "unapproved draft". Muted warm grey #7A756C handles metadata, timestamps, field hints, and disabled controls. No second accent, no gradients, no tinted backgrounds behind text.
Contrast. #171614 on #F2F0EC ≈ 15:1. #7A756C on #FFFFFF ≈ 4.7:1 (metadata only, never body copy). #E8590C on #FFFFFF ≈ 4.0:1, so orange is used for fills, rules, and icons, never for small text on white.
Typography. One grotesque family for the whole system, differentiated by weight and case rather than by a second face.
-0.02em tracking, flush-left ragged-right alignment. No centred headings anywhere.+0.08em letterspacing, functioning as the panel's engraved legends.Shape language. Rectangles with a single 4px radius on controls and 6px on panels — enough to read as machined, not soft. 1px hairline borders in #D8D3CB define every panel, table row, and input; nothing floats on shadow. Buttons are solid #171614 with white labels; secondary buttons are white with a hairline border; the one orange action is solid #E8590C. Toggle groups and segmented controls are physically joined (shared borders, no gaps) so the selected state reads as a switch thrown, not a pill highlighted. Status is carried by a 3px full-width colour bar at the top edge of a panel, never by a rounded badge.
Spacing rhythm. 4pt baseline grid; panel padding on a 16/24/32 rhythm; hairline rules separate every table row and panel section.
Imagery style. No photography, no illustration, no 3D. The imagery is the product's own machinery: ruled specification tables, the field/type/required grid, numbered blueprint sections, a version ledger, and schematic diagrams that show the pipeline — Conversation → BSS → Blueprint → Approval → (Application · Deployment · Maintenance, drawn in hairline grey with a "not yet available" caption). Category cards for CRM, Quotation, Task & Workflow, Timesheet, Orders, and Custom are typographic tiles with a single hairline pictogram each, drawn on a 24px grid at 1.5px stroke.
The instrument panel that tells the truth.
The landing page opens as an instrument panel, not a marketing hero. Full-width warm off-white ground (#F2F0EC). Across the top, a 1px black rule at 12px from the edge with the wordmark left and sign-in right. Below it, a 12-column asymmetric composition: columns 1–7 carry an oversized flush-left headline, "Turn a business process into a specification.", set at 40px mobile / 56px desktop in Archivo 700 with tight tracking, wrapping to four lines. Columns 9–12 hold a live, real, bordered diagram — the pipeline as four hairline-bordered boxes stacked vertically with connecting rules, the first three in black and the last two (Application, Deployment) drawn in #7A756C with a small-caps "not yet available" label. Under the headline, one solid #171614 button ("Sign in with Google") and one text link ("See how the BSS works"). No gradient, no blob, no centred stack, no hero image. The only orange on the screen is a 3px vertical bar beside the active pipeline stage.
The concept extends into the workspace as the signature layout: a hard 50/50 split at 1280px between the Conversation panel (left, white surface, messages as left-aligned blocks with speaker labels in small caps) and the Business Blueprint panel (right, white sheet on the grey ground, sections as numbered ruled tables of field/type/required/notes). Conversation on the left is visibly an input; the blueprint on the right is visibly the artefact. The blueprint is rendered as a ruled specification sheet — each section a numbered table with hairline row rules and tabular figures, editable inline — so the canonical BSS is read as a document of record rather than a chat transcript. Status is carried by a 3px full-width colour bar at the top edge of every panel — grey for draft, orange for unapproved, black for approved — so approval state is legible from across the room. Version history is a ledger: aligned columns of version number, status, author, timestamp, and delta summary, with the approved row marked by the orange bar and every earlier row reachable, making "chat is not the instruction, the approved version is" a visible fact.
Interaction Model: Static Motion Tempo: restrained Hero Dimensionality: flat
Landing Hero Motion Brief.
#7A756C with a "not yet available" caption. The 3px orange vertical bar marks the active stage.prefers-reduced-motion, the hero rule appears fully drawn with no animation, the stepped thinking indicator holds a static frame, and all state changes remain instantaneous. No content is hidden or cropped; every readable element stays whole at 375px, 768px, and 1280px.NFR-1 — Server-only AI provider access. The Gemini API is called exclusively from the server. No provider credential is ever placed in chat, source code, or browser-visible configuration. Provenance: explicit. Rationale: the authoritative thread states this as a hard constraint.
NFR-2 — Runtime-validated structured specifications. Every BSS is validated against the specification schema at runtime before it can become canonical or be approved. Provenance: explicit. Rationale: the BSS is the canonical definition; invalid specifications must not become the artefact of record.
NFR-3 — Modular separation of concerns. Presentation, business logic, AI provider adapters, specification schema and validation, database access, and future application builders and deployment adapters are kept separate. Provenance: explicit. Rationale: later stages must attach at defined extension points without rewriting the definition stage.
NFR-4 — Truthful capability reporting. The system never claims a capability that is not wired. Excluded features are not advertised as functional; future stages are drawn as muted, captioned extension points. Provenance: explicit. Rationale: the audience is engineering-trust-oriented and must be able to see what is real.
NFR-5 — No fabricated account content. A new account is never populated with fake customers, fake conversations, or fake deployed apps. Any optional sample content is clearly labelled and separated from real data. Provenance: explicit. Rationale: trust in the definition of record depends on the absence of fabricated data.
NFR-6 — Responsive, accessible interface. The application is polished and responsive with clear typography, accessible components, and helpful empty states. Readable text and controls stay whole at 375px, 768px, and 1280px, wrapping or scaling to fit, and no other element covers any part of them. Provenance: explicit. Rationale: the authoritative thread requires a polished, responsive application with accessible components.
NFR-7 — Professional, calm visual design. The visual design is professional and calm, focused on usability rather than decorative marketing effects. Provenance: explicit. Rationale: the authoritative thread states this directly.
NFR-8 — Durable application state. Accounts, organizations, projects, conversations, BSS validation results, blueprints, approvals, versions, and activity are durably persisted so that actor-specific state remains bound to the correct participant and can be resumed. Provenance: required_inference. Rationale: the accepted journeys require resumable, correctly bound state.
NFR-9 — Environment capability honesty. If the environment cannot support a preferred component, the closest portable supported approach is chosen and the difference is explained. The system never pretends an unsupported database, server function, authentication provider, or integration is connected. Provenance: explicit. Rationale: the authoritative thread requires this inspection and honesty.
NFR-10 — Secret hygiene. Secrets are never placed in chat, source code, or browser-visible configuration. Configuration the operator must supply is reported as a requirement, not as a value. Provenance: explicit. Rationale: the authoritative thread states this as a hard constraint.
Source-specified choices are preserved exactly. Where the environment cannot support a preferred component, the closest portable supported approach is chosen and the difference is explained.
apps/web and packages/bss, ai, agents, shared. Provenance: explicit.apps/web. Provenance: explicit.packages/ai. Provenance: explicit.packages/bss. Provenance: explicit.Assumptions.
Constraints.

The pipeline
Conversation is the input. The Business System Specification is the canonical definition. The approved Blueprint version is the instruction — nothing downstream is claimed that is not wired.
Application, Deployment and Maintenance are planned extension points. They are not yet available — they will consume an approved specification in later development stages.
Where a specification can begin
These categories steer the questions the analyst asks. They are starting points for discovery, not fixed templates — a project can be described across several of them, or from none of them at all.
Contacts, accounts and activity.
01
Draft, review and issue quotes.
02
Assignments, states and handoffs.
03
Time entries against work.
04
Order capture and fulfilment steps.
05
A system described from scratch.
06

The pipeline
Conversation is the input. The Business System Specification is the canonical definition. The approved Blueprint version is the instruction — nothing downstream is claimed that is not wired.
Application, Deployment and Maintenance are planned extension points. They are not yet available — they will consume an approved specification in later development stages.
Where a specification can begin
These categories steer the questions the analyst asks. They are starting points for discovery, not fixed templates — a project can be described across several of them, or from none of them at all.
Contacts, accounts and activity.
01
Draft, review and issue quotes.
02
Assignments, states and handoffs.
03
Time entries against work.
04
Order capture and fulfilment steps.
05
A system described from scratch.
06
No comments yet. Be the first!