ai-cto 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +72 -0
- package/bin/cli.js +491 -0
- package/docs/BALANCE.md +99 -0
- package/docs/COPY.md +121 -0
- package/docs/PLAN.md +0 -0
- package/docs/PRD.md +195 -0
- package/docs/SCHEMA.md +293 -0
- package/docs/STACK.md +204 -0
- package/package.json +20 -0
- package/scripts/playtest.js +147 -0
package/docs/COPY.md
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# 💬 AI CTO — Master Copywriting Reference (COPY.md)
|
|
2
|
+
|
|
3
|
+
> **One-Stop Reference:** This document contains every user-facing string, headline, feedback banner, rank title, and micro-copy used across **AI CTO**.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🎯 1. Elevator Pitches & Hero Headlines
|
|
8
|
+
|
|
9
|
+
### Main Tagline
|
|
10
|
+
> **Run an AI startup for 5 minutes.**
|
|
11
|
+
|
|
12
|
+
### Subtitle & Hook
|
|
13
|
+
> Every request is a business decision. Choose the cheapest model that satisfies the customer. Higher profit wins. No tutorials — learn by making mistakes.
|
|
14
|
+
|
|
15
|
+
### Onboarding Tooltips
|
|
16
|
+
- *"20 requests per daily session."*
|
|
17
|
+
- *"Trade-off: Inference Cost vs Latency vs Output Accuracy."*
|
|
18
|
+
- *"Higher profits rank higher on the daily leaderboard."*
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 🤖 2. Model Tier Names, Badges & Descriptions
|
|
23
|
+
|
|
24
|
+
| Model Tier | Display Name | UI Badge Subtitle | Card Micro-Description |
|
|
25
|
+
| :--- | :--- | :--- | :--- |
|
|
26
|
+
| **Nano** | `Nano` | `Ultra Low Cost` | *"Ultra-fast, cheapest model. Great for quick text cleanup, simple parsing, and low-risk requests."* |
|
|
27
|
+
| **Mini** | `Mini` | `Balanced Standard` | *"Mid-tier powerhouse. Balanced speed, coding capability, and high accuracy for standard business tasks."* |
|
|
28
|
+
| **Large** | `Large` | `Heavyweight Reasoning` | *"Maximum reasoning & accuracy. Handles high-stakes code, complex vision OCR, and strict compliance tasks."* |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## ⚡ 3. Evaluation Feedback Copy
|
|
33
|
+
|
|
34
|
+
When a player selects a model, the engine evaluates the choice and returns one of the following short headlines & explanatory sub-texts:
|
|
35
|
+
|
|
36
|
+
### 🟢 Success Outcomes (Positive Profits)
|
|
37
|
+
|
|
38
|
+
#### 1. Perfect Match (`reqCapabilities == model.capabilities`)
|
|
39
|
+
- **Headline:** `Perfect fit.`
|
|
40
|
+
- **Sub-text:** *"Model specs matched request requirements cleanly."*
|
|
41
|
+
|
|
42
|
+
#### 2. Maximum Margin (`Nano` chosen for Medium/High task & succeeds)
|
|
43
|
+
- **Headline:** `Excellent margin.`
|
|
44
|
+
- **Sub-text:** *"Nano pulled through! High profit margin achieved."*
|
|
45
|
+
|
|
46
|
+
#### 3. Over-Engineered (`Large` chosen for simple task)
|
|
47
|
+
- **Headline:** `You burned money.`
|
|
48
|
+
- **Sub-text:** *"Over-engineered! Large model cost cut deeply into profits."*
|
|
49
|
+
|
|
50
|
+
#### 4. Lucky Pass (Capability Gap <= 1 point & RNG roll passed)
|
|
51
|
+
- **Headline:** `You got lucky.`
|
|
52
|
+
- **Sub-text:** *"Barely passed quality check despite capability gap."*
|
|
53
|
+
|
|
54
|
+
#### 5. Slow SLA Pass (`model.latency > request.slaLatency` but customer accepts)
|
|
55
|
+
- **Headline:** `Barely met SLA.`
|
|
56
|
+
- **Sub-text:** *"Customer accepted output but complained about slow response time."*
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
### 🔴 Failure Outcomes (Losses / Refunds)
|
|
61
|
+
|
|
62
|
+
#### 1. Capability Deficit (Model underpowered for task)
|
|
63
|
+
- **Headline:** `Customer rejected output.`
|
|
64
|
+
- **Sub-text:** *"Model hallucinated or failed required capability checks."*
|
|
65
|
+
|
|
66
|
+
#### 2. Extreme Cost Failure (Deep capability gap)
|
|
67
|
+
- **Headline:** `Inference costs are eating profits.`
|
|
68
|
+
- **Sub-text:** *"Underpowered model failed completely on complex task."*
|
|
69
|
+
|
|
70
|
+
#### 3. Latency SLA Exceeded
|
|
71
|
+
- **Headline:** `Fast but sloppy.`
|
|
72
|
+
- **Sub-text:** *"Latency SLA exceeded and customer cancelled request."*
|
|
73
|
+
|
|
74
|
+
#### 4. High-Risk Compliance Failure
|
|
75
|
+
- **Headline:** `Audit refund triggered!`
|
|
76
|
+
- **Sub-text:** *"Severe calculation error in tax report triggered full penalty refund."*
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 🏆 4. End-of-Day Performance Tier Ranks
|
|
81
|
+
|
|
82
|
+
Calculated after Request #20 based on net profit and customer satisfaction:
|
|
83
|
+
|
|
84
|
+
| Tier | Rank Title | Subtitle Badge | Description / Trigger |
|
|
85
|
+
| :--- | :--- | :--- | :--- |
|
|
86
|
+
| **S Tier** | 👑 `S Tier AI CTO` | `Top 5% — Unicorn Founder` | Profit `> $250.00` & Trust `>= 90%` |
|
|
87
|
+
| **A Tier** | 🚀 `A Tier AI CTO` | `Top 15% — Profitable AI Startup` | Profit `> $150.00` |
|
|
88
|
+
| **B Tier** | 📊 `B Tier AI CTO` | `Top 35% — Sustainable Ops` | Profit `> $50.00` |
|
|
89
|
+
| **C Tier** | 💼 `C Tier AI CTO` | `Break-even — Living on Grants` | Profit `>= $0.00` |
|
|
90
|
+
| **F Tier** | 💀 `Bankrupt Founder` | `Inference Costs Ate Your Capital` | Profit `< $0.00` |
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 🏷️ 5. Category Badges & Task Labels
|
|
95
|
+
|
|
96
|
+
### Category Badges
|
|
97
|
+
- ✍️ `Text Processing`
|
|
98
|
+
- 💻 `Coding`
|
|
99
|
+
- 👁️ `Vision OCR`
|
|
100
|
+
- 📜 `Long Context`
|
|
101
|
+
- ⚠️ `High-Risk Audit`
|
|
102
|
+
|
|
103
|
+
### Financial HUD Labels
|
|
104
|
+
- 💵 `Capital` *(Available bank balance in USD)*
|
|
105
|
+
- ❤️ `Trust` *(Customer satisfaction percentage)*
|
|
106
|
+
- ⏳ `Turn Progress` *(e.g. `14 / 20`)*
|
|
107
|
+
- 💰 `Success Reward` *(e.g. `+$18.00`)*
|
|
108
|
+
- 📉 `Failure Risk` *(e.g. `-$35.00`)*
|
|
109
|
+
- ⚡ `Max Latency` *(e.g. `2.0s`)*
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 🔘 6. Button & Navigation Micro-Copy
|
|
114
|
+
|
|
115
|
+
- `Dispatch Nano`
|
|
116
|
+
- `Dispatch Mini`
|
|
117
|
+
- `Dispatch Large`
|
|
118
|
+
- `Next Incoming Request`
|
|
119
|
+
- `View Day Summary & Final Score`
|
|
120
|
+
- `Replay 5-Minute Session`
|
|
121
|
+
- `Restart Session`
|
package/docs/PLAN.md
ADDED
|
File without changes
|
package/docs/PRD.md
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# 🤖 AI CTO — Product Requirement Document (PRD)
|
|
2
|
+
|
|
3
|
+
> **Elevator Pitch:** Run an AI startup for five minutes. Every request is a business decision. Choose the cheapest model that satisfies the customer. Higher profit wins. No tutorials — learn by making mistakes.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🎯 Core Hypothesis
|
|
8
|
+
|
|
9
|
+
> Developers enjoy making AI architecture decisions and return daily to optimize their score.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## ⏱️ Session Overview
|
|
14
|
+
|
|
15
|
+
| Metric | Target |
|
|
16
|
+
| :--- | :--- |
|
|
17
|
+
| **Session Length** | 3 – 5 minutes |
|
|
18
|
+
| **Requests per Session** | Exactly 20 requests |
|
|
19
|
+
| **Game Over Condition** | Session ends after request #20 is evaluated |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 📊 Success Metrics
|
|
24
|
+
|
|
25
|
+
### Primary Metric
|
|
26
|
+
- **D1 Retention:** `> 30%`
|
|
27
|
+
|
|
28
|
+
### Secondary Metrics
|
|
29
|
+
- **Average Session Duration:** `> 4 minutes`
|
|
30
|
+
- **Session Finish Rate:** `> 80%`
|
|
31
|
+
- **Replay Rate:** `> 40%`
|
|
32
|
+
|
|
33
|
+
> [!NOTE]
|
|
34
|
+
> **V1 Non-Goals:** Ignore revenue monetization, global user accounts, and complex multiplayer leaderboards for V1.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 🔄 Core Loop
|
|
39
|
+
|
|
40
|
+
```mermaid
|
|
41
|
+
graph TD
|
|
42
|
+
A[📥 Request Appears] --> B[🧐 Player Inspects Requirements]
|
|
43
|
+
B --> C[🤖 Player Chooses Model]
|
|
44
|
+
C --> D[⚡ Engine Simulates Outcome]
|
|
45
|
+
D --> E[💰 Money & Trust Updated]
|
|
46
|
+
E --> F{Request # < 20?}
|
|
47
|
+
F -- Yes --> A
|
|
48
|
+
F -- No --> G[🏁 Daily Score & Summary]
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 🖼️ UI Wireframe Blueprint
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
+-----------------------------------------------------------------------+
|
|
57
|
+
| 💰 Money: $124 ❤️ Satisfaction: 92% 🏆 Day Score: 8,220 |
|
|
58
|
+
+-----------------------------------------------------------------------+
|
|
59
|
+
| |
|
|
60
|
+
| 📥 INCOMING REQUEST (#14/20) |
|
|
61
|
+
| "Generate SQL query for analytics dashboard" |
|
|
62
|
+
| |
|
|
63
|
+
| 💰 Reward: +$18 | ⚡ Max Latency: 2.0s | 🎯 Quality Req: Medium |
|
|
64
|
+
| |
|
|
65
|
+
+-----------------------------------------------------------------------+
|
|
66
|
+
| CHOOSE INFERENCE MODEL |
|
|
67
|
+
| |
|
|
68
|
+
| [ ] Nano 💸 Cost: $0.03 ⚡ Latency: 0.4s Rating: ★★★★☆ |
|
|
69
|
+
| [ ] Mini 💸 Cost: $0.14 ⚡ Latency: 1.2s Rating: ★★★★★ |
|
|
70
|
+
| [ ] Large 💸 Cost: $0.82 ⚡ Latency: 3.8s Rating: ★★★★★ |
|
|
71
|
+
| |
|
|
72
|
+
| [ DISPATCH REQUEST ] |
|
|
73
|
+
+-----------------------------------------------------------------------+
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 🤖 V1 Models
|
|
79
|
+
|
|
80
|
+
To avoid model bias, V1 uses generic model tiers rather than real brand names:
|
|
81
|
+
|
|
82
|
+
| Model Tier | Cost / Req | Latency | Baseline Rating | Description |
|
|
83
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
84
|
+
| **Nano** | `$0.03` | `0.4s` | ★★★★☆ | Ultra-fast, low cost. Great for basic text. |
|
|
85
|
+
| **Mini** | `$0.14` | `1.2s` | ★★★★★ | Balanced tier. Handles medium tasks & code. |
|
|
86
|
+
| **Large** | `$0.82` | `3.8s` | ★★★★★ | Heavyweight. Expensive & slow, high accuracy. |
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## 🔍 Hidden Model Stats & Discovery
|
|
91
|
+
|
|
92
|
+
Models possess hidden capability vectors that are initially undisclosed to players:
|
|
93
|
+
|
|
94
|
+
- 💰 **Cost**
|
|
95
|
+
- ⚡ **Latency**
|
|
96
|
+
- 🎯 **Quality**
|
|
97
|
+
- 🧠 **Reasoning**
|
|
98
|
+
- 💻 **Coding**
|
|
99
|
+
- 👁️ **Vision**
|
|
100
|
+
- 📜 **Context Length**
|
|
101
|
+
|
|
102
|
+
> [!TIP]
|
|
103
|
+
> Players uncover hidden stats through trial and error. Later progression unlocks an **Encyclopedia** detailing exact model strengths.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 📋 Request Attributes & Scenarios
|
|
108
|
+
|
|
109
|
+
Each request presents specific requirements:
|
|
110
|
+
- **Category:** `Text Processing`, `Coding`, `Vision`, `Long Context`, etc.
|
|
111
|
+
- **Difficulty:** `Low`, `Medium`, `High`
|
|
112
|
+
- **Max Latency SLA:** Maximum allowed time (e.g., `2.0s`)
|
|
113
|
+
- **Expected Quality:** Minimum required standard
|
|
114
|
+
- **Reward / Penalty:** Financial return vs refund risk
|
|
115
|
+
|
|
116
|
+
### Example Scenarios
|
|
117
|
+
|
|
118
|
+
#### Scenario A: Simple Task
|
|
119
|
+
- **Task:** "Rewrite customer service email"
|
|
120
|
+
- **Reward:** `+$4.00` | **Quality:** Low | **Latency SLA:** Fast
|
|
121
|
+
- **Winning Choice:** **Nano** *(Maximizes profit margin)*
|
|
122
|
+
|
|
123
|
+
#### Scenario B: High-Risk Task
|
|
124
|
+
- **Task:** "Generate annual tax filing report"
|
|
125
|
+
- **Reward:** `+$80.00` | **Penalty:** `-$300.00` | **Quality:** High
|
|
126
|
+
- **Winning Choice:** **Large** *(Nano risks failure penalty)*
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 💬 Immediate Feedback Mechanics
|
|
131
|
+
|
|
132
|
+
Feedback is delivered instantaneously upon choice evaluation:
|
|
133
|
+
|
|
134
|
+
| Outcome | Feedback Example | Effect |
|
|
135
|
+
| :--- | :--- | :--- |
|
|
136
|
+
| **Success** | *"Great choice! Query resolved cleanly."* | Profit `+$7.00` |
|
|
137
|
+
| **Failure** | *"Customer rejected output. Hallucinated SQL syntax."* | Refund `-$18.00`, Trust `-5%` |
|
|
138
|
+
|
|
139
|
+
> [!IMPORTANT]
|
|
140
|
+
> Keep feedback concise and intriguing. Curiosity drives learning better than lectures.
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## 🏁 End Screen Summary
|
|
145
|
+
|
|
146
|
+
At the conclusion of 20 requests, players receive a performance breakdown:
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
+------------------------------------+
|
|
150
|
+
| DAY COMPLETE SUMMARY |
|
|
151
|
+
+------------------------------------+
|
|
152
|
+
| 💵 Gross Revenue: $214.00 |
|
|
153
|
+
| 📉 Inference Cost: -$63.00 |
|
|
154
|
+
| 😊 Customer Satisf.: 96% |
|
|
155
|
+
| -------------------------------- |
|
|
156
|
+
| 💰 NET PROFIT: $151.00 |
|
|
157
|
+
| 🏆 SCORE RANK: Top 28% |
|
|
158
|
+
+------------------------------------+
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## 🎲 Daily Seed & Progression
|
|
164
|
+
|
|
165
|
+
- **Daily Seed:** Every player receives the exact same sequence of 20 requests daily, creating a fair & competitive leaderboard experience.
|
|
166
|
+
- **Difficulty Progression:**
|
|
167
|
+
- **Day 1:** Simple text formatting & editing
|
|
168
|
+
- **Day 2:** Vision & multimodal requests
|
|
169
|
+
- **Day 3:** Complex coding & debugging
|
|
170
|
+
- **Day 4:** Long context summarization
|
|
171
|
+
- **Day 5:** Mixed heavy-workload scenarios
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## 🚫 Out of Scope for V1
|
|
176
|
+
|
|
177
|
+
> [!WARNING]
|
|
178
|
+
> To ensure a weekend MVP launch, the following features are explicitly deferred:
|
|
179
|
+
|
|
180
|
+
- ❌ No RAG / Vector DBs
|
|
181
|
+
- ❌ No Agentic workflows
|
|
182
|
+
- ❌ No Caching / Prompt editing
|
|
183
|
+
- ❌ No Hardware / Model upgrades
|
|
184
|
+
- ❌ No Multiplayer or User Accounts
|
|
185
|
+
|
|
186
|
+
**Primary V1 Question to Answer:** *Is choosing models fun?*
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## 🛠️ Minimal Tech Stack
|
|
191
|
+
|
|
192
|
+
- **Frontend:** React + Vite + Tailwind CSS
|
|
193
|
+
- **Data Source:** Single static `JSON` file describing daily requests
|
|
194
|
+
- **Backend:** None (100% client-side execution)
|
|
195
|
+
- **Persistence:** LocalStorage
|
package/docs/SCHEMA.md
ADDED
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
# 📐 AI CTO — Data Schema & Architecture Specification
|
|
2
|
+
|
|
3
|
+
> **Overview:** This document defines all data models, TypeScript contracts, JSON schemas, and game engine data structures used in **AI CTO**. It includes an architectural review detailing the **Pros & Cons** of each schema design choice to guide future iteration.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 📋 Table of Contents
|
|
8
|
+
1. [Core Capabilities Vector Schema](#1-core-capabilities-vector-schema)
|
|
9
|
+
2. [Model Schema (`models.json`)](#2-model-schema-modelsjson)
|
|
10
|
+
3. [Request Schema (`requests.json`)](#3-request-schema-requestsjson)
|
|
11
|
+
4. [Evaluation Result Schema](#4-evaluation-result-schema)
|
|
12
|
+
5. [Turn History & Session State Schema](#5-turn-history--session-state-schema)
|
|
13
|
+
6. [Persistence Schema (LocalStorage)](#6-persistence-schema-localstorage)
|
|
14
|
+
7. [Comprehensive Pros & Cons Architectural Review](#7-comprehensive-pros--cons-architectural-review)
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 1. Core Capabilities Vector Schema
|
|
19
|
+
|
|
20
|
+
The foundational model representing both AI model capabilities and incoming request requirements across 5 capability dimensions.
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
export interface CapabilityVector {
|
|
24
|
+
/** Baseline quality requirement or output grade (Range: 1 to 5) */
|
|
25
|
+
quality: number;
|
|
26
|
+
|
|
27
|
+
/** Code generation & syntax correctness requirement (Range: 0 to 5) */
|
|
28
|
+
coding: number;
|
|
29
|
+
|
|
30
|
+
/** Logical deduction, step-by-step math & planning requirement (Range: 0 to 5) */
|
|
31
|
+
reasoning: number;
|
|
32
|
+
|
|
33
|
+
/** Image OCR, diagram understanding & visual parsing (Range: 0 to 5) */
|
|
34
|
+
vision: number;
|
|
35
|
+
|
|
36
|
+
/** Token window size requirement (Range: 1 to 5; 1 = short, 5 = 100k+ tokens) */
|
|
37
|
+
context: number;
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 2. Model Schema (`models.json`)
|
|
44
|
+
|
|
45
|
+
Defines available inference models, their cost metrics, SLAs, and capability vectors.
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
export interface Model {
|
|
49
|
+
/** Unique model identifier ('nano' | 'mini' | 'large') */
|
|
50
|
+
id: 'nano' | 'mini' | 'large';
|
|
51
|
+
|
|
52
|
+
/** Display name shown in UI cards (e.g., "Nano") */
|
|
53
|
+
name: string;
|
|
54
|
+
|
|
55
|
+
/** UI badge subtitle (e.g., "Ultra Low Cost", "Heavyweight Reasoning") */
|
|
56
|
+
badge: string;
|
|
57
|
+
|
|
58
|
+
/** Inference cost per single request in USD ($) */
|
|
59
|
+
cost: number;
|
|
60
|
+
|
|
61
|
+
/** Expected latency delay in seconds (s) */
|
|
62
|
+
latency: number;
|
|
63
|
+
|
|
64
|
+
/** Short descriptive string highlighting strengths/weaknesses */
|
|
65
|
+
description: string;
|
|
66
|
+
|
|
67
|
+
/** Multidimensional vector defining model performance levels */
|
|
68
|
+
capabilities: CapabilityVector;
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Example Instance (`models.json`)
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"id": "nano",
|
|
77
|
+
"name": "Nano",
|
|
78
|
+
"badge": "Ultra Low Cost",
|
|
79
|
+
"cost": 0.03,
|
|
80
|
+
"latency": 0.4,
|
|
81
|
+
"description": "Ultra-fast, cheapest model. Great for quick text cleanup, simple parsing, and low-risk requests.",
|
|
82
|
+
"capabilities": {
|
|
83
|
+
"quality": 2,
|
|
84
|
+
"coding": 1,
|
|
85
|
+
"reasoning": 1,
|
|
86
|
+
"vision": 0,
|
|
87
|
+
"context": 1
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 3. Request Schema (`requests.json`)
|
|
95
|
+
|
|
96
|
+
Defines incoming customer tasks, SLA limits, financial rewards/penalties, and required capability vectors.
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
export interface RequestItem {
|
|
100
|
+
/** Unique request numeric ID (1 to 20) */
|
|
101
|
+
id: number;
|
|
102
|
+
|
|
103
|
+
/** Task headline shown to player */
|
|
104
|
+
title: string;
|
|
105
|
+
|
|
106
|
+
/** Detailed task context explaining customer constraints */
|
|
107
|
+
description: string;
|
|
108
|
+
|
|
109
|
+
/** Task classification category */
|
|
110
|
+
category: 'text' | 'coding' | 'vision' | 'context' | 'high_risk';
|
|
111
|
+
|
|
112
|
+
/** Relative difficulty tier */
|
|
113
|
+
difficulty: 'low' | 'medium' | 'high';
|
|
114
|
+
|
|
115
|
+
/** Financial payout in USD ($) awarded on successful completion */
|
|
116
|
+
reward: number;
|
|
117
|
+
|
|
118
|
+
/** Financial penalty / refund in USD ($) deducted on failure */
|
|
119
|
+
penalty: number;
|
|
120
|
+
|
|
121
|
+
/** Maximum acceptable customer SLA latency in seconds (s) */
|
|
122
|
+
slaLatency: number;
|
|
123
|
+
|
|
124
|
+
/** Minimum required capability vector for 100% success match */
|
|
125
|
+
reqCapabilities: CapabilityVector;
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Example Instance (`requests.json`)
|
|
130
|
+
|
|
131
|
+
```json
|
|
132
|
+
{
|
|
133
|
+
"id": 13,
|
|
134
|
+
"title": "Generate annual tax filing report",
|
|
135
|
+
"description": "High-risk financial compliance output. Any calculation mistake triggers audit refund.",
|
|
136
|
+
"category": "high_risk",
|
|
137
|
+
"difficulty": "high",
|
|
138
|
+
"reward": 80.00,
|
|
139
|
+
"penalty": -250.00,
|
|
140
|
+
"slaLatency": 5.0,
|
|
141
|
+
"reqCapabilities": {
|
|
142
|
+
"quality": 5,
|
|
143
|
+
"coding": 3,
|
|
144
|
+
"reasoning": 5,
|
|
145
|
+
"vision": 0,
|
|
146
|
+
"context": 3
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## 4. Evaluation Result Schema
|
|
154
|
+
|
|
155
|
+
Returned by the pure TypeScript engine when a player dispatches a model choice for a request.
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
export interface EvaluationResult {
|
|
159
|
+
/** Boolean indicating whether customer accepted the generated output */
|
|
160
|
+
success: boolean;
|
|
161
|
+
|
|
162
|
+
/** Net financial delta in USD: (reward - cost) or (penalty - cost) */
|
|
163
|
+
profit: number;
|
|
164
|
+
|
|
165
|
+
/** Customer satisfaction / trust percentage change (-100% to +100%) */
|
|
166
|
+
trustDelta: number;
|
|
167
|
+
|
|
168
|
+
/** Descriptive explanation of execution outcome */
|
|
169
|
+
message: string;
|
|
170
|
+
|
|
171
|
+
/** Snappy status copy (e.g., "Perfect fit", "Over-engineered", "Customer rejected output") */
|
|
172
|
+
copyFeedback: string;
|
|
173
|
+
|
|
174
|
+
/** Breakdown of individual requirement checks */
|
|
175
|
+
details: {
|
|
176
|
+
latencyMet: boolean;
|
|
177
|
+
qualityMet: boolean;
|
|
178
|
+
reasoningMet: boolean;
|
|
179
|
+
codingMet: boolean;
|
|
180
|
+
visionMet: boolean;
|
|
181
|
+
contextMet: boolean;
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## 5. Turn History & Session State Schema
|
|
189
|
+
|
|
190
|
+
Tracks user choices across the 20-request game loop.
|
|
191
|
+
|
|
192
|
+
```typescript
|
|
193
|
+
export interface TurnHistoryItem {
|
|
194
|
+
request: RequestItem;
|
|
195
|
+
model: Model;
|
|
196
|
+
result: EvaluationResult;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
export interface GameState {
|
|
200
|
+
/** Current available capital in USD ($) */
|
|
201
|
+
money: number;
|
|
202
|
+
|
|
203
|
+
/** Current customer satisfaction score (0% to 100%) */
|
|
204
|
+
trust: number;
|
|
205
|
+
|
|
206
|
+
/** Zero-indexed current turn number (0 to 19) */
|
|
207
|
+
currentTurn: number;
|
|
208
|
+
|
|
209
|
+
/** Array of completed turns in chronological order */
|
|
210
|
+
history: TurnHistoryItem[];
|
|
211
|
+
|
|
212
|
+
/** Active modal evaluation result (null if waiting for choice) */
|
|
213
|
+
activeResult: EvaluationResult | null;
|
|
214
|
+
|
|
215
|
+
/** Flag set to true when turn 20 is completed */
|
|
216
|
+
isGameOver: boolean;
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## 6. Persistence Schema (LocalStorage)
|
|
223
|
+
|
|
224
|
+
Format used for persisting user high scores and session statistics across visits.
|
|
225
|
+
|
|
226
|
+
```typescript
|
|
227
|
+
export interface SavedState {
|
|
228
|
+
version: string;
|
|
229
|
+
bestScore: number;
|
|
230
|
+
highestProfit: number;
|
|
231
|
+
sessionsCompleted: number;
|
|
232
|
+
unlockedEncyclopediaIds: string[];
|
|
233
|
+
lastPlayedDate: string; // ISO String (e.g. "2026-08-01")
|
|
234
|
+
}
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## 7. Comprehensive Pros & Cons Architectural Review
|
|
240
|
+
|
|
241
|
+
Here is an architectural review of the schema design decisions:
|
|
242
|
+
|
|
243
|
+
### A. Multidimensional Capability Vectors (`CapabilityVector`)
|
|
244
|
+
|
|
245
|
+
- **Pros:**
|
|
246
|
+
- 🟢 **Generic & Scalable:** Engine logic relies on generic vector comparisons (`reqCapabilities` vs `capabilities`) rather than hardcoded `if/else` checks per request type.
|
|
247
|
+
- 🟢 **Extensible:** Adding new dimensions (e.g. `multilingual`, `audio`, `functionCalling`) requires only extending the vector interface without refactoring evaluation logic.
|
|
248
|
+
- 🟢 **Rich Trade-offs:** Allows creating nuanced requests (e.g., high coding but low vision vs high reasoning but short context).
|
|
249
|
+
- **Cons:**
|
|
250
|
+
- 🔴 **Initial Complexity:** Players must learn what each vector dimension means (Quality, Coding, Reasoning, Vision, Context) rather than a single simple star rating.
|
|
251
|
+
- 🔴 **Hidden Stats Obscurity:** If hidden stats aren't exposed cleanly in the UI, failure reasons can feel opaque to novice players.
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
### B. Fixed JSON Scenarios (`requests.json`) vs Procedural Generation
|
|
256
|
+
|
|
257
|
+
- **Pros:**
|
|
258
|
+
- 🟢 **Deterministic Daily Challenge:** Ensures every player gets the exact same 20 requests on a given day for fair competitive leaderboards.
|
|
259
|
+
- 🟢 **Handcrafted Pacing:** Allows designing specific difficulty curves (e.g., low-risk text on Turn 1, extreme high-risk tax audit on Turn 13, enterprise migration on Turn 20).
|
|
260
|
+
- 🟢 **Zero Runtime Overhead:** Instant load time with no RNG calculation lag or invalid request edge-cases.
|
|
261
|
+
- **Cons:**
|
|
262
|
+
- 🔴 **Finite Replayability:** Once a player memorizes the optimal model choice for the 20 fixed requests, replay value drops until new JSON packs are released.
|
|
263
|
+
- 🔴 **Manual Maintenance:** Modifying request balance requires manually editing JSON files.
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
### C. Flat Asymmetric Reward vs Penalty Schema (`reward` / `penalty`)
|
|
268
|
+
|
|
269
|
+
- **Pros:**
|
|
270
|
+
- 🟢 **High-Stakes Tension:** Large penalties (e.g. `Reward: +$80` vs `Penalty: -$250`) force players to think carefully about risk tolerance rather than blindly selecting the cheapest Nano model.
|
|
271
|
+
- 🟢 **Realistic Business Simulation:** Mirrors real AI startup dynamics where severe outages or hallucinated compliance advice destroy customer trust and revenue.
|
|
272
|
+
- **Cons:**
|
|
273
|
+
- 🔴 **Punishing First Playthrough:** Players who pick Nano on Turn 13 without understanding hidden capability requirements suffer massive negative balance drops.
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
### D. Client-Side LocalStorage vs Server-Side DB
|
|
278
|
+
|
|
279
|
+
- **Pros:**
|
|
280
|
+
- 🟢 **Zero Backend Overhead:** Zero server hosting costs, zero database management, zero latency, zero login flow required.
|
|
281
|
+
- 🟢 **Instant Playability:** Game starts instantly in any web browser without auth barriers.
|
|
282
|
+
- **Cons:**
|
|
283
|
+
- 🔴 **Tamper Risk:** Savvy users can manually edit `localStorage` values to spoof high scores. (Sufficient for V1 MVP validation, but would require a backend for cash prize leaderboards).
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## 🔍 Review & Feedback Checklist for You
|
|
288
|
+
|
|
289
|
+
Please review the data schemas and pros/cons above:
|
|
290
|
+
|
|
291
|
+
1. **Vector Dimension Granularity:** Do you like having 5 distinct capability dimensions (`quality`, `coding`, `reasoning`, `vision`, `context`), or would you prefer simplifying to just 3 (`quality`, `speed`, `complexity`)?
|
|
292
|
+
2. **Financial Balance:** Are the high-risk penalties (e.g. `+$80` reward vs `-$250` penalty) creating the right level of tension, or should failure penalties be capped at 2x the reward?
|
|
293
|
+
3. **JSON vs Procedural Requests:** Should we keep handcrafted JSON request sets, or introduce procedural request generators for infinite replayability?
|