Idiosyncrasy — Technical Architecture & Data Model
Provisional v0.2 — September 2026
1. Architectural objective
Idiosyncrasy must provide a generic, extensible runtime capable of representing different businesses without requiring a bespoke codebase for each customer.
The architecture should favour:
- readable configuration
- addressable objects
- deterministic execution
- reusable engines
- explicit relationships
- versioning
- auditability
- extensibility
- AI independence
AI generates or modifies configuration where useful; the runtime executes the resulting configuration deterministically.
2. Core conceptual layers
Layer A — Identity and tenancy
Provides:
- users
- organisations/tenants
- roles
- permissions
- authentication
- membership
- audit context
Layer B — Business model
Defines:
- object types
- properties
- relationships
- statuses
- rules
- business terminology
- configuration
Layer C — Business data
Contains instances of the business model:
- customers
- products
- projects
- tasks
- orders
- documents
- etc.
Layer D — Knowledge
Stores information that cannot or should not be forced into ordinary structured properties.
Layer E — Events and workflows
Defines what happens when business events occur.
Layer F — Presentation
Generates:
- forms
- lists
- dashboards
- pages
- portals
- websites
- navigation
Layer G — Integrations
Connects external services.
Layer H — Intelligence
AI can reason over the preceding layers and propose or perform permitted actions.
3. Universal `id + type + value` primitive
The id + type + value primitive is the foundational data model for Idiosyncrasy. It applies to all persistent and addressable platform data, not only ordinary business records.
Conceptually:
{
id: <unique address>,
type: <semantic type>,
value: <typed/configured value>
}
Examples include:
- Customer
- Person
- Organisation
- Product
- Service
- Project
- Document
- Campaign
- Workflow
- Workflow node
- Knowledge item
- Event
- Rule
- Policy
- Constraint
- Goal
- Decision
- Relationship
- UI/view definition
- Integration configuration
- Business-model definition
- Business terminology
- Business DNA information
There must not be separate foundational schemas for these categories. They are all addressable instances of the same primitive.
3.1 Type provides meaning
type identifies what an object means; value contains its typed/configured content. The runtime may use type definitions to validate and interpret the value, but type definitions are themselves addressable objects using the same primitive.
A type definition may describe:
- valid value structure
- required/optional properties
- property types
- permitted relationships
- validation rules
- lifecycle/state behaviour
- permissions
- UI representation
- workflow capabilities
- inheritance/composition where supported
This provides schema and strong validation without making the underlying platform schema rigid.
3.2 Structured Retrieval First
The type property is a first-class structural property of every addressable object and therefore a primary indexing and retrieval dimension. The retrieval system must use it to narrow candidate objects before applying more expensive retrieval techniques.
However, type is not the only retrieval dimension. Idiosyncrasy should exploit all deterministic structure available in the Business Graph. Where useful and technically appropriate, the retrieval layer should index and use:
- object type
- type relationships and semantic classifications
- graph relationships and relationship endpoints
- state and status
- timestamps and effective dates
- ownership and responsibility
- source and provenance
- authority/confidence
- permissions and access context
- other deterministic properties suitable for indexing
- semantic/vector representations where structural retrieval is insufficient
Retrieval should therefore progressively reduce the candidate set rather than treating the Business Graph as an undifferentiated corpus.
A conceptual retrieval pipeline is:
Query interpretation
↓
Type / type-family identification
↓
Relationship and graph constraints
↓
State / property / time / permission filtering
↓
Semantic or vector retrieval where required
↓
Context assembly
For example, a request such as “Which outstanding orders does Acme have from this quarter?” should first identify the relevant Customer and Order types, locate Acme's Customer object, traverse the relevant relationships, then constrain Orders by state and time. Semantic retrieval should only be introduced where it adds value.
The system should therefore not perform broad semantic or vector searches across all platform data when deterministic structure can answer or substantially narrow the query. This improves performance, predictability, relevance and cost.
Indexes are retrieval infrastructure derived from the universal object model; they are not alternative data models. A new object type must be able to participate in the retrieval system without requiring a new foundational database schema.
3.3 No special-case object model
Conceptual distinctions such as Business Graph Object, Business DNA record, Knowledge Item, Rule or Goal are semantic classifications, not competing storage primitives.
For example:
Customer = id + type + value
Goal = id + type + value
Decision = id + type + value
Knowledge = id + type + value
Workflow = id + type + value
Relationship = id + type + value
The Business Graph is therefore the connected set of addressable objects and relationships, rather than a separate object schema. Business DNA is the business-specific semantic/configuration model expressed through the same underlying objects.
3.3 Extensibility consequence
A new business concept does not normally require a database redesign. A new type can be introduced, its type definition created, and its relationships and behaviour configured.
A new engine is only required when genuinely new reusable execution behaviour is needed; a new data concept alone is not sufficient justification.
3.4 Scalar values remain valid
The universal primitive does not prohibit scalar values. A value inside an object may contain strings, numbers, booleans, dates, arrays or structured values where appropriate. The rule concerns the addressable unit of platform data: anything that needs identity, reuse, relationships, provenance, history or independent lifecycle should be represented as an addressable id + type + value object rather than an anonymous repeated record.
4. Addressable object principle
Business entities should be addressable objects rather than anonymous repeated values wherever identity, reuse or relationships matter.
Examples:
- Customer
- Person
- Organisation
- Product
- Service
- Project
- Document
- Campaign
- Workflow
- Knowledge item
A property may still contain a scalar value when identity is not required.
The objective is a coherent graph of business information rather than an arbitrary collection of disconnected fields.
5. Relationships
Relationships are first-class addressable data. They follow the same id + type + value primitive when they require their own identity, metadata, lifecycle, provenance or history.
Examples:
- Person belongs to Organisation
- Customer owns Project
- Project contains Task
- Campaign targets Customer Segment
- Document relates to Project
- Knowledge Item applies to Product
- Workflow operates on Order
Relationships should themselves be addressable where useful because they may eventually carry:
- metadata
- dates
- roles
- permissions
- state
- history
6. Knowledge Engine
Knowledge is a first-class platform primitive.
It exists because useful business information is not always naturally representable as a database value.
Knowledge may include:
- text
- documents
- policies
- procedures
- explanations
- notes
- decisions
- experiences
- observations
- preferences
- historical information
- contextual information
- external reference material
A knowledge item should support concepts such as:
- unique identity
- title
- content
- type
- source/provenance
- author/owner
- creation date
- update date
- status
- effective date
- expiry/review date
- confidence where appropriate
- permissions
- relationships to objects
- relationships to other knowledge
The implementation may use multiple storage/indexing mechanisms. The conceptual model must remain unified.
7. Knowledge versus structured data
Do not force every knowledge item into a property.
For example:
Structured: > Customer.preferred_contact_method = telephone
Knowledge: > "John prefers telephone because he is rarely at his desk and normally responds immediately when called."
The second may later generate a suggestion:
> "This preference has been repeatedly observed. Convert it into a structured customer property?"
The platform therefore supports an evolutionary path:
> Unstructured observation → Knowledge → Repeated pattern → Suggested structure → Structured business data
This is an important self-evolution mechanism.
8. Knowledge provenance
Knowledge must not be treated as equally authoritative.
The system should distinguish, where appropriate:
- company policy
- approved documentation
- user-entered knowledge
- observed behaviour
- imported information
- AI-generated suggestion
- inferred information
AI-generated information should not automatically become authoritative business knowledge.
The system should preserve source and confidence/provenance where practical.
9. Events
Business events should be first-class addressable objects using the same id + type + value primitive. Event payloads, provenance, timestamps and related objects are represented within the event value and/or through relationships.
Examples:
- customer.created
- enquiry.received
- quote.accepted
- order.created
- payment.received
- task.completed
- document.uploaded
- knowledge.updated
Events allow engines to remain loosely coupled.
10. Workflow model
A workflow is an addressable object using the universal primitive. Its readable configuration describes its triggers, conditions, actions, transitions and outcomes. Workflow nodes and other independently addressable components use the same primitive.
Conceptually:
> Trigger → Conditions → Actions → Outcomes
Actions may include:
- create object
- update object
- relate objects
- send communication
- create task
- wait
- request approval
- call integration
- generate content
- invoke AI
- create notification
- branch
- record outcome
Workflows should be deterministic unless an explicitly configured AI action is involved.
11. Configuration
Configuration is also platform data and must use the universal primitive where it is addressable. Configuration should be:
- serialisable
- versionable
- human-readable
- AI-readable
- schema-validatable
- executable by the runtime
AI should manipulate configuration rather than directly rewriting arbitrary application code whenever possible.
12. Engine architecture
Engines should expose stable capabilities to the rest of the platform.
Initial engine set:
1. Identity/Permission Engine 2. Object/Data Engine 3. Relationship Engine 4. Event Engine 5. Workflow Engine 6. Knowledge Engine 7. Content Engine 8. View/UI Engine 9. Communication Engine 10. Integration Engine 11. Analytics Engine 12. Automation/Scheduling Engine 13. AI/Intelligence Layer
Not every engine needs to be a separate service. The distinction is architectural and conceptual first.
13. New engines
The platform must support future engine introduction.
Before creating a new engine, determine whether the requirement can be represented through existing primitives.
A new engine is justified when:
- the behaviour is materially distinct
- it requires reusable execution logic
- configuration alone is insufficient
- multiple capabilities can benefit from it
Engine creation should be:
- versioned
- tested
- permission-aware
- observable
- documented
- compatible with existing business models where possible
AI can assist in designing an engine, but production engine changes should pass controlled validation.
14. Application generation
An application is a projection of the business model.
The system should be able to generate or configure:
- navigation
- forms
- tables
- cards
- detail pages
- dashboards
- workflows
- reports
- portals
- website pages
The same underlying objects should be usable by multiple capabilities.
For example, the Customer object may appear in:
- CRM
- sales
- marketing
- projects
- support
- reporting
- website forms
This is a major reason for maintaining a shared business model.
15. AI architecture
AI should sit above the business platform rather than replace it.
AI receives controlled access to:
- business model
- authorised data
- knowledge
- workflows
- configuration
- analytics
AI may return:
- answers
- content
- recommendations
- configuration changes
- workflow definitions
- proposed new objects/properties
- proposed knowledge
- proposed optimisations
The platform validates and executes these outputs.
16. Evolution engine
A future Evolution/Optimisation layer should monitor:
- workflow performance
- user behaviour
- repeated actions
- exceptions
- data quality
- unused features
- customer behaviour
- marketing performance
- operational metrics
It generates candidate improvements.
Example:
> Observation: users manually create the same three tasks after every sale.
> Suggestion: create an automated post-sale workflow.
> Approval: manager approves.
> Change: workflow becomes active.
> Measurement: compare process duration before and after.
This creates a closed improvement loop without requiring autonomous uncontrolled modification.
17. Architectural test
For any proposed feature, ask:
1. Can the data be represented using the existing id + type + value primitive? 2. Can an existing type definition express the required structure and validation? 3. Can existing relationships represent the required connections? 4. Can an existing engine support the behaviour? 5. Is it simply new configuration or a new type? 6. Does it belong in a reusable capability? 7. Does it genuinely require a new engine?
This should prevent premature proliferation of modules and engines.