@pareto4/pp-core 1.7.0 → 1.8.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/.claude-plugin/plugin.json +1 -1
- package/bin/install.js +116 -0
- package/commands/pp-build-handoff.md +46 -0
- package/commands/pp-discovery-to-build.md +40 -0
- package/gemini-extension.json +1 -1
- package/package.json +2 -1
- package/pareto-skills/_shared/create-project-board.sh +195 -0
- package/pareto-skills/_shared/pp-claude-md-protocol.md +306 -0
- package/pareto-skills/_shared/sync-phase-status.sh +139 -0
- package/pareto-skills/pp-brand/SKILL.md +644 -0
- package/pareto-skills/pp-brand/assets/crew/ParetoAgent.inline.html +120 -0
- package/pareto-skills/pp-brand/assets/crew/ParetoAgent.tsx +239 -0
- package/pareto-skills/pp-brand/assets/crew/build.svg +11 -0
- package/pareto-skills/pp-brand/assets/crew/deploy.svg +11 -0
- package/pareto-skills/pp-brand/assets/crew/discovery.svg +11 -0
- package/pareto-skills/pp-brand/assets/crew/plan.svg +11 -0
- package/pareto-skills/pp-brand/assets/crew/run.svg +11 -0
- package/pareto-skills/pp-brand/assets/crew/validate.svg +11 -0
- package/pareto-skills/pp-brand/assets/pareto-brand-preview.html +547 -0
- package/pareto-skills/pp-obsidian-notes/SKILL.md +127 -0
- package/pareto-skills/pp-obsidian-notes/templates/CLAUDE.md +29 -0
- package/pareto-skills/pp-obsidian-notes/templates/client-context.md +116 -0
- package/pareto-skills/pp-obsidian-notes/templates/meeting-note.md +66 -0
- package/pareto-skills/pp-obsidian-notes/templates/pareto-context.md +102 -0
- package/pareto-skills/pp-obsidian-notes/templates/proposal.md +117 -0
- package/pareto-skills/pp-project-setup/SKILL.md +1364 -0
- package/pp-core/bin/lib/intel.cjs +1 -1
- package/pp-core/bin/lib/io.cjs +120 -0
- package/pp-core/bin/lib/profile-pipeline-command-router.cjs +1 -1
- package/pp-core/bin/lib/roadmap-parser.cjs +1 -1
- package/pp-core/bin/lib/runtime-artifact-conversion.cjs +2 -2
- package/pp-core/bin/lib/surface.cjs +1 -1
- package/pp-core/bin/lib/worktree-safety.cjs +2 -2
- package/pp-core/bin/pp-tools.cjs +23 -0
- package/pp-core/references/ui-brand.md +73 -11
- package/pp-core/templates/codebase/structure.md +5 -5
- package/pp-core/templates/spec.md +7 -7
- package/pp-core/workflows/add-backlog.md +1 -1
- package/pp-core/workflows/autonomous.md +4 -4
- package/pp-core/workflows/debug.md +1 -1
- package/pp-core/workflows/discovery-to-build.md +598 -0
- package/pp-core/workflows/execute-phase.md +9 -1
- package/pp-core/workflows/plan-phase.md +14 -12
- package/pp-core/workflows/pr-branch.md +5 -4
- package/pp-core/workflows/reapply-patches.md +1 -1
- package/pp-core/workflows/ship.md +1 -1
- package/pp-core/workflows/thread.md +1 -1
- package/pp-core/workflows/verify-work.md +6 -5
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pp-obsidian-notes
|
|
3
|
+
description: >
|
|
4
|
+
Create and manage Obsidian vault structure, client context files, meeting notes, and
|
|
5
|
+
proposals for The Pareto Project. Use this skill whenever the user wants to set up
|
|
6
|
+
the Pareto Obsidian vault from scratch, create a new client folder and context file,
|
|
7
|
+
add a meeting note for a client, create or update a proposal, or scaffold any part
|
|
8
|
+
of the Pareto knowledge structure. Triggers on requests like "set up the vault",
|
|
9
|
+
"create a client folder for X", "add a meeting note for X", "new meeting with X",
|
|
10
|
+
"create a proposal for X", "set up obsidian", "new client X", "log a call with X",
|
|
11
|
+
or any mention of creating or updating Pareto client knowledge files. Always use
|
|
12
|
+
this skill — do not improvise the structure from scratch.
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Pareto Obsidian Notes Skill
|
|
16
|
+
|
|
17
|
+
Creates and manages the Pareto Obsidian knowledge vault structure: initial scaffold,
|
|
18
|
+
client context files, meeting notes, proposals, and internal Pareto context. Operates
|
|
19
|
+
directly on the filesystem via Claude Code's file tools.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Vault location
|
|
24
|
+
|
|
25
|
+
Default vault root: `~/pareto-vault`
|
|
26
|
+
|
|
27
|
+
If the user has specified a different path, use that instead. Always confirm or infer
|
|
28
|
+
the vault path before writing files.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Workflow by task type
|
|
33
|
+
|
|
34
|
+
### 1. Initial vault scaffold
|
|
35
|
+
Triggered by: "set up the vault", "create the obsidian structure", "initialise vault"
|
|
36
|
+
|
|
37
|
+
1. Create the full directory structure (see **Vault structure** below)
|
|
38
|
+
2. Write `CLAUDE.md` at the vault root using `templates/CLAUDE.md`
|
|
39
|
+
3. Write `internal/_pareto-context.md` using `templates/pareto-context.md`
|
|
40
|
+
4. Write `clients/README.md` with one-line instructions
|
|
41
|
+
5. Print all created paths and confirm to the user
|
|
42
|
+
|
|
43
|
+
### 2. New client
|
|
44
|
+
Triggered by: "new client X", "create a client folder for X", "onboard client X"
|
|
45
|
+
|
|
46
|
+
1. Confirm the client name — convert to lowercase-hyphenated slug (e.g. `acme-corp`)
|
|
47
|
+
2. Ask for or infer: full client name, industry, primary contact name, engagement type
|
|
48
|
+
3. Create `clients/{slug}/` directory
|
|
49
|
+
4. Write `clients/{slug}/_context.md` using `templates/client-context.md`
|
|
50
|
+
5. Print the created path and remind the user to fill in any `[PLACEHOLDER]` fields
|
|
51
|
+
|
|
52
|
+
### 3. New meeting note
|
|
53
|
+
Triggered by: "log a meeting with X", "add meeting notes for X", "new call with X", "meeting with X"
|
|
54
|
+
|
|
55
|
+
1. Confirm client slug and meeting date (default: today in YYYY-MM-DD)
|
|
56
|
+
2. Ask for or infer: attendees, meeting type (kickoff / check-in / review / discovery / demo)
|
|
57
|
+
3. Write `clients/{slug}/YYYY-MM-DD-{type}.md` using `templates/meeting-note.md`
|
|
58
|
+
4. Print the created file path
|
|
59
|
+
|
|
60
|
+
### 4. New proposal
|
|
61
|
+
Triggered by: "create a proposal for X", "draft a proposal for X", "new proposal X"
|
|
62
|
+
|
|
63
|
+
1. Confirm client slug and version (default: v1)
|
|
64
|
+
2. Check if a previous version exists — if so, bump to v2, v3, etc.
|
|
65
|
+
3. Write `proposals/{slug}-proposal-v{N}-{YYYY-MM-DD}.md` using `templates/proposal.md`
|
|
66
|
+
4. Print the created file path
|
|
67
|
+
|
|
68
|
+
### 5. Update existing note
|
|
69
|
+
Triggered by: "update the context for X", "edit the meeting note from DATE", "add to X"
|
|
70
|
+
|
|
71
|
+
1. Read the existing file first
|
|
72
|
+
2. Make the requested changes
|
|
73
|
+
3. Confirm what changed and print the file path
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Vault structure
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
{vault-root}/
|
|
81
|
+
├── CLAUDE.md
|
|
82
|
+
├── internal/
|
|
83
|
+
│ └── _pareto-context.md
|
|
84
|
+
├── clients/
|
|
85
|
+
│ └── {client-slug}/
|
|
86
|
+
│ ├── _context.md
|
|
87
|
+
│ └── YYYY-MM-DD-{type}.md
|
|
88
|
+
├── proposals/
|
|
89
|
+
│ └── {slug}-proposal-v{N}-{date}.md
|
|
90
|
+
└── projects/
|
|
91
|
+
└── {project-slug}/
|
|
92
|
+
├── _brief.md
|
|
93
|
+
└── _decisions.md
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## File naming conventions
|
|
99
|
+
|
|
100
|
+
- Client slugs: lowercase, hyphen-separated (`acme-corp`, `ing-bank`)
|
|
101
|
+
- Meeting notes: `YYYY-MM-DD-{type}.md` — type is `kickoff`, `check-in`, `review`, `discovery`, `demo`
|
|
102
|
+
- Proposals: `{client-slug}-proposal-v{N}-{YYYY-MM-DD}.md`
|
|
103
|
+
- Files prefixed `_` are source-of-truth — never auto-delete or overwrite without confirmation
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Templates
|
|
108
|
+
|
|
109
|
+
Read the relevant template before writing any file:
|
|
110
|
+
|
|
111
|
+
| Task | Template |
|
|
112
|
+
|---|---|
|
|
113
|
+
| Vault root map | `templates/CLAUDE.md` |
|
|
114
|
+
| Pareto internal context | `templates/pareto-context.md` |
|
|
115
|
+
| Client context | `templates/client-context.md` |
|
|
116
|
+
| Meeting note | `templates/meeting-note.md` |
|
|
117
|
+
| Proposal | `templates/proposal.md` |
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Conventions
|
|
122
|
+
|
|
123
|
+
- Use `[PLACEHOLDER]` for fields the user must fill in manually
|
|
124
|
+
- Never overwrite `_context.md` without reading it first and confirming
|
|
125
|
+
- Meeting notes are append-only — never edit past notes, always create new
|
|
126
|
+
- Proposals are versioned — if v1 exists, create v2
|
|
127
|
+
- Always print full file paths after creation so the user can verify in Obsidian
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Pareto knowledge vault
|
|
2
|
+
|
|
3
|
+
This is the Pareto Project Obsidian knowledge vault. All client context,
|
|
4
|
+
meeting notes, proposals, and internal Pareto knowledge lives here.
|
|
5
|
+
|
|
6
|
+
## Structure
|
|
7
|
+
|
|
8
|
+
- `internal/_pareto-context.md` — Pareto's identity, positioning, principles, tone
|
|
9
|
+
- `clients/{slug}/_context.md` — stable client profile (source of truth)
|
|
10
|
+
- `clients/{slug}/YYYY-MM-DD-{type}.md` — meeting notes, chronological
|
|
11
|
+
- `proposals/{slug}-proposal-v{N}-{date}.md` — versioned proposals
|
|
12
|
+
- `projects/{slug}/_brief.md` — project brief
|
|
13
|
+
- `projects/{slug}/_decisions.md` — key decisions log
|
|
14
|
+
|
|
15
|
+
## Conventions
|
|
16
|
+
|
|
17
|
+
- Files prefixed with `_` are source-of-truth documents
|
|
18
|
+
- Meeting note types: kickoff, check-in, review, discovery, demo
|
|
19
|
+
- Client slugs are lowercase-hyphenated (e.g. acme-corp)
|
|
20
|
+
- Always read `_context.md` before working on any client task
|
|
21
|
+
- For proposals, read the most recent meeting notes first
|
|
22
|
+
|
|
23
|
+
## How to use this vault in Claude Code
|
|
24
|
+
|
|
25
|
+
When working on a client task:
|
|
26
|
+
1. Read `internal/_pareto-context.md` for Pareto's positioning and tone
|
|
27
|
+
2. Read `clients/{slug}/_context.md` for the client profile
|
|
28
|
+
3. Read the last 2–3 meeting notes for recent context
|
|
29
|
+
4. Then proceed with the task
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: client-context
|
|
3
|
+
client: [PLACEHOLDER: Full Client Name]
|
|
4
|
+
slug: [PLACEHOLDER: client-slug]
|
|
5
|
+
industry: [PLACEHOLDER]
|
|
6
|
+
status: active
|
|
7
|
+
contract-start: [PLACEHOLDER: YYYY-MM-DD]
|
|
8
|
+
contract-end: [PLACEHOLDER: YYYY-MM-DD or ongoing]
|
|
9
|
+
last-updated: [PLACEHOLDER: YYYY-MM-DD]
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# [PLACEHOLDER: Full Client Name] — client context
|
|
13
|
+
|
|
14
|
+
This is the source-of-truth profile for this client.
|
|
15
|
+
Read this before any client work. Update when material things change.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Who they are
|
|
20
|
+
|
|
21
|
+
**[PLACEHOLDER: Full Client Name]** is [PLACEHOLDER: one sentence describing the company —
|
|
22
|
+
what they do, their size, their market position].
|
|
23
|
+
|
|
24
|
+
- **Industry:** [PLACEHOLDER]
|
|
25
|
+
- **HQ:** [PLACEHOLDER: city, country]
|
|
26
|
+
- **Size:** [PLACEHOLDER: headcount or revenue range]
|
|
27
|
+
- **Website:** [PLACEHOLDER: URL]
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Key contacts
|
|
32
|
+
|
|
33
|
+
| Name | Role | Email | Notes |
|
|
34
|
+
|---|---|---|---|
|
|
35
|
+
| [PLACEHOLDER] | [PLACEHOLDER: e.g. CEO] | [PLACEHOLDER] | Primary contact |
|
|
36
|
+
| [PLACEHOLDER] | [PLACEHOLDER] | [PLACEHOLDER] | |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Why they hired Pareto
|
|
41
|
+
|
|
42
|
+
[PLACEHOLDER: 2–3 sentences on the problem or opportunity that brought them to us.
|
|
43
|
+
What were they trying to achieve? What was the trigger?]
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Engagement summary
|
|
48
|
+
|
|
49
|
+
- **Type:** [PLACEHOLDER: retainer / project / advisory]
|
|
50
|
+
- **Scope:** [PLACEHOLDER: brief description of what we're doing]
|
|
51
|
+
- **Start:** [PLACEHOLDER: YYYY-MM-DD]
|
|
52
|
+
- **Status:** [PLACEHOLDER: active / on hold / complete]
|
|
53
|
+
- **Linear project:** [PLACEHOLDER: link or project name]
|
|
54
|
+
- **Google Drive folder:** [PLACEHOLDER: link]
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Goals and success metrics
|
|
59
|
+
|
|
60
|
+
What does success look like for this client?
|
|
61
|
+
|
|
62
|
+
1. [PLACEHOLDER]
|
|
63
|
+
2. [PLACEHOLDER]
|
|
64
|
+
3. [PLACEHOLDER]
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Their context and constraints
|
|
69
|
+
|
|
70
|
+
[PLACEHOLDER: anything material about their situation — tech stack, org structure,
|
|
71
|
+
internal politics, budget constraints, timelines, regulatory context, past initiatives
|
|
72
|
+
that succeeded or failed. This is the nuance that makes advice actually useful.]
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Their AI maturity
|
|
77
|
+
|
|
78
|
+
[PLACEHOLDER: where are they on the AI adoption curve?
|
|
79
|
+
e.g. "just starting, no AI tools in production yet" or "have GitHub Copilot, exploring agents"]
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Communication preferences
|
|
84
|
+
|
|
85
|
+
- **Preferred channel:** [PLACEHOLDER: email / Slack / WhatsApp]
|
|
86
|
+
- **Meeting cadence:** [PLACEHOLDER: e.g. weekly 45-min check-in, Thursdays]
|
|
87
|
+
- **Style:** [PLACEHOLDER: e.g. prefers short written updates over long decks]
|
|
88
|
+
- **Decision-maker:** [PLACEHOLDER: who ultimately approves things]
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Key decisions made
|
|
93
|
+
|
|
94
|
+
| Date | Decision | Context |
|
|
95
|
+
|---|---|---|
|
|
96
|
+
| [PLACEHOLDER] | [PLACEHOLDER] | [PLACEHOLDER] |
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Open questions
|
|
101
|
+
|
|
102
|
+
- [PLACEHOLDER]
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Risks and watch-outs
|
|
107
|
+
|
|
108
|
+
- [PLACEHOLDER: e.g. budget approval pending for phase 2]
|
|
109
|
+
- [PLACEHOLDER: e.g. key sponsor leaving in Q3]
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Related files
|
|
114
|
+
|
|
115
|
+
- `[[proposals/{slug}-proposal-v1-{date}]]`
|
|
116
|
+
- Meeting notes: see other files in this folder
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: meeting-note
|
|
3
|
+
client: [PLACEHOLDER: Full Client Name]
|
|
4
|
+
date: [PLACEHOLDER: YYYY-MM-DD]
|
|
5
|
+
meeting-type: [PLACEHOLDER: kickoff / check-in / review / discovery / demo]
|
|
6
|
+
attendees-pareto: [PLACEHOLDER: Pareto team members present]
|
|
7
|
+
attendees-client: [PLACEHOLDER: Client contacts present]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# [PLACEHOLDER: Full Client Name] — [PLACEHOLDER: meeting type] — [PLACEHOLDER: YYYY-MM-DD]
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Context recap
|
|
15
|
+
|
|
16
|
+
[PLACEHOLDER: 2–3 sentences on where things stood going into this meeting.
|
|
17
|
+
"Previously on..." — what were we working on, what was the outstanding question?
|
|
18
|
+
This is the most important field for future AI context. Write it as if briefing
|
|
19
|
+
someone who hasn't spoken to this client in 3 weeks.]
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Discussed
|
|
24
|
+
|
|
25
|
+
[PLACEHOLDER: bullet points of the main topics covered, in order.
|
|
26
|
+
Not exhaustive notes — the key substance of what was talked about.]
|
|
27
|
+
|
|
28
|
+
-
|
|
29
|
+
-
|
|
30
|
+
-
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Decisions made
|
|
35
|
+
|
|
36
|
+
[PLACEHOLDER: things that were agreed, confirmed, or resolved.
|
|
37
|
+
Be specific — vague decisions create future confusion.]
|
|
38
|
+
|
|
39
|
+
-
|
|
40
|
+
-
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Actions
|
|
45
|
+
|
|
46
|
+
| Owner | Action | Due |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| [PLACEHOLDER] | [PLACEHOLDER] | [PLACEHOLDER: YYYY-MM-DD or "next call"] |
|
|
49
|
+
| [PLACEHOLDER] | [PLACEHOLDER] | [PLACEHOLDER] |
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Open questions
|
|
54
|
+
|
|
55
|
+
[PLACEHOLDER: things that came up but weren't resolved.
|
|
56
|
+
These should either be answered before the next meeting or explicitly carried forward.]
|
|
57
|
+
|
|
58
|
+
-
|
|
59
|
+
-
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Next meeting
|
|
64
|
+
|
|
65
|
+
- **Date:** [PLACEHOLDER: YYYY-MM-DD or TBC]
|
|
66
|
+
- **Agenda:** [PLACEHOLDER: what needs to be covered next time]
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: internal
|
|
3
|
+
last-updated: [PLACEHOLDER: YYYY-MM-DD]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Pareto — internal context
|
|
7
|
+
|
|
8
|
+
This file is the standing context for all Claude-assisted work at Pareto.
|
|
9
|
+
Paste this at the top of any Claude conversation involving client work.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Who we are
|
|
14
|
+
|
|
15
|
+
**Pareto** is [PLACEHOLDER: one sentence description of what Pareto does].
|
|
16
|
+
|
|
17
|
+
Founded: [PLACEHOLDER: year], based in the Netherlands (Dutch BV).
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## What we do
|
|
22
|
+
|
|
23
|
+
[PLACEHOLDER: 2–3 sentences describing Pareto's core service or product.
|
|
24
|
+
What problem do you solve? For whom? How?]
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Who we work with
|
|
29
|
+
|
|
30
|
+
**Ideal client profile:**
|
|
31
|
+
- [PLACEHOLDER: industry or sector]
|
|
32
|
+
- [PLACEHOLDER: company size]
|
|
33
|
+
- [PLACEHOLDER: key characteristic — e.g. "companies undergoing AI transformation"]
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Engagement model
|
|
38
|
+
|
|
39
|
+
[PLACEHOLDER: describe how Pareto typically works with clients.
|
|
40
|
+
e.g. retainer / project-based / productised service / advisory]
|
|
41
|
+
|
|
42
|
+
Typical engagement length: [PLACEHOLDER]
|
|
43
|
+
Typical team size per engagement: [PLACEHOLDER]
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Pricing principles
|
|
48
|
+
|
|
49
|
+
[PLACEHOLDER: brief description of how Pareto prices work.
|
|
50
|
+
e.g. day rate, fixed-price projects, retainer tiers]
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Our positioning
|
|
55
|
+
|
|
56
|
+
**We are not:**
|
|
57
|
+
- [PLACEHOLDER: e.g. a traditional consulting firm]
|
|
58
|
+
- [PLACEHOLDER: e.g. a software agency]
|
|
59
|
+
|
|
60
|
+
**We are:**
|
|
61
|
+
- [PLACEHOLDER: e.g. an AI-first transformation partner]
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Tone and communication style
|
|
66
|
+
|
|
67
|
+
- [PLACEHOLDER: e.g. direct, no jargon, evidence-led]
|
|
68
|
+
- [PLACEHOLDER: e.g. collaborative — we work with clients, not at them]
|
|
69
|
+
- [PLACEHOLDER: e.g. pragmatic — we focus on what moves the needle]
|
|
70
|
+
|
|
71
|
+
When writing on behalf of Pareto:
|
|
72
|
+
- Use "we" for Pareto
|
|
73
|
+
- Avoid buzzwords like "synergy", "leverage" (as a verb), "ecosystem"
|
|
74
|
+
- [PLACEHOLDER: any other style preferences]
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Key people
|
|
79
|
+
|
|
80
|
+
| Name | Role |
|
|
81
|
+
|---|---|
|
|
82
|
+
| [PLACEHOLDER] | Founder |
|
|
83
|
+
| [PLACEHOLDER] | [PLACEHOLDER] |
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Constraints and principles
|
|
88
|
+
|
|
89
|
+
- We are a Dutch BV — all contracts governed by Dutch law
|
|
90
|
+
- GDPR compliance is non-negotiable for all client work
|
|
91
|
+
- [PLACEHOLDER: any other hard constraints]
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Tools and stack
|
|
96
|
+
|
|
97
|
+
- Knowledge: Obsidian (this vault)
|
|
98
|
+
- Project tracking: Linear
|
|
99
|
+
- Deliverables: Google Drive
|
|
100
|
+
- Communication: Slack, Gmail (Google Workspace)
|
|
101
|
+
- Development: Claude Code, GitHub, Docker, AWS/GCP
|
|
102
|
+
- Finance: Moneybird
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: proposal
|
|
3
|
+
client: [PLACEHOLDER: Full Client Name]
|
|
4
|
+
version: [PLACEHOLDER: v1]
|
|
5
|
+
date: [PLACEHOLDER: YYYY-MM-DD]
|
|
6
|
+
status: draft
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Proposal — [PLACEHOLDER: Engagement Title]
|
|
10
|
+
**Prepared for:** [PLACEHOLDER: Full Client Name]
|
|
11
|
+
**Prepared by:** The Pareto Project
|
|
12
|
+
**Date:** [PLACEHOLDER: YYYY-MM-DD]
|
|
13
|
+
**Version:** [PLACEHOLDER: v1]
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## The situation
|
|
18
|
+
|
|
19
|
+
[PLACEHOLDER: 2–3 sentences on the client's current situation and the problem or
|
|
20
|
+
opportunity this proposal addresses. Written from their perspective — what is
|
|
21
|
+
happening in their world that makes this work important right now?]
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## What we propose
|
|
26
|
+
|
|
27
|
+
[PLACEHOLDER: clear description of what Pareto will do. Avoid jargon.
|
|
28
|
+
Write it so the client could describe it accurately to a colleague.]
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Scope of work
|
|
33
|
+
|
|
34
|
+
### Phase 1 — [PLACEHOLDER: phase name]
|
|
35
|
+
[PLACEHOLDER: description of what this phase covers]
|
|
36
|
+
|
|
37
|
+
**Deliverables:**
|
|
38
|
+
- [PLACEHOLDER]
|
|
39
|
+
- [PLACEHOLDER]
|
|
40
|
+
|
|
41
|
+
**Duration:** [PLACEHOLDER: e.g. 3 weeks]
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
### Phase 2 — [PLACEHOLDER: phase name]
|
|
46
|
+
[PLACEHOLDER: description]
|
|
47
|
+
|
|
48
|
+
**Deliverables:**
|
|
49
|
+
- [PLACEHOLDER]
|
|
50
|
+
|
|
51
|
+
**Duration:** [PLACEHOLDER]
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## What's not in scope
|
|
56
|
+
|
|
57
|
+
[PLACEHOLDER: explicit list of things this engagement does NOT cover.
|
|
58
|
+
This protects both parties and sets clear expectations.]
|
|
59
|
+
|
|
60
|
+
-
|
|
61
|
+
-
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## How we'll work together
|
|
66
|
+
|
|
67
|
+
[PLACEHOLDER: brief description of the working model.
|
|
68
|
+
e.g. weekly check-ins, async updates via Slack, deliverables reviewed in shared Drive]
|
|
69
|
+
|
|
70
|
+
**Your time commitment:** [PLACEHOLDER: e.g. ~2 hours/week for reviews and input]
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Investment
|
|
75
|
+
|
|
76
|
+
| Item | Amount |
|
|
77
|
+
|---|---|
|
|
78
|
+
| [PLACEHOLDER: Phase 1] | €[PLACEHOLDER] |
|
|
79
|
+
| [PLACEHOLDER: Phase 2] | €[PLACEHOLDER] |
|
|
80
|
+
| **Total** | **€[PLACEHOLDER]** |
|
|
81
|
+
|
|
82
|
+
**Payment terms:** [PLACEHOLDER: e.g. 50% upfront, 50% on completion]
|
|
83
|
+
**Invoicing:** Via Moneybird, 30-day payment terms
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Timeline
|
|
88
|
+
|
|
89
|
+
| Milestone | Date |
|
|
90
|
+
|---|---|
|
|
91
|
+
| Kick-off | [PLACEHOLDER: YYYY-MM-DD] |
|
|
92
|
+
| [PLACEHOLDER: Phase 1 complete] | [PLACEHOLDER] |
|
|
93
|
+
| [PLACEHOLDER: Final delivery] | [PLACEHOLDER] |
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Why Pareto
|
|
98
|
+
|
|
99
|
+
[PLACEHOLDER: 2–3 sentences on why Pareto is the right partner for this.
|
|
100
|
+
Specific to this client and engagement — not generic credentials.]
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Next steps
|
|
105
|
+
|
|
106
|
+
To proceed:
|
|
107
|
+
1. Review this proposal and share any questions or changes
|
|
108
|
+
2. Sign the accompanying engagement letter
|
|
109
|
+
3. Pay the initial invoice
|
|
110
|
+
4. We schedule kick-off for [PLACEHOLDER: date]
|
|
111
|
+
|
|
112
|
+
Questions? Reach us at [PLACEHOLDER: email or Slack]
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
*This proposal is valid until [PLACEHOLDER: YYYY-MM-DD].*
|
|
117
|
+
*Governed by Dutch law. VAT number: [PLACEHOLDER].*
|