Workspace | The tenant boundary | One seeded default workspace in v1 |
User | An account with a role and a plan | Email is unique. The first account bootstraps as owner |
ApiToken | A revocable personal API token | Stored as a SHA-256 hash, never as plaintext |
AppGroup | A linked group of listings across stores | Unique on group and store, so a group holds one app per store |
App | One tracked listing | Unique on workspace, store, store app id and country |
AppSnapshot | A captured copy of the listing metadata | Keeps the raw payload for reprocessing |
Keyword | A phrase in one store and one storefront | Unique on text, store, country |
TrackedKeyword | The link between an app and a keyword | Keyed on app and keyword, carries source and relevance |
KeywordMetric | Persisted traffic and difficulty for a day | Keyed on keyword and date |
KeywordRanking | One position observation | Keyed on app, keyword and date. Carries depth |
SerpEntry | One search result row for a keyword and day | Keyed on keyword, date and position |
CategoryRank | A free, paid or grossing chart position | Keyed on app, date, collection and genre |
Review | A synced store review | Unique on app and store review id |
ChangeEvent | A detected metadata change | Covers owned and competitor apps |
AuditScore | A daily audit score snapshot | Keyed on app and date |
ActionItem | One Action Center recommendation | Unique on workspace and fingerprint |
Webhook, EmailAlert | Alert subscriptions | Deliveries are logged per channel |