How we make money

Livestack earns a commission when you buy through links on some pages. That is the entire business model: no ads, no data sales, no house brand. This page documents how we keep those commissions from touching the recommendations — not as a promise, but as architecture you can inspect.

Two services, one wall

The recommendation engine and the offer matcher are separate packages in the codebase, and the recommender has no import path to the offers package. They exchange nothing except a finished list of ingredients.

What the recommender sees

  • the ingredient catalog: names, forms, mechanisms, dose ranges
  • graded evidence records and the hand-curated goal–ingredient map
  • interaction rules against a curated list of drugs and conditions
  • your banded intake answers: goals, age band, weight band, budget band, constraints
  • an anonymous per-ingredient daily-cost estimate, so it can respect your budget

What it can never see

  • products and brands
  • merchants and affiliate networks
  • prices on offer pages
  • commission rates

The cost estimate is the deliberate edge of the wall: the engine knows roughly what an ingredient costs per day, and nothing about who sells it or what we earn.

The rule that enforces it

This is the lint configuration from our repository, verbatim. Continuous integration runs it on every change; an import from the recommender into the offers package fails the build.

  {
    // SPEC §0.1 — recommendation ≠ monetization. Never weaken this block.
    files: ['packages/recommender/**/*.{ts,tsx,js,mjs}'],
    plugins: { import: importPlugin },
    rules: {
      'import/no-restricted-paths': [
        'error',
        {
          zones: [
            {
              target: './packages/recommender',
              from: './packages/offers',
              message:
                'SPEC §0.1: the recommender must have no import path to the offers package. Recommendations may never see monetization.',
            },
          ],
        },
      ],
      'no-restricted-imports': [
        'error',
        {
          patterns: [
            {
              group: ['@livestack/offers', '@livestack/offers/*'],
              message:
                'SPEC §0.1: the recommender must have no import path to the offers package. Recommendations may never see monetization.',
            },
          ],
        },
      ],
    },
  },

The offers service

After a recommendation is finished, a separate module matches offers to it by ingredient and form. It ranks by stock, third-party testing, and price — at most three offers per ingredient. Offers not updated for 72 hours are marked out of stock. A price that moves more than 15% is held for human review instead of being applied. None of this feeds back into the recommendation.

Outbound links

Every commerce link on the site points at /go/ followed by an offer id — never a raw merchant URL. The redirect validates the offer, logs the click against your anonymous id, appends a tracking subid so the network can attribute the sale, and sends you on. The links carry rel="sponsored nofollow noopener". If an offer is dead, you get an in-page notice with alternates, not a broken redirect.

The audit trail

Every recommendation is snapshotted to an immutable record: the hash of the normalized intake, the candidate and exclusion sets with their machine reasons, the model and prompt version, the generated copy, the claims-linter result, and which offers were shown. If a recommendation ever looks like it bent toward a commission, the snapshot exists to prove what the engine saw and why it decided what it decided.

Disclosure

Livestack earns a commission if you buy through links on offer pages. Commissions never change what we recommend. Offer pages carry this disclosure above the fold, linked back here.

What does change recommendations: new evidence records, new interaction rules, and changes to your intake. Nothing else is wired in.