AI Unified Process - stack-agnostic core methodology (requirements, entity model, use cases)
92
95%
Does it follow best practices?
Impact
92%
1.29xAverage score across 12 eval scenarios
Low
Low-risk findings worth noting
Create or update the entity model at docs/entity_model.md based on docs/requirements.md.
The document contains an ER diagram and attribute tables.
# Entity Model
## Entity Relationship Diagram
```mermaid
erDiagram
ROOM_TYPE ||--o{ ROOM : "categorizes"
GUEST ||--o{ RESERVATION : "makes"One sentence describing the entity.
| Attribute | Description | Data Type | Length/Precision | Validation Rules |
|---|---|---|---|---|
| id | ... | Long | 19 | Primary Key, Sequence |
| ... | ... | ... | ... | ... |
Every entity MUST have:
### ROOM_TYPE — never ### Room Type or ## Entity: Room Type)Defines categories of rooms with shared characteristics.
| Attribute | Description | Data Type | Length/Precision | Validation Rules |
|---|---|---|---|---|
| id | Unique identifier | Long | 19 | Primary Key, Sequence |
| name | Name of the room type | String | 50 | Not Null, Unique |
| description | Detailed description | String | 500 | Optional |
| capacity | Maximum number of guests | Integer | 10 | Not Null, Min: 1, Max: 10 |
| price | Price per night in CHF | Decimal | 10,2 | Not Null, Min: 0 |
ENTITY_A ||--o{ ENTITY_B : "relationship"The Data Type column must use exactly these values — never SQL or ORM types such as VARCHAR, TEXT, CHAR, bigint, numeric, serial, smallint, UUID, Timestamp, or Enum:
| Data Type | Length/Precision | Usage |
|---|---|---|
| Long | 19 | IDs, foreign keys |
| String | varies (50-500) | Text fields |
| Integer | 10 | Whole numbers |
| Decimal | 10,2 | Currency, percentages |
| Boolean | 1 | True/false flags |
| Date | - | Date only |
| DateTime | - | Date and time |
The Length/Precision column holds the bare value (e.g. 10,2) — never a type
expression like DECIMAL(10,2).
Compose every Validation Rules cell from this vocabulary, using the exact wording — never a prose description, and never an empty cell, dash, or "N/A":
| Attribute Type | Validation Rules Value |
|---|---|
| Primary key | Primary Key, Sequence |
| Required field | Not Null |
| Unique field | Not Null, Unique |
| Foreign key | Not Null, Foreign Key (TABLE.id) |
| Optional field | Optional |
| With range | Not Null, Min: X, Max: Y |
| With values | Not Null, Values: A, B, C |
| Not Null, Format: Email |
Examples: an email attribute is Not Null, Format: Email — never "must be a valid
email address". A status attribute with a fixed set of states is
Not Null, Values: Pending, Active, Completed, Cancelled — never "must be one of
Pending, Active, Completed, Cancelled".
This table is a closed set: every Validation Rules cell is exactly one row
from it. Do not combine rows into new patterns (Not Null, Unique, Format: Email
is invalid — pick the one rule that matters most, here Not Null, Format: Email),
and never write Min: without its matching Max: (Not Null, Min: 0 alone is
invalid — use Not Null, Min: 0, Max: <upper bound> or just Not Null).
The same tables are available in references/REFERENCE.md.
If validation spans multiple columns, add after the table:
Constraints: Check-out date must be after check-in date.
### with the name in UPPERCASE.tessl-plugin
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10
scenario-11
scenario-12
skills