Brandedflow target-list
<!-- LOCKED — deterministic module v1 -->
install
source · Clone the upstream repo
git clone https://github.com/JenCW/brandedflow
manifest:
business-os/sales/target-list/skill.mdsource content
<!-- LOCKED — deterministic module v1 -->
Skill: Target list
Purpose
Build a deterministic mock target list JSON from the client’s ICP (no live APIs). Same
client_id and same
icp.json always produce the same targets.json.
Task
Input (runner):
{ client_id } — optional projectRoot (defaults to repo root).
Reads (only):
clients/{client_id}/icp/icp.json
Writes (only):
clients/{client_id}/target-list/targets.json
Output schema (deterministic)
Top-level key:
| Field | Type | Rules |
|---|---|---|
| object[] | At least one target; each item has all fields below, all non-empty strings where noted; ∈ | | . |
Each target:
| Field | Type | Rules |
|---|---|---|
| string | Non-empty mock builder name (deterministic from ). |
| string | From ICP when present, else . |
| string | Always for this module version. |
| string | Always . |
| string | One of Owner, Principal Builder, Project Director (fixed order across three targets). |
| string | Non-empty; synthesized from ICP , , and . |
| string | , , or aligned to decision-maker row. |
Execution flow
- Runner — Validate
, loadclient_id
(fail closed if missing or invalid JSON), build payload, eval → if fail, refine once → re-eval → strip internal keys → write onlyicp.json
.targets.json - Eval — Structural validation; pass/fail only (orchestration envelope passthrough same as research/icp).
- Refine — On fail, rebuild or patch from ICP snapshot / stub; must pass eval after refine.
Rules
- No external APIs.
- No randomness; no
; stable hashing (Math.random()
) for name selection only.djb2 - Fail closed on bad input, missing ICP, failed validation after refine, path escape, or I/O errors.