Analyzes all your Atlassian Marketplace data, generates contacts/deals, and puts them into HubSpot.
More specifically:
- Downloads and analyzes HubSpot and Atlassian Marketplace data
- Generates contacts from all License/Transaction contact info
- Identifies and flags Contact-Type for each Contact/Company
- Matches up related MPAC events via similarity-scoring
- Updates Contacts based on match results
- Generates Deals based on match results
- Upserts all generated/updated HubSpot data entities
This runs in an ENV-configurable loop.
Read about the engine logic in detail in docs/ENGINE.md.
Implemented in Node.js (TypeScript) and can build a Docker image.
See docs/HUBSPOT.md.
- Install Node.js 16+ and NPM 7+
- Copy
.sample.env
to.env
and set values. npm install
$ npm run once -- --in=remote --out=remote
--in local | remote
Whether to use disk-cached values, or download live data
--out local | remote
Whether to cache output to disk and log, or upload live data
--cached-fns scorer.json
(Optional) Reuse cached results of given function
--loglevel error | warn | info | verbose | detailed
(Optional) What the engine should log to console.log()
# Run engine once
$ npm run once -- [options]
# Example of dry-run, using local data and cached scorer data, with medium verbosity
$ npm run once -- --in=local --out=local --cached-fns=scorer.json --loglevel=info
# Download live data and cache to disk
$ npm run download
# Run unit tests
$ npm run build # either build once
$ npm run watch # or watch and build
$ npm test
# Run engine multiple times,
# starting with cached data,
# and pumping output of each run
# into input of next run
$ npm run multiple
# Explain what the engine does given certain SENs or transactions
# (Requires the engine to have been run on latest data locally)
$ npm run explain -- [--verbose] <SEN12345ABCDE>... | <transactions.json>
Running the engine live (steps above) will cache data locally in git-ignored data
directory. After it's cached, you can use --in=local
for faster development and to avoid API calls.
Instead of uploading to Hubspot, you can use --out=local
and --loglevel=verbose
(the default) to print data to console that would have been uploaded, or --loglevel=info
to just show array counts.
After running the engine, to test logic after the Scoring Engine runs, pass --cached-fns=scorer.json
to reuse the most recently results of the Scoring Engine.
- Renamed
npm start
tonpm run once
(Use Docker image for continuous background processing) - Renamed ENV variables
MPAC_PASS
toMPAC_API_KEY
- First public version