Skip to content

Repository files navigation

Business Model Almanac

A working atlas of every process that runs a business — and the software that powers it.

Live site CI Lighthouse Epoch Built with Astro License

Business Model Almanac — the astrolabe of business processes, 2026 edition


What it is

Every company, whatever it sells, runs the same underlying processes — develop strategy, market and sell, manage finance, hire people, run IT. The APQC Process Classification Framework is the standard map of those processes. The Business Model Almanac takes that map — 13 categories, 72 process groups — and, for each one, charts the software that actually runs it: 257 vendors, ranked and dated as a 2026 snapshot, plus 23 end-to-end "threads" that trace how work crosses categories (lead-to-cash, hire-to-retire, record-to-report…).

It renders as a cartographic celestial survey — an astrolabe you steer, not a list you scroll. Every ranking carries its snapshot date and links to how the ranking was made; the whole thing is a dated edition, not a live leaderboard (see the epoch model).

→ Open the atlas

At a glance

13 categories 72 process groups 257 software vendors 23 threads 371 static pages

What it maps

flowchart LR
  A["Any business"] --> C["13 categories<br/>(6 operating · 7 support)"]
  C --> L2["72 process groups<br/>APQC PCF v7.4 · Level 2"]
  L2 --> V["257 software vendors<br/>ranked #1–3 · dated 2026"]
  T["23 threads"] -.->|trace work across categories| L2
  classDef a fill:#0e1220,stroke:#c8a24c,color:#eae6d9;
  classDef b fill:#0e1220,stroke:#6ba0f0,color:#eae6d9;
  class A,C,L2 a;
  class V,T b;
Loading

The data model

A category holds its Level-2 process groups; each process group carries software rows (a named market, e.g. "CRM"); each row ranks up to three vendors, and every rank resolves to one entry in a shared software dictionary. Threads reference the processes they pass through.

erDiagram
  CATEGORY   ||--o{ SUBPROCESS : "contains (L2)"
  SUBPROCESS ||--o{ ROW        : "software rows"
  ROW        ||--o{ VENDORRANK : "ranks #1–3"
  VENDORRANK }o--|| SOFTWARE   : "resolves to"
  THREAD     }o--o{ SUBPROCESS : "passes through"
Loading

The whole dataset is typed with Zod content collections and validated at build time — referential integrity (every ranked vendor exists), a dead-brand denylist (retired names can't reappear), and a taxonomy-fidelity check against the canonical APQC structure all run before a page is emitted.

The epoch model — how corrections work

Rankings age; facts don't. The Almanac freezes each edition at an epoch (this is 2026.0) and treats the two kinds of change differently, so the record stays both accurate and honest about its date:

flowchart TD
  X(["A proposed change"]) --> Q{"Factual error?<br/>wrong name · dead link · mis-stated fact"}
  Q -->|Yes| F["✔ Fixed anytime<br/>the record stays correct"]
  Q -->|No| R{"Ranking or market shift?<br/>new leader · acquisition · re-rank"}
  R -->|Yes| N["→ Labeled next-epoch<br/>the 2026 edition is immutable"]
  R -->|No| D["Discuss in an issue"]
  classDef ok fill:#0e1220,stroke:#3fc79b,color:#eae6d9;
  classDef ep fill:#0e1220,stroke:#e8b23a,color:#eae6d9;
  class F ok;
  class N ep;
Loading

A build-time invariant enforces it: no vendor can carry a date newer than the epoch, so a 2027 fact can't be smuggled into the 2026 edition. Full details on the methodology page and in CONTRIBUTING.md.

How it's built

  • Astro 5 + TypeScript (strict) — a fully static site, 0 KB of client JavaScript on content pages; the astrolabe and a couple of islands are the only scripted surfaces (≤ 47 KB gzip).
  • Typed content collections (Zod) for the dataset, with the build-time data contract in scripts/validate-data.ts.
  • GSAP + Lenis for the hero astrolabe; scroll-driven CSS (no JS) for the thread figures.
  • Design system documented in DESIGN.md — a "celestial survey" of role tokens, category hues, and cartographic components.
  • Gates on every build: data-contract validation → astro build → rendered-taxonomy & dead-brand re-verification → accountability "shield" checks → a Playwright rendered-regression guard → Lighthouse (perf / a11y / SEO / CLS / TBT) in CI.
flowchart LR
  D["src/data<br/>(typed collections)"] --> B["astro build"]
  B --> G["build gates<br/>taxonomy · denylist · shields"]
  G --> P["dist/ · 371 pages"]
  P --> GH["GitHub Pages<br/>gtm-k.github.io/business-model-almanac"]
Loading

Run it locally

git clone https://github.com/gtm-k/business-model-almanac.git
cd business-model-almanac
npm install

npm run dev      # dev server at http://localhost:4321/business-model-almanac/
npm run build    # production build → dist/ (runs every data + shield gate)
npm run preview  # serve the built dist/ at the deployed base path

Requires Node 22. Other scripts: npm run check (astro + type check), npm run test:data (data-contract fixtures), npm run test:regression (Playwright rendered-regression guard).

Contributing

Factual fixes are welcome anytime; ranking and market changes are queued for the next epoch. Corrections use dedicated issue templates so the right change lands in the right place — see CONTRIBUTING.md.

Methodology & attribution

License

  • Code (everything that builds the site) — MIT.
  • Content (the rankings, editorial text, and dataset) — CC BY 4.0; reuse it with attribution to the Business Model Almanac.

See LICENSE for the full terms.

About

A working atlas of every process that runs a business — and the software that powers it. APQC PCF v7.4 (13 categories, 72 process groups) mapped to 257 ranked software vendors, as a dated 2026 edition.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages