velocity-pivot 1.0.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/LICENSE ADDED
@@ -0,0 +1,29 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 alfredats
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
23
+ ---
24
+
25
+ The token corpus in corpus.js was inspired by and partially derived from
26
+ "Introducing Velocity Pivot", The Economist, 14 May 2026. Individual words
27
+ and short phrases are not subject to copyright; no substantial portion of the
28
+ original article text has been reproduced. All rights in the original article
29
+ remain with The Economist Newspaper Limited.
package/README.md ADDED
@@ -0,0 +1,73 @@
1
+ # velocity-pivot
2
+
3
+ A modern alternative to Lorem Ipsum, inspired by [The Economist's "Velocity Pivot"](https://www.economist.com/business/2026/05/14/introducing-velocity-pivot) (May 2026). Generates meaningless corporate placeholder text drawn from a corpus of buzzwords, jargon, and strategic non-sequiturs.
4
+
5
+ > "For most forms of corporate communication, it is not necessary to change the text at all before you publish."
6
+ > — *The Economist*
7
+
8
+ ## Installation
9
+
10
+ ```sh
11
+ npm install velocity-pivot
12
+ ```
13
+
14
+ To use the CLI globally:
15
+
16
+ ```sh
17
+ npm install -g velocity-pivot
18
+ ```
19
+
20
+ ## CLI
21
+
22
+ ```
23
+ velocity-pivot <count> <paragraphs|words|bytes>
24
+ ```
25
+
26
+ ### Examples
27
+
28
+ ```sh
29
+ # 2 paragraphs of placeholder text
30
+ velocity-pivot 2 paragraphs
31
+
32
+ # 20 words
33
+ velocity-pivot 20 words
34
+
35
+ # ~500 bytes of text
36
+ velocity-pivot 500 bytes
37
+ ```
38
+
39
+ All output begins with *"Velocity pivot hunger to win"*.
40
+
41
+ ## Library
42
+
43
+ ```js
44
+ const { velocityPivot } = require('velocity-pivot');
45
+
46
+ // Paragraphs
47
+ velocityPivot(3, 'paragraphs');
48
+
49
+ // Words
50
+ velocityPivot(50, 'words');
51
+
52
+ // Bytes
53
+ velocityPivot(1024, 'bytes');
54
+ ```
55
+
56
+ ### `velocityPivot(count, type)`
57
+
58
+ | Parameter | Type | Description |
59
+ |-----------|------|-------------|
60
+ | `count` | `number` | A positive integer |
61
+ | `type` | `string` | `"paragraphs"`, `"words"`, or `"bytes"` |
62
+
63
+ Returns a `string`. Throws if `count` is not a positive integer or `type` is invalid.
64
+
65
+ **paragraphs** — Each paragraph is 15–30 randomly selected tokens joined into a sentence.
66
+
67
+ **words** — `count` tokens from the corpus joined with spaces.
68
+
69
+ **bytes** — Text generated until the UTF-8 byte length meets `count`, then trimmed to the nearest word boundary.
70
+
71
+ ## License
72
+
73
+ MIT
package/bin/cli.js ADDED
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ const { velocityPivot } = require('..');
5
+
6
+ const [,, countArg, typeArg] = process.argv;
7
+ const validTypes = ['paragraphs', 'words', 'bytes'];
8
+
9
+ if (!countArg || !typeArg) {
10
+ console.error('Usage: velocity-pivot <count> <paragraphs|words|bytes>');
11
+ process.exit(1);
12
+ }
13
+
14
+ const count = Number(countArg);
15
+ if (!Number.isInteger(count) || count <= 0) {
16
+ console.error('Error: count must be a positive integer');
17
+ process.exit(1);
18
+ }
19
+
20
+ if (!validTypes.includes(typeArg)) {
21
+ console.error(`Error: type must be one of: ${validTypes.join(', ')}`);
22
+ process.exit(1);
23
+ }
24
+
25
+ console.log(velocityPivot(count, typeArg));
package/corpus.js ADDED
@@ -0,0 +1,419 @@
1
+ 'use strict';
2
+
3
+ // Tokens extracted from The Economist's "Velocity Pivot" (2026-05-14)
4
+ module.exports = [
5
+ // Paragraph 1
6
+ 'velocity pivot',
7
+ 'hunger to win',
8
+ 'relentless execution',
9
+ 'insatiable appetite',
10
+ 'artificial intelligence',
11
+ 'tokenmaxxing',
12
+ 'tokenised',
13
+ 'toecurling',
14
+ 'double-digit growth',
15
+ 'transformational volatility',
16
+ 'fireside chat',
17
+ 'drinking from a fire hose',
18
+ 'burning platform',
19
+ 'general pyromania',
20
+ 'augmentation not automation',
21
+ "it's not AI that will take your job but the person using AI",
22
+ 'headcount reduction',
23
+ 'tough decisions',
24
+ 'rightsizing',
25
+
26
+ // Paragraph 2
27
+ 'innovation powerhouse',
28
+ 'three horizons',
29
+ 'four Ps',
30
+ 'five whys',
31
+ 'six is too many',
32
+ 'town hall',
33
+ 'watercooler conversations',
34
+ 'think like an owner',
35
+ 'speed up',
36
+ 'fast forward',
37
+ 'step back',
38
+ 'step up',
39
+ 'zoom in',
40
+ 'zoom out',
41
+ 'helicopter view',
42
+ 'deep dive',
43
+ 'top-down',
44
+ 'bottom-up',
45
+ 'downside',
46
+ 'upside',
47
+ 'rotating turnaround',
48
+
49
+ // Paragraph 3
50
+ 'change management',
51
+ 'strategic strategising',
52
+ 'waterfall',
53
+ 'agile',
54
+ 'sprint',
55
+ 'cascade',
56
+ 'tentpole',
57
+ 'brainstorming',
58
+ 'whiteboard',
59
+ 'miro board',
60
+ 'bored senseless',
61
+ 'modernising',
62
+ 'digitisation',
63
+ 'revolution not evolution',
64
+ 'vibe-coding',
65
+ 'value-added',
66
+ 'MVP',
67
+ 'SVP',
68
+ 'FIFA',
69
+ 'CRO',
70
+ 'MCP',
71
+ 'PRD',
72
+ 'BBQ',
73
+ 'BAU',
74
+ 'KPI',
75
+ 'DEI',
76
+
77
+ // Paragraph 4
78
+ 'data is the new oil',
79
+ 'models are the new oil',
80
+ 'oil is the new oil',
81
+ 'surplus abundance',
82
+ 'multiplier effect',
83
+ '10x',
84
+ '100x',
85
+ '1,000x',
86
+ '10,000x',
87
+ 'deep impact',
88
+ 'really deep impact',
89
+ 'supercharged',
90
+ 'superexcited',
91
+ 'superpower',
92
+ 'superintelligence',
93
+ 'supermarket',
94
+ 'superstars',
95
+ 'tipping point',
96
+ 'inflection point',
97
+ 'choke points',
98
+ 'three-point turn',
99
+ 'lean',
100
+ 'elevate',
101
+ 'sharpen',
102
+ 'reach out',
103
+ 'circle back',
104
+ 'converge',
105
+ 'spin up',
106
+ 'spin down',
107
+ 'spin out',
108
+
109
+ // Paragraph 5
110
+ 'edge cases',
111
+ 'use cases',
112
+ 'suitcases',
113
+ 'frequent flyer lounges',
114
+ 'platinum member',
115
+ 'air miles',
116
+ 'in flight',
117
+ 'dynamic environment',
118
+ 'shifting landscape',
119
+ 'new industrial revolution',
120
+ 'bias for action',
121
+ 'actionable traction',
122
+ 'tractionable',
123
+ 'reimagine',
124
+ 'reinvent',
125
+ 'reinforce',
126
+ 'revamp',
127
+ 'renew',
128
+ 'redefine',
129
+ 'resilient',
130
+ 'grit',
131
+ 'growth mindset',
132
+ 'futuristic',
133
+ 'heuristic',
134
+ 'holistic',
135
+ 'optimistic',
136
+ 'systemic',
137
+ 'getting the ic',
138
+
139
+ // Paragraph 6
140
+ 'transforming the value proposition',
141
+ 'propositioning transformational value',
142
+ 'delighting customers',
143
+ 'strengthening communities',
144
+ 'leveraging insights',
145
+ 'other verb-noun combinations',
146
+ 'end-to-end workflows',
147
+ 'deployment',
148
+ 'training',
149
+ 'inference stack',
150
+ 'full-stack',
151
+ 'slack attack',
152
+ 'geopolitics',
153
+ 'geoeconomics',
154
+ 'geotechnology',
155
+ 'geography is back',
156
+ 'top-right-hand quadrant',
157
+ 'total alignment',
158
+ 'partial alignment',
159
+ 'non-alignment',
160
+ 'disagree and commit',
161
+
162
+ // Paragraph 7
163
+ 'unfolding',
164
+ 'ever-changing',
165
+ 'fresh perspectives',
166
+ 'instant personalised',
167
+ 'large-scale',
168
+ 'multi-year',
169
+ 'multi-service',
170
+ 'long-term investment',
171
+ 'pipelines',
172
+ 'embedded ecosystem',
173
+ 'leaders',
174
+ 'leading through leadership',
175
+ 'leaden prose',
176
+ 'new normal',
177
+ 'new paradigms',
178
+ 'paradox',
179
+ 'parabola',
180
+ 'hockey-stick',
181
+ 'J-curve',
182
+ 'K-shaped',
183
+ 'A-game',
184
+ 'C-suite',
185
+ 'B-yoncé',
186
+
187
+ // Paragraph 8
188
+ 'improved outcomes',
189
+ 'purpose',
190
+ 'values',
191
+ 'mission',
192
+ 'behaviours',
193
+ 'customer-centricity',
194
+ 'customer-obsessed',
195
+ 'bold',
196
+ 'audacious',
197
+ 'daring',
198
+ 'restless ambition',
199
+ 'world-class',
200
+ 'industry-leading',
201
+ 'game-changing',
202
+ 'topline metrics',
203
+ 'blueprint',
204
+ 'corporate DNA',
205
+ 'digital workforce',
206
+ 'orchestration',
207
+ 'agentic compute',
208
+ 'fuelling',
209
+ 'propelling',
210
+ 'driving',
211
+ 'accelerating',
212
+ 'never braking',
213
+ 'operational platform',
214
+ 'analytics',
215
+ 'global footprint',
216
+ 'local know-how',
217
+ 'uniquely positioned',
218
+ 'scaling',
219
+ 'powering',
220
+ 'delivering',
221
+ 'achieving',
222
+ 'winning',
223
+ 'executing',
224
+ 'mastering',
225
+ 'aggressive complete passivity',
226
+
227
+ // Paragraph 9
228
+ 'decision points',
229
+ 'gates',
230
+ 'milestones',
231
+ 'gallstones',
232
+ 'durable',
233
+ 'sustainable',
234
+ 'confident momentum',
235
+ 'sentiment',
236
+ 'differentiated competitive advantage',
237
+ 'organic growth',
238
+ 'inorganic growth',
239
+ 'basically growth',
240
+ 'core business',
241
+ 'core strength',
242
+ 'cor blimey',
243
+ 'cycles',
244
+ 'cycling',
245
+ 'triathlon',
246
+ 'lycra',
247
+ 'stretch goals',
248
+ 'objectives',
249
+ 'key results',
250
+ 'at scale',
251
+ 'pace of change',
252
+ 'testament to the value of the brand',
253
+ 'maximise breakthroughs',
254
+ 'unlock potential',
255
+ 'expand frontiers',
256
+ 'utilise headroom',
257
+ 'advance something or other',
258
+
259
+ // Strategy & consulting
260
+ 'low-hanging fruit',
261
+ 'boil the ocean',
262
+ 'move the needle',
263
+ 'peel back the onion',
264
+ 'blue ocean strategy',
265
+ 'red ocean',
266
+ 'first mover advantage',
267
+ 'fast follower',
268
+ 'land and expand',
269
+ 'beachhead market',
270
+ 'moonshot',
271
+ 'north star',
272
+ 'true north',
273
+ 'guiding principles',
274
+ 'target operating model',
275
+ 'org design',
276
+ 'span of control',
277
+ 'run the play',
278
+ 'center of excellence',
279
+ 'tiger team',
280
+ 'war room',
281
+ 'skunkworks',
282
+ 'sandbox',
283
+ 'synergies',
284
+ 'paradigm shift',
285
+ 'thought leadership',
286
+ 'value creation',
287
+ 'value destruction',
288
+ 'SWOT',
289
+ 'single-threaded ownership',
290
+ 'working backwards',
291
+ 'pre-mortem',
292
+ 'two-pizza team',
293
+ 'BHAG',
294
+
295
+ // Technology
296
+ 'cloud-native',
297
+ 'microservices',
298
+ 'containerisation',
299
+ 'serverless',
300
+ 'zero-trust',
301
+ 'shift left',
302
+ 'DevSecOps',
303
+ 'platform engineering',
304
+ 'developer experience',
305
+ 'infrastructure as code',
306
+ 'digital twin',
307
+ 'foundation models',
308
+ 'vector embeddings',
309
+ 'RAG',
310
+ 'fine-tuning',
311
+ 'prompt engineering',
312
+ 'hallucination',
313
+ 'multimodal',
314
+ 'ambient computing',
315
+ 'edge computing',
316
+ 'quantum advantage',
317
+ 'API-first',
318
+ 'composable architecture',
319
+ 'event-driven',
320
+ 'observability',
321
+ 'chaos engineering',
322
+ 'blameless postmortem',
323
+ 'SLOs',
324
+ 'error budgets',
325
+ 'GitOps',
326
+
327
+ // Finance & growth
328
+ 'EBITDA',
329
+ 'gross margin expansion',
330
+ 'operating leverage',
331
+ 'burn rate',
332
+ 'unit economics',
333
+ 'lifetime value',
334
+ 'LTV to CAC',
335
+ 'payback period',
336
+ 'ARR',
337
+ 'net revenue retention',
338
+ 'negative churn',
339
+ 'upsell',
340
+ 'cross-sell',
341
+ 'attach rate',
342
+ 'TAM',
343
+ 'go-to-market',
344
+ 'product-led growth',
345
+ 'sales-led growth',
346
+ 'community-led growth',
347
+ 'ecosystem play',
348
+ 'platform play',
349
+ 'network effects',
350
+ 'flywheel',
351
+ 'compounding returns',
352
+ 'rule of 40',
353
+ 'magic number',
354
+
355
+ // People & HR
356
+ 'talent density',
357
+ 'high performers',
358
+ 'keeper test',
359
+ 'radical candor',
360
+ 'radical transparency',
361
+ 'psychological safety',
362
+ 'belonging',
363
+ 'employee value proposition',
364
+ 'employer brand',
365
+ 'onboarding journey',
366
+ 'upskilling',
367
+ 'reskilling',
368
+ 'capability building',
369
+ 'talent marketplace',
370
+ 'internal mobility',
371
+ 'career lattice',
372
+ 'competency framework',
373
+ 'performance calibration',
374
+ 'stack ranking',
375
+ 'continuous feedback',
376
+ 'people analytics',
377
+ 'future of work',
378
+ 'async-first',
379
+ 'distributed teams',
380
+ 'skills taxonomy',
381
+
382
+ // Marketing & customers
383
+ 'brand purpose',
384
+ 'authentic storytelling',
385
+ 'demand generation',
386
+ 'account-based marketing',
387
+ 'full-funnel',
388
+ 'top of funnel',
389
+ 'conversion rate optimisation',
390
+ 'growth hacking',
391
+ 'product-market fit',
392
+ 'jobs to be done',
393
+ 'customer journey',
394
+ 'touchpoints',
395
+ 'omnichannel',
396
+ 'frictionless',
397
+ 'personalisation at scale',
398
+ 'share of wallet',
399
+ 'net promoter score',
400
+ 'earned media',
401
+ 'viral coefficient',
402
+
403
+ // Process & meetings
404
+ 'retrospective',
405
+ 'stand-up',
406
+ 'all-hands',
407
+ 'skip-level',
408
+ 'offsite',
409
+ 'ideation session',
410
+ 'design sprint',
411
+ 'hackathon',
412
+ 'demo day',
413
+ 'readout',
414
+ 'RACI',
415
+ 'decision rights',
416
+ 'minimum lovable product',
417
+ 'V2MOM',
418
+ 'OKR',
419
+ ];
package/index.js ADDED
@@ -0,0 +1,66 @@
1
+ 'use strict';
2
+
3
+ const corpus = require('./corpus');
4
+
5
+ const PREAMBLE = ['velocity pivot', 'hunger to win'];
6
+
7
+ function pick() {
8
+ return corpus[Math.floor(Math.random() * corpus.length)];
9
+ }
10
+
11
+ function generateWords(count) {
12
+ const tokens = [...PREAMBLE];
13
+ while (tokens.length < count) {
14
+ tokens.push(pick());
15
+ }
16
+ return tokens.slice(0, count).join(' ');
17
+ }
18
+
19
+ function generateParagraph(prefix = []) {
20
+ const count = 15 + Math.floor(Math.random() * 16); // 15–30 tokens
21
+ const tokens = [...prefix];
22
+ while (tokens.length < count) {
23
+ tokens.push(pick());
24
+ }
25
+ const text = tokens.join(' ');
26
+ return text.charAt(0).toUpperCase() + text.slice(1) + '.';
27
+ }
28
+
29
+ function generateParagraphs(count) {
30
+ const paragraphs = [];
31
+ for (let i = 0; i < count; i++) {
32
+ paragraphs.push(generateParagraph(i === 0 ? PREAMBLE : []));
33
+ }
34
+ return paragraphs.join('\n\n');
35
+ }
36
+
37
+ function generateBytes(count) {
38
+ let text = '';
39
+ let first = true;
40
+ while (Buffer.byteLength(text, 'utf8') < count) {
41
+ if (text.length > 0) text += '\n\n';
42
+ text += generateParagraph(first ? PREAMBLE : []);
43
+ first = false;
44
+ }
45
+ // Trim to a word boundary at or before the byte limit
46
+ const buf = Buffer.from(text, 'utf8');
47
+ if (buf.length <= count) return text;
48
+ let trimmed = buf.slice(0, count).toString('utf8');
49
+ const lastSpace = trimmed.lastIndexOf(' ');
50
+ return lastSpace > 0 ? trimmed.slice(0, lastSpace) : trimmed;
51
+ }
52
+
53
+ function velocityPivot(count, type) {
54
+ if (!Number.isInteger(count) || count <= 0) {
55
+ throw new Error('count must be a positive integer');
56
+ }
57
+ switch (type) {
58
+ case 'words': return generateWords(count);
59
+ case 'paragraphs': return generateParagraphs(count);
60
+ case 'bytes': return generateBytes(count);
61
+ default:
62
+ throw new Error(`type must be "paragraphs", "words", or "bytes"`);
63
+ }
64
+ }
65
+
66
+ module.exports = { velocityPivot };
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "velocity-pivot",
3
+ "version": "1.0.0",
4
+ "description": "A modern lorem ipsum generator inspired by The Economist's Velocity Pivot",
5
+ "main": "index.js",
6
+ "bin": {
7
+ "velocity-pivot": "./bin/cli.js"
8
+ },
9
+ "files": [
10
+ "index.js",
11
+ "corpus.js",
12
+ "bin/"
13
+ ],
14
+ "keywords": [
15
+ "lorem",
16
+ "ipsum",
17
+ "placeholder",
18
+ "text",
19
+ "generator",
20
+ "corporate",
21
+ "jargon",
22
+ "buzzwords"
23
+ ],
24
+ "license": "MIT",
25
+ "engines": {
26
+ "node": ">=14"
27
+ }
28
+ }