Natural Language Input¶
The mcprojsim natural language parser accepts a wide range of input formats — from structured Task N: headers to plain bullet lists copied from a planning tool. This page is the single reference for every input pattern the parser understands.
Quick rule of thumb
If it looks like a task list a human would write, the parser will probably understand it. When in doubt, run mcprojsim generate and inspect the output.
Introductory example¶
As an introduction the following "human" project description can be used:
Project: New feature launch
Start date: next Monday
1. Design database schema (about a week)
2. Implement backend REST API (probably 2–4 days, depends on the DB work)
3. UI design , about ~ 2 weeks
4. Frontend integration testing (around 3 weeks)
5. Deployment and smoke tests (a few days), depends on UI and backend being ready
6. Post-launch monitoring (a sprint), after deployment
7. Delivery report , about 2-3 days
Save this as proj1.txt . Then run
It will then generate the full project specification as:
project:
name: "New feature launch"
start_date: "2026-04-13"
confidence_levels: [50, 80, 90, 95]
!!! yaml-cbreak-b5
tasks:
- id: "task_001"
name: "Design database schema ()"
estimate:
t_shirt_size: "M"
dependencies: []
- id: "task_002"
name: "Implement backend REST API (probably"
estimate:
low: 2
expected: 3
high: 4
unit: "days"
dependencies: ["task_001"]
- id: "task_003"
name: "UI design"
estimate:
low: 1.5
expected: 2
high: 5
unit: "weeks"
dependencies: []
- id: "task_004"
name: "Frontend integration testing ()"
estimate:
low: 2.1
expected: 3
high: 5.4
unit: "weeks"
dependencies: []
- id: "task_005"
name: "Deployment and smoke tests ()"
estimate:
t_shirt_size: "S"
dependencies: ["task_002", "task_003", "task_004"]
- id: "task_006"
name: "Post-launch monitoring ()"
estimate:
t_shirt_size: "L"
dependencies: ["task_005"]
!!! yaml-cbreak-b5
- id: "task_007"
name: "Delivery report"
estimate:
low: 2
expected: 2.5
high: 3
unit: "days"
dependencies: []
Review generated task names
Task names ending with () — such as "Design database schema ()" — are parser artifacts that occur when the input contains unmatched or empty parentheses. They are harmless but untidy. Always review the generated YAML and remove or correct these fragments before using the file in a simulation.
The parser supports two task-definition modes. They cannot be mixed in the same description.
| Mode | Trigger | Example |
|---|---|---|
| Explicit headers | Task N: followed by bullet properties |
Task 1: / - Size: M |
| Auto-detected lists | Plain numbered or bullet lists with no Task N: headers |
1. Design phase / - Backend API |
Auto-detected lists activate automatically when the parser sees numbered or bulleted items and no Task N: header has appeared. Once a Task N: header is encountered, auto-detection is disabled for the rest of the description.
Project-level metadata¶
These lines can appear anywhere outside a task section:
Project name: Website Redesign
Description: Q3 infrastructure work
Start date: 2026-06-01
Starting in 2 weeks
Start date: next Monday
Hours per day: 7.5
Confidence levels: 50, 80, 90, 95
Start date also accepts relative phrases such as next Monday, in 5 days, in 2 weeks, beginning of May, and May 2026.
All fields are optional. Defaults: name = "Untitled Project", hours = 8.0, confidence = [50, 80, 90, 95].
Explicit task headers (Task N:)¶
The original structured format. Each task starts with a numbered header, followed by indented bullet properties:
Task 1: Design the login flow
- Size: M
Task 2: Implement backend
- Depends on Task 1
- Estimate: 5/8/15 days
Task 3: QA and testing
- Depends on Task 2
- Story points: 8
Bullet properties¶
| Property | Patterns | Example |
|---|---|---|
| Task name | Name: or first unmatched bullet |
- Name: Backend API |
| T-shirt size | Size: M, Size XL, Size. XL |
- Size: L |
| Story points | Story points: 5, Points: 8 |
- Story points: 13 |
| Explicit estimate | Estimate: low/expected/high [unit] |
- Estimate: 3/5/10 days |
| Dependencies | Depends on Task 1, Task 3 |
- Depends on Task 2 |
| Resources | Resources: Alice, Bob |
- Resources: Alice |
| Max resources | Max resources: 2 |
- Max resources: 2 |
| Min experience | Min experience: 2 |
- Min experience: 3 |
| Description | Second unmatched bullet | - Involves DB migration |
Separators between keyword and value can be :, ., =, or a space. All are equivalent and case-insensitive.
Auto-detected task lists¶
When no Task N: headers are present, the parser automatically detects tasks from plain lists. This is ideal for copy-paste from planning tools, meeting notes, or email threads.
Supported list formats¶
Plain numbered lists — task numbers are preserved from the source:
Project name: Backend Migration
Start date: 2026-05-01
1. Design database schema
2. Implement REST API
3. Write integration tests
4. Deploy to staging
Parenthesis numbered lists:
Bracket numbered lists:
Bullet lists — task numbers are auto-assigned (1, 2, 3, …):
- Discovery and requirements
- Database design
- Backend implementation
- Frontend
- QA
- Deployment
Bullets can use -, *, or •.
Hash numbered lists (rare but supported):
Continuation lines¶
Indented lines under an auto-detected task are treated as bullet properties, exactly like the explicit-header format:
1. Design database schema
Size: M
2. Implement REST API
Size: XL
Depends on Task 1
3. Write integration tests
Estimate: 3/5/10 days
Inline properties on task lines¶
Both auto-detected and continuation lines can carry properties directly on the task name line. The parser extracts them and cleans the task name.
Bracketed or parenthesized sizes¶
Fuzzy size hints¶
Natural phrasing like "probably an M" or "assume S" is recognized:
Supported qualifiers: probably, likely, assume, estimated as.
Inline estimate ranges¶
Numeric ranges on the task line are parsed as explicit estimates:
The parser calculates expected = (low + high) / 2 automatically.
Approximate point estimates¶
Approximate single-value estimates on the task line are expanded into a three-point range automatically:
- Quick fix about 10 hours
- Frontend integration around 3 weeks
- Rollout verification roughly 6 hours
For these phrases, the parser keeps the stated value as expected and synthesizes:
low = expected * 0.7high = expected * 1.8
So about 10 hours becomes low=7, expected=10, high=18, unit=hours.
When the estimate includes ~ (for example about ~2 weeks or ~10 hours), the parser treats it as a higher-uncertainty signal and widens the synthesized range:
low = expected * 0.75high = expected * 2.5
So about ~2 weeks becomes low=1.5, expected=2, high=5, unit=weeks.
Natural duration phrases¶
Common prose-style duration phrases are mapped directly to T-shirt sizes when no explicit numeric estimate is present:
- Quick patch takes a couple of days
- Design database schema about a week
- Frontend integration will take a few weeks
- Migration effort is a month or so
- Post-launch monitoring takes a sprint
Examples:
a couple of days->Sabout a week->Ma few weeks->La month or so->La sprint-> derived from sprint cadence when sprint planning is available
Numeric expressions still take precedence. For example, around 3 weeks is treated as an approximate point estimate in weeks, not as a T-shirt phrase.
Inline dependencies¶
The parser also understands prose-style dependency connectors in task lines and bullets:
1. Database schema design
2. Authentication service implementation (builds on the database schema)
3. API endpoints (after task 2)
4. UI integration (once authentication is done)
5. Deployment checks (requires the API endpoints)
Supported connectors include after, following, blocked by, requires,
needs, depends on, builds on, and based on.
The parser also resolves natural references to previous tasks when the text does not name an explicit Task N reference:
1. Design database schema
2. Implement backend REST API (probably 2–4 days, depends on the DB work)
3. Frontend integration testing (around 3 weeks)
4. Deployment and smoke tests (a few days), depends on frontend and backend being ready
Supported fuzzy references include terms such as DB, API, frontend, backend, auth, deployment, and QA/testing, matched against previously parsed task names.
Name-based matching only looks at tasks that were parsed earlier in the file.
Combined example¶
Multiple inline properties can appear on the same line:
This sets both the T-shirt size and the estimate range.
T-shirt size aliases¶
The parser normalizes many size labels to the six canonical sizes:
| Canonical | Accepted inputs |
|---|---|
XS |
XS, Extra Small, Extrasmall |
S |
S, Small |
M |
M, Medium, Med |
L |
L, Large |
XL |
XL, Extra Large, Extralarge |
XXL |
XXL, Extra Extra Large, 2XL |
Matching is case-insensitive.
Complete examples¶
Example 1: Numbered list with inline sizes¶
Project name: Backend Migration
Start date: 2026-05-01
1. Design database schema [M]
2. Implement REST API [XL] depends on Task 1
3. Write integration tests [L] depends on Task 2
4. Deploy to staging [S] depends on Task 3
5. Production cutover [S] depends on Task 4
Example 2: Bullet list with fuzzy sizes¶
Project name: Mobile App MVP
Start date: 2026-06-01
- Discovery and requirements (S)
- UX wireframes (M)
Depends on Task 1
- Backend API, probably an XL
Depends on Task 2
- iOS frontend (XL)
Depends on Task 3
- Android frontend (XL)
Depends on Task 3
- QA and bug fixes, likely an L
Depends on Task 4, Task 5
- App store submission (S)
Depends on Task 6
Example 3: Bracket list with inline ranges¶
Project name: Data Pipeline Rebuild
Start date: 2026-07-01
[1] Audit existing ETL jobs [S]
[2] Design new pipeline architecture [M] depends on Task 1
[3] Implement ingestion layer 3–5 days depends on Task 2
[4] Build transformation engine [XL] depends on Task 3
[5] Set up monitoring and alerts [M] depends on Task 4
[6] Migration and cutover, assume S, depends on Task 5
Example 4: Mixed inline properties¶
Project name: Auth Service Rewrite
Description: Replace legacy auth with OAuth2/OIDC
Start date: 2026-08-01
1. Evaluate identity providers 2–4 days
2. Design token flow and session management [M]
Depends on Task 1
3. Implement OAuth2 authorization server, probably an XL
Depends on Task 2
4. Migrate user database (L)
Depends on Task 2
!!! yaml-cbreak-b5
5. Integration testing [L]
Depends on Task 3, Task 4
6. Security audit, assume M
Depends on Task 5
7. Staged rollout [S]
Depends on Task 6
Example 5: Traditional structured format (still fully supported)¶
Project name: Website Redesign
Start date: 2026-04-15
Task 1: Gather requirements
- Size: S
Task 2: Create wireframes
- Depends on Task 1
- Size: M
Task 3: Build frontend
- Depends on Task 2
- Size: XL
Example 6: Relative dates and prose-style estimates¶
Project: New feature launch
Start date: next Monday
1. Design database schema (about a week)
2. Implement backend REST API (probably 2–4 days, depends on the DB work)
3. Frontend integration testing (around 3 weeks)
4. Deployment and smoke tests (a few days), depends on frontend and backend being ready
5. Post-launch monitoring (a sprint)
Example 7: Approximate point estimates¶
Project name: Incident Remediation
Starting in 2 weeks
- Quick patch about 10 hours
- Auth hardening around 3 to 5 days
- Database cleanup 2-4 hours
- Rollout verification roughly 6 hours
Resources, calendars, and sprint planning¶
These sections use the same structured format regardless of whether tasks use explicit headers or auto-detection. See the MCP Server page and the API reference for full details on resource, calendar, and sprint planning input patterns.
Mixing estimation methods¶
Different tasks can use different estimation methods within the same project:
1. Well-understood work
Estimate: 3/5/8 days
2. Vaguely scoped work [XL]
3. Agile team estimate
Story points: 8
The parser handles this correctly, and mcprojsim resolves each estimate type using the appropriate configuration mapping at simulation time.
What is NOT supported in NL input¶
- Uncertainty factors, add these manually to the YAML
- Project-level risks, add these manually to the YAML
- Circular dependency detection, caught later by
mcprojsim validate - Volatility-overlay and spillover calibration, edit directly in YAML
- Mixing
Task N:headers and auto-detected lists in the same description
\newpage