# Bot Personalities ## Purpose Defines bot archetypes, skill levels, and the three-layer decision pipeline that produces realistic, personality-driven poker play. ## ADDED Requirements ### Requirement: Eight distinct bot archetypes exist The system SHALL provide 8 bot archetypes: Nit, TAG (Tight-Aggressive), LAG (Loose-Aggressive), Maniac, Calling Station, Loose Fish, Old Man (Tight-Passive), and Monster TAG. Each archetype SHALL have a defined personality profile specifying characteristic VPIP range, PFR range, bluff frequency, and aggression pattern. #### Scenario: Archetype list is complete - **WHEN** the system initializes the bot personality registry - **THEN** all 8 archetypes are available for assignment to bot seats #### Scenario: Each archetype has defined statistical profile - **WHEN** querying an archetype's personality profile - **THEN** the profile includes VPIP range, PFR range, bluff frequency, and aggression pattern ### Requirement: Five skill levels per archetype The system SHALL provide 5 skill levels: Novice, Beginner, Medium, Hard, and Ultra. Each skill level SHALL define an error rate range and a set of enabled behavioral capabilities. #### Scenario: Skill levels span full difficulty range - **WHEN** querying available skill levels - **THEN** Novice through Ultra are returned with increasing competence #### Scenario: Error rates scale with skill - **WHEN** comparing error rates between adjacent skill levels - **THEN** higher skill levels have lower error rates (Ultra < Hard < Medium < Beginner < Novice) ### Requirement: Archetype-specific mistake libraries The system SHALL maintain a mistake library per archetype. Each archetype's mistakes SHALL be thematically consistent with its play style (e.g., Nit mistakes involve folding too much, Fish mistakes involve calling too much). A bot's skill level SHALL determine the frequency at which mistakes from its library are triggered. #### Scenario: Novice TAG makes tight-player mistakes - **WHEN** a Novice TAG bot faces a decision where a mistake could occur - **THEN** the possible mistakes include folding too much and missing value bets, not calling too wide #### Scenario: Novice Fish makes loose-player mistakes - **WHEN** a Novice Fish bot faces a decision where a mistake could occur - **THEN** the possible mistakes include calling with weak hands and falling for bluffs, not folding too tight #### Scenario: Ultra bots rarely make mistakes - **WHEN** an Ultra-skill bot plays 100 hands - **THEN** fewer than 5 decisions are influenced by mistake injection ### Requirement: Three-layer decision pipeline The system SHALL compute bot decisions through a three-layer pipeline: (1) base strategy produces GTO-informed baseline probabilities, (2) personality filter reshapes probabilities according to archetype traits, (3) skill noise layer injects mistakes proportional to the bot's error rate. The final decision SHALL be sampled from the resulting probability distribution. #### Scenario: Base strategy provides starting point - **WHEN** a bot holds premium cards in late position with no prior action - **THEN** the base strategy assigns high probability to raising #### Scenario: Personality filter adjusts for archetype - **WHEN** a Nit bot evaluates the same hand as an LAG bot - **THEN** the Nit's raise probability is lower due to tighter range filtering #### Scenario: Skill noise degrades decisions for lower skill - **WHEN** a Novice bot makes a decision through the full pipeline - **THEN** the final action may differ from the optimal base strategy action due to mistake injection