Finds industries that may be forming but do not have a name yet.
It reads patents, hiring, capex, supply chain, standards, news, and notes. It clusters what repeats across those sources, then says whether that looks like a new industry, a rebrand, hype, or not enough evidence.
It is not a stock tool. No BUY/SELL, no target prices, no LLM at runtime.
Design principles: local-first · single-user · reproducible · evidence-grounded · time-aware · auditable · no external API / LLM at runtime · no fabricated evidence · no future-data leakage · no forced industry conclusion.
Every classification is a deterministic, explainable function of the data. The engine clusters cross-source structure, compares to a known taxonomy, hunts counterevidence, and can re-run at a historical cutoff with a hard leakage check.
| Status | Meaning |
|---|---|
INDUSTRY_CANDIDATE |
Structurally complete, demand-backed, not just narrative |
EXISTING_INDUSTRY_VARIANT |
Looks like a rebrand of a known industry |
HYPE_CLUSTER |
Loud but hollow |
INSUFFICIENT_EVIDENCE |
Not enough independent signal |
REJECTED / DORMANT |
Counterevidence dominates |
Requirements: The stdlib-only core supports Python 3.9+. The optional API and full test stack require Python 3.10+ (3.11+ recommended).
git clone https://github.com/taipei49314/aurora.git
cd aurora
# optional on Python 3.10+: API + full tests (needs SQLAlchemy)
python -m pip install -r backend/requirements.txt
# Python 3.9, or Windows without C++ Build Tools: engine tests only
python -m pip install -r backend/requirements-engine-test.txt
# Windows PowerShell
$env:PYTHONPATH = "backend"
# Unix
# export PYTHONPATH=backend
python backend/aurora/cli.py # demo: generate corpus → classify
# optional: send the same FINDING report into an md-brain Vault (proposal only)
python backend/aurora/cli.py --brain C:\vaults\nelson
python backend/aurora/cli.py --atlas # findings only; no invented baseline
# real offline data (the synthetic demo corpus is never involved):
python backend/aurora/cli.py --package datasets/sodium-ion-us-2025/package.json --out-dir runs/demo-real
# same package + config + cutoff replay to the same run_id and result hash
# artifacts: runs/demo-real/{run.md, run_manifest.json, findings.jsonl}
# Atlas submission defaults to http://127.0.0.1:8137 (the launcher's port)
python scripts/check_engine.py # engine gate (skips API/SQL tests)
python -m pytest tests/ -q # full suite (needs full requirements)
python scripts/check_all.py --engine-only # same as check_engine
python scripts/check_all.py # full pre-push: tests + cases + resolve smokeWith Make (if available):
make demo
make test
make check-all # recommended before release push
make backtest
make docker-audit # static Docker/Compose contract check; does not start Docker
make api # FastAPI :8000
make frontend # Vite :5173STATUS OVERALL HYPE CONTRA SIM NAME
INDUSTRY_CANDIDATE 73.8 7 5 0.00 analog-inference-compute-in-memory ...
HYPE_CLUSTER 27.9 89 0 0.00 quantum-mining-superposition-hash
INSUFFICIENT_EVIDENCE 25.0 73 55 0.00 volumetric-display-free-space-optics
Both companions are private, single-user projects and are not published.
--atlasand--brainare opt-in, off by default, and fail open. AURORA is a complete tool without either: nothing on this page requires them, and no test in this repo contacts them.
Frontier Atlas keeps claims. md-brain keeps identity and experience.
After a run, --brain <vault> writes the same contract-shaped FINDING report
the mothership adapter would submit, then calls the mdbrain CLI
(ingest --module aurora). That opens an episodic proposal. Nothing is
written into memory/ until a person approves it.
$env:PYTHONPATH = "backend"
python backend/aurora/cli.py --brain C:\vaults\nelsonA failed ingest never fails the research run. This tool does not import md-brain;
the engine stays stdlib-only. Override the binary with --brain-bin if mdbrain
is not on PATH. Without --brain, AURORA does not touch a Vault.
--atlas [URL] is the claim-ledger sibling (default http://127.0.0.1:8000).
It submits the same FINDING report. The demo CLI does not invent a retention
baseline, so predictions are skipped until a measured backtest is supplied.
A failed submit never fails the research run. Without --atlas, AURORA does
not contact the mothership.
The client for this is vendored, not installed:
backend/aurora/_vendor/atlas_client.py is a copy of the mothership's
single-file SDK, kept so the engine stays stdlib-only. Do not edit it in place —
tests/test_vendored_sdk_pinned.py pins its digest and will fail if you do.
Guide for real offline dumps: docs/real-dump-guide.md.
AURORA does not crawl the web. Feed a JSON package:
{ "entities": [], "sources": [], "observations": [] }| Resource | Purpose |
|---|---|
| docs/import-schema.md | Field contract, dates, independence, real-source mapping |
| examples/real_mini_package.json | Multi-source hand-authored sample |
| examples/schemas/import-package.schema.json | JSON Schema |
| adapters/ | Offline converters (USPTO-shaped, PatentsView-compatible, jobs, news, merge) |
| cases/ | Scorecarded demos (merge, retro cutoffs, PatentsView sample) |
# validate a package
PYTHONPATH=backend python scripts/validate_package.py examples/real_mini_package.json --run
# offline PatentsView-shaped dump → package
python -m adapters patentsview cases/patentsview-sample/dump.json --validate --strict
# temporal honesty gates (curated timeline — not real-world lead-time proof)
PYTHONPATH=backend python scripts/run_retro_case.py cases/iron-air-retroA small real, offline, public-domain package ships in-repo:
datasets/sodium-ion-us-2025/ (see its README for provenance, license, and
honest scope). Run it with --package; the synthetic demo stays separate.
Snapshot → Features → Clustering → Taxonomy → Naming gap
→ Value chain → Bottleneck → Hype + counterevidence
→ Transparent scoring → Classification → Research run
Docs: architecture · scoring · hype filter · leakage · import schema · self-audit · evolution loop
- Not investment advice. No trading outputs.
- Northstar demo metrics are on a synthetic corpus with ground truth.
- Retro case (
cases/iron-air-retro) tests engine time behavior on curated data — it does not claim real-world early discovery of iron-air storage. - PatentsView sample dump is a format-compatible fixture by default; replace
dump.jsonwith a real export without code changes. - See docs/self-audit.md for PASS / PARTIAL items (e.g. Docker not verified on all machines).
python scripts/docker_audit.pychecks the Docker/Compose contract offline; it does not replace starting the stack on a Docker host.
backend/aurora/ discovery engine (pure stdlib) + CLI
backend/api.py FastAPI layer
adapters/ offline source converters
cases/ release demos + scorecards
datasets/ Northstar generator + taxonomy
docs/ architecture, models, import-schema, release notes
examples/ import packages + JSON Schema
frontend/ Vite + React + TS (8 pages)
scripts/ validate / retro / scorecard helpers
tests/ pytest (unit / integration / e2e)
- Engine: 0.1.47 — see CHANGELOG.md
- License: MIT — see LICENSE
- Contributing: CONTRIBUTING.md
- Security: SECURITY.md
- Release checklist: docs/RELEASE.md
| Layer | Language |
|---|---|
| Engine, API field names, statuses, logs | English-first (stable machine contract) |
| Frontend chrome (nav, labels) | English |
| Case honesty notes / scorecards | English primary; bilingual Chinese optional for human narrative |
| Imported source text / excerpts | Preserve source language as-is |
Do not localize enum values (INDUSTRY_CANDIDATE, observation types, etc.) —
adapters and tests depend on the English controlled vocabulary.
If AURORA helps your research, please cite the repository URL and version tag
(e.g. v0.1.1). A formal paper is not required for use.