Skip to content

AdoptSignal — Know when the market will follow

Tests Python 3.10+ Streamlit License: AGPL-3.0-or-later

Open new-product adoption forecasting for marketers — the Bass diffusion model with published analogies, honest warnings, and local-first data.

AdoptSignal forecasts how a new product spreads: when adoption takes off, when sales peak, and where they saturate. Before launch, borrow the innovation (p) and imitation (q) parameters from published category analogies and stress-test the word-of-mouth assumption. After launch, fit the model to your real adoption history and let the data update the story. No account or statistics software is required.

Read this first

Treat every diffusion forecast as a structured guess, not a prediction. The market potential is a judgment, the parameters come from analogies or noisy history, and the model ignores price, competition, and marketing. Its value is disciplining the growth conversation — quantifying the assumptions so they can be argued about.

Why AdoptSignal

  • Made for marketers: plain-language pages, a published analog library with citations, fictional demos, and portable exports.
  • Two honest modes: plan-by-analogy before launch; estimate-from-history after. The app is explicit about which is which.
  • Pre-peak warnings: fitting a diffusion curve before the sales peak identifies the market potential poorly — AdoptSignal says so instead of printing confident nonsense.
  • Local-first: no account, telemetry, external AI calls, or built-in data storage — and this tool needs no person-level data at all.
  • Explainable and reproducible: one classic model (Bass 1969) you can verify in a spreadsheet, with formulas and citations in the docs and a manifest in every export.

Get the app

You need Python 3.10 or newer. Download this project from GitHub and unzip it, or clone it:

git clone https://github.com/UlrikErlingsen/adoption-forecasting.git
cd adoption-forecasting

Mac: double-click run_app.command. The browser opens automatically after the local server is ready.

Windows: double-click run_app.bat.

The first start creates a private .venv folder and installs the required packages, which can take a few minutes. Later starts reuse it without requiring a network connection.

Or use a terminal:

python -m pip install -r requirements.txt
python -m streamlit run app.py

With Docker:

docker build -t adoptsignal .
docker run --rm -p 8501:8501 adoptsignal

Then open http://localhost:8501.

No install? Give this file to an AI

Don't want to install anything? AI_ANALYST.md is a single copy-paste file that turns a capable AI assistant (Claude, ChatGPT, Gemini, …) into this analysis. Copy the file into a chat, add your data, and the AI follows the same published methods and honesty rules as the app. The app is still the more private option: local mode keeps your data on your computer, while a cloud AI sees whatever you paste.

Try it in two minutes

  1. On 1 · Market & analogs, set a market potential, pick one or two analog categories, and save the plan — no file needed.
  2. On 2 · Forecast & scenarios, read the adoption curve, the peak timing, and how the story bends when word of mouth is slower or faster.
  3. Click Demo · smart-lock sales in the sidebar, and on 3 · Fit your own history estimate p, q, and m from 16 quarters of fictional sales.
  4. Try Demo · early meal-kit data to see the honest pre-peak warning.

Which data works?

Pages 1–2 need no data. For fitting on page 3, AdoptSignal reads .csv, .xlsx, .xls, .xlsm, and .json with one row per period:

quarter units_sold
Q1 2020 2285
Q2 2020 3139
Q3 2020 4701

A period label column and a numeric column of first-time adopters (unit sales work for durables bought once). At least 5 periods; the fit becomes trustworthy only after the sales peak. See the data guide.

Methods and accuracy

AdoptSignal implements the Bass diffusion model: new adopters per period are n(t) = (p + q·N/m)(m − N). It reports:

  • adoption and penetration curves from any p, q, m, with peak timing (ln(q/p)/(p+q)) and peak magnitude;
  • a published analog library (per-year parameters) with a cross-category average of roughly p ≈ 0.03, q ≈ 0.42;
  • word-of-mouth stress-test scenarios (q × 0.7 and q × 1.3);
  • estimation from history by nonlinear least squares on the cumulative curve (Srinivasan & Mason 1986), started and backstopped by Bass's original regression, with fit R² and explicit pre-peak warnings;
  • repeat purchases, marketing-mix effects, competition, and successive technology generations are documented as outside the basic model.

See methods and references. Run the automated tests with:

python -m pytest

Relationship to the Signal suite

AdoptSignal is part of a small family of open, local-first marketing-analytics apps that share one design language but do different statistical jobs:

  • WorthSignal — customer value: RFM targeting, CLV, retention, and marketing ROI.
  • SegmentSignal — multi-variable B2C customer segmentation with stability checks.
  • ChoiceSignal — conjoint analysis: which product features customers value, and preference shares.
  • PositionSignal — perceptual mapping for brand positioning: where brands sit relative to competitors, from brand-attribute ratings.
  • AllocSignal — marketing response and budget allocation: saturating response curves, constrained optimization, and a panel-evidence workspace.
  • DriverSignal — survey driver analysis: scale reliability, robust standardized drivers, and correlated-predictor importance for satisfaction and NPS.
  • GateSignal — the decision gate: criteria, evidence, scenario NPV, volume bridge, risk triage, and an honest go/hold/rework/kill brief.
  • ExperimentSignal — randomized experiment analysis: design audit, covariate-adjusted HC3 intervals, Holm multiplicity control, and a practical-effect decision bound declared before the result.
  • MeasureSignal — measurement diagnostics: factorability, parallel analysis, common-factor EFA, alpha and omega, and a frozen scoring recipe for holdout confirmation.
  • TextSignal — open-text evidence: corpus audit, lexical contrast, perturbation-stable NMF patterns, and a human codebook hand-off.
  • TagSignal — pricing evidence from assigned-price experiments, historical variation, or willingness to pay, feeding volume × margin economics with the uncertainty intact.
  • RecommendSignal — temporal offline comparison of recommendation policies across accuracy, discovery, concentration, cold start, and subgroups.
  • TraceSignal — descriptive customer-journey evidence from event logs: transitions, path support, drop-off, and Markov removal sensitivity, with no causal channel credit.
  • TrackSignal — brand-tracking wave comparison: separate measures with intervals, multiple-comparison control, and declared practical thresholds.

Together they cover the launch questions in order: what to build (ChoiceSignal), who it is for (SegmentSignal), how the market perceives you (PositionSignal), when the market adopts (AdoptSignal), what a customer is worth once acquired (WorthSignal), what drives their satisfaction (DriverSignal), what their words say (TextSignal), whether the scores you rely on measure anything (MeasureSignal), whether a tested change actually worked (ExperimentSignal), where the next budget should go (AllocSignal), and whether the launch investment should proceed at all (GateSignal).

See the maintained suite overview at ulrikerlingsen.com.

Privacy and responsible use

AdoptSignal works entirely on aggregate period counts — it never needs names, IDs, or person-level records. Local mode keeps files in the running process on your computer; hosted mode makes the operator responsible for access control and retention. Read PRIVACY.md.

About this project

The product name is AdoptSignal; the repository keeps the clear adoption-forecasting name. This app was built with AI assistance and reviewed against the published diffusion literature cited in docs/methods.md. All example histories are synthetic; no licensed third-party materials are included.

Contributions are welcome — see CONTRIBUTING.md. Report vulnerabilities privately as described in SECURITY.md.

License

AGPL-3.0-or-later. Commercial use is allowed, while distribution and modified network services carry source-sharing obligations described in the full LICENSE. This summary is not legal advice; the license text controls.

About

AdoptSignal — open new-product adoption forecasting for marketers (Bass diffusion). Published analogies, scenario stress-tests, fitting to real history, honest pre-peak warnings. Streamlit, local-first.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages