{
  "schemaVersion": 1,
  "name": "Event Toolkit",
  "url": "https://drifttournamentapp.com/",
  "updated": "2026-10-24",
  "currency": "USD",
  "pricing": {
    "purchase": "One-time, current version, one organization",
    "setupHourlyRate": 60,
    "standardPriceReference": {
      "softwareMarkupPercent": 15,
      "roundUpToUSD": 10,
      "historicalPrice": false
    },
    "softwareDiscount": {
      "appliesToCurrentSoftwarePrice": true,
      "minimumModules": 3,
      "percent": 20,
      "appliesTo": "Software only; setup and consulting excluded"
    },
    "inquiryOnly": true,
    "scope": "Modules run on the buyer's accounts and computers. Ongoing hosting, updates and maintenance are not included. The purchase covers the current version and one organization's own events. External account, hosting and transaction fees are separate. Compatibility, self-install readiness, scope and availability are confirmed before purchase. Software only excludes installation calls; guided setup adds $60 per hour (one hour per module, two for the core bot). Sending an inquiry is not a purchase or confirmed booking."
  },
  "modules": [
    {
      "id": "judging",
      "name": "Live Judging",
      "crew": "Judges & Commentators",
      "url": "https://drifttournamentapp.com/#module-judging",
      "description": "Enter qualifying scores and battle votes in one Google Sheet. The system calculates results, syncs your Challonge bracket and calculates season standings from archived rounds using your configured scoring rules. Judges keep the sporting decisions.",
      "automation": "Qualifying and battle calculations, bracket updates and season standings from archived round results.",
      "features": "Judge operator page · Qualifying run order with attendance · Challonge sync · Season points and standings",
      "softwarePrice": 220,
      "guidedPrice": 280,
      "standardSoftwarePrice": 260,
      "standardGuidedPrice": 320,
      "guidedSetupHours": 1,
      "requiredModuleIds": [],
      "requirements": "Live system: Google Sheets + Apps Script · Google account with permission to edit the competition Sheet and deploy its Apps Script web app · Internet access for staff and judges · Challonge account and API key for bracket sync."
    },
    {
      "id": "commentary",
      "name": "Live Staff Dashboard",
      "crew": "Judges & Commentators",
      "url": "https://drifttournamentapp.com/#module-commentary",
      "description": "Keep staff and commentators informed in one read-only browser dashboard: current qualifying driver, scores, published battle decisions and season standings. Supplied driver history adds context where available.",
      "automation": "Refreshing competition information and available driver context from the configured live data.",
      "features": "Qualifying and battle views · Season standings · Driver context from supplied history · Expandable panels",
      "softwarePrice": 100,
      "guidedPrice": 160,
      "standardSoftwarePrice": 120,
      "standardGuidedPrice": 180,
      "guidedSetupHours": 1,
      "requiredModuleIds": [
        "judging"
      ],
      "requirements": "Live Judging · Configured Google Sheet and Apps Script deployment · Browser and internet access · Reviewed driver/history records for historical context. Staff still verify official information, make operational decisions and deliver commentary."
    },
    {
      "id": "discordboards",
      "name": "Discord Live Leaderboards",
      "crew": "Judges & Commentators",
      "url": "https://drifttournamentapp.com/#module-discordboards",
      "description": "Record scores in Live Judging. Qualifying rankings and season standings refresh in your Discord channels without staff copying each update.",
      "automation": "Refreshing qualifying and season leaderboard embeds from your official live data.",
      "features": "Qualifying Best, R1 and R2 scores · Season points and positions · Existing messages updated · Configurable refresh interval",
      "softwarePrice": 70,
      "guidedPrice": 130,
      "standardSoftwarePrice": 90,
      "standardGuidedPrice": 150,
      "guidedSetupHours": 1,
      "requiredModuleIds": [
        "judging"
      ],
      "requirements": "Live Judging and its deployed data feed · Configured Discord bot and running host · Discord channels with view, send, embed links and read history permissions · Internet access. Season standings follow confirmed, archived round results. Applications & Event Registration is not required."
    },
    {
      "id": "overlays",
      "name": "Broadcast Overlays",
      "crew": "Broadcasters",
      "url": "https://drifttournamentapp.com/#module-overlays",
      "description": "Score the event in your live Sheet. Driver names, scores, battle results and standings update in OBS automatically.",
      "automation": "OBS graphics updates from your judging Sheet.",
      "features": "Qualifying bubble and leaderboard · Active battle and result · Round labels · Season standings",
      "softwarePrice": 280,
      "guidedPrice": 340,
      "standardSoftwarePrice": 330,
      "standardGuidedPrice": 390,
      "guidedSetupHours": 1,
      "requiredModuleIds": [
        "judging"
      ],
      "requirements": "OBS with browser sources · Live Judging and its deployed Apps Script web app · Internet access on the broadcast PC."
    },
    {
      "id": "replays",
      "name": "Replay Recorder + Side-by-Side",
      "crew": "Broadcasters",
      "url": "https://drifttournamentapp.com/#module-replays",
      "description": "Use OBS hotkeys to record replay-camera views and load the latest and previous runs for side-by-side playback. Start recording both runs at the same course point for a comparable view.",
      "automation": "Loading the latest and previous replay clips into OBS.",
      "features": "GPU encoding · Latest and previous replay slots · Side-by-side playback",
      "softwarePrice": 220,
      "guidedPrice": 280,
      "standardSoftwarePrice": 260,
      "standardGuidedPrice": 320,
      "guidedSetupHours": 1,
      "requiredModuleIds": [],
      "requirements": "Windows, Assetto Corsa, CSP with OBS integration and OBS · Supplied recorder/FFmpeg files and local recording storage. Hardware, replay input and storage setup are checked before purchase. Performance depends on hardware."
    },
    {
      "id": "announcer",
      "name": "In-Game Announcer",
      "crew": "Marshals",
      "url": "https://drifttournamentapp.com/#module-announcer",
      "description": "Select the current driver and score the event in your live Sheet. The announcer sends driver calls and supported results to server chat.",
      "automation": "Current and next-driver calls, qualifying scores and battle-result messages.",
      "features": "Current and next-driver calls · Qualifying scores and battle results · Skips drivers marked absent",
      "softwarePrice": 140,
      "guidedPrice": 200,
      "standardSoftwarePrice": 170,
      "standardGuidedPrice": 230,
      "guidedSetupHours": 1,
      "requiredModuleIds": [
        "judging"
      ],
      "requirements": "Live Judging · PC or VPS running Node.js · Compatible AC Server Manager with authenticated broadcast-chat access. Host and chat compatibility checked before purchase."
    },
    {
      "id": "servers",
      "name": "Server Preset Manager",
      "crew": "Organizers",
      "url": "https://drifttournamentapp.com/#module-servers",
      "description": "Choose your event groups. The manager builds presets and entry locks from your live Sheet and configured driver records. Review the changes, then deploy to your host.",
      "automation": "Preset generation and configured driver/staff entry lists.",
      "features": "Steam ID entry locks with staff slots · Redeploying updates the same preset",
      "softwarePrice": 140,
      "guidedPrice": 200,
      "standardSoftwarePrice": 170,
      "standardGuidedPrice": 230,
      "guidedSetupHours": 1,
      "requiredModuleIds": [
        "judging",
        "core"
      ],
      "requirements": "PC or VPS running Node.js · Compatible AC Server Manager or AssettoServer hosting with SFTP credentials · Live Judging for groups and bracket · Applications & Event Registration for locked driver and staff access. Host compatibility checked before purchase."
    },
    {
      "id": "core",
      "name": "Applications & Event Registration",
      "crew": "Organizers",
      "url": "https://drifttournamentapp.com/#module-core",
      "description": "After staff approval, drivers register through Discord. The bot reuses their application profiles, sends confirmations and records entries in your Sheet.",
      "automation": "Profile reuse, confirmation messages and Sheet records.",
      "features": "Name, number, country, team, Steam ID and experience · Driver confirmation · Records in your Sheet",
      "softwarePrice": 320,
      "guidedPrice": 440,
      "standardSoftwarePrice": 370,
      "standardGuidedPrice": 490,
      "guidedSetupHours": 2,
      "requiredModuleIds": [],
      "requirements": "Configured Discord bot runtime · Discord server and bot token · Permission to configure staff channels, roles and required bot intents · Google account with Sheets and Apps Script setup access · PC or VPS keeping the Node.js bot running."
    },
    {
      "id": "payments",
      "name": "Payments & Refunds",
      "crew": "Organizers",
      "url": "https://drifttournamentapp.com/#module-payments",
      "description": "Drivers pay through Stripe checkout in Discord. The system matches each payment to its driver and event. Staff review refunds under your published policy.",
      "automation": "Payment matching and duplicate-checkout protection.",
      "features": "Retry protection against duplicate checkouts · Staff refund review · Configured free-entry promotions",
      "softwarePrice": 120,
      "guidedPrice": 180,
      "standardSoftwarePrice": 140,
      "standardGuidedPrice": 200,
      "guidedSetupHours": 1,
      "requiredModuleIds": [
        "core"
      ],
      "requirements": "Applications & Event Registration · Stripe account with API access and configured entry prices · Your published payment and refund policy. Guided setup includes a test payment and refund."
    },
    {
      "id": "roles",
      "name": "Role Sync",
      "crew": "Marshals",
      "url": "https://drifttournamentapp.com/#module-roles",
      "description": "Update your live judging Sheet. The bot assigns configured qualifying or battle roles in Discord and removes managed roles when they no longer apply.",
      "automation": "Configured competition-role assignments and removal.",
      "features": "Only manages configured roles · Changes recorded in your staff log",
      "softwarePrice": 90,
      "guidedPrice": 150,
      "standardSoftwarePrice": 110,
      "standardGuidedPrice": 170,
      "guidedSetupHours": 1,
      "requiredModuleIds": [
        "judging"
      ],
      "requirements": "Configured Discord bot runtime · Live Judging and its configured data feed · Driver Discord IDs in the Sheet · Discord server, bot token and Manage Roles permission, with the bot above the roles it manages · PC or VPS running Node.js. Applications & Event Registration is not required."
    },
    {
      "id": "carsubmission",
      "name": "Car Submission",
      "crew": "Inspectors",
      "url": "https://drifttournamentapp.com/#module-carsubmission",
      "description": "Drivers send car links and notes in Discord. The system ties submissions to drivers and events, tracks revisions and queues staff review. Automated checks and repairs are a separate module.",
      "automation": "Submission records, revision tracking and the staff review queue.",
      "features": "Car links and driver notes · Driver and event records · Revision tracking · Staff review workflow",
      "softwarePrice": 220,
      "guidedPrice": 280,
      "standardSoftwarePrice": 260,
      "standardGuidedPrice": 320,
      "guidedSetupHours": 1,
      "requiredModuleIds": [],
      "requirements": "Configured Discord bot runtime · Discord server, bot token and staff review channels/roles · Google account with Sheets and Apps Script setup access · PC or VPS running Node.js · Prepared driver/event list and accessible car download links. Submission and storage setup confirmed before purchase."
    },
    {
      "id": "cars",
      "name": "Car Quick Scan & Auto-Fix",
      "crew": "Inspectors",
      "url": "https://drifttournamentapp.com/#module-cars",
      "description": "Submit a car for automated checks against configured references. Fix It For Me applies supported corrections to a copy and re-checks it. Drivers test drive; your inspector decides.",
      "automation": "Supported car checks, repairs on a copy and output re-checks.",
      "features": "HTML and PDF reports · Texture, layout, naming and driver-aid checks · Your inspector keeps the final say",
      "softwarePrice": 340,
      "guidedPrice": 400,
      "standardSoftwarePrice": 400,
      "standardGuidedPrice": 460,
      "guidedSetupHours": 1,
      "requiredModuleIds": [
        "carsubmission"
      ],
      "requirements": "Discord bot runtime supplied with Car Submission · Car Submission · Windows bot PC with Python 3.10+, the supplied Python packages (including Pillow and ReportLab), and .NET 8 SDK for the model analyzer · Supported archive extraction tools and working disk space · Your approved physics reference files for physics comparisons and replacements. Reference format and supported checks confirmed before purchase."
    },
    {
      "id": "drivergraphics",
      "name": "Driver Graphics Pack",
      "crew": "Broadcasters",
      "url": "https://drifttournamentapp.com/#module-drivergraphics",
      "description": "Prepare your driver list, images and branding. Generate driver cards, lower thirds and vertical panels together as PNG exports, then review them before use.",
      "automation": "Batch graphics generation from prepared driver data.",
      "features": "Batch PNG exports · Driver, team and sponsor details · Prepared car images · Your branding",
      "softwarePrice": 140,
      "guidedPrice": 200,
      "standardSoftwarePrice": 170,
      "standardGuidedPrice": 230,
      "guidedSetupHours": 1,
      "requiredModuleIds": [],
      "requirements": "Windows PC with Python, Pillow and the agreed fonts · Prepared CSV/JSON driver list, images and branding. Data format and assets checked before purchase."
    },
    {
      "id": "resultgraphics",
      "name": "Podium & Results Graphics",
      "crew": "Social Media",
      "url": "https://drifttournamentapp.com/#module-resultgraphics",
      "description": "Confirm your results in Live Judging. Generate podium cards and results carousels from the event data, then review the PNGs before sharing.",
      "automation": "Podium, qualifying, bracket and standings graphics generation.",
      "features": "Gold, silver and bronze podium cards · Qualifying results and groups · Top 32 bracket · Season-standings carousels · PNG exports",
      "softwarePrice": 190,
      "guidedPrice": 250,
      "standardSoftwarePrice": 220,
      "standardGuidedPrice": 280,
      "guidedSetupHours": 1,
      "requiredModuleIds": [
        "judging"
      ],
      "requirements": "Live Judging with completed event results and season history for podium cards · PC running Node.js with the supplied image-rendering packages and fonts · Logo, event details and prepared driver/car images. Track assets, data connections and supported exports confirmed before purchase."
    },
    {
      "id": "eventpromo",
      "name": "Grid & Event Announcements",
      "crew": "Social Media",
      "url": "https://drifttournamentapp.com/#module-eventpromo",
      "description": "Prepare your confirmed roster, event details and assets. Generate an event announcement and The Grid Is Set carousel, then review and share the PNGs.",
      "automation": "Track covers and driver roster-slide generation.",
      "features": "Track and event announcement · The Grid Is Set cover · Driver roster carousel · Names, numbers, flags, teams and car images",
      "softwarePrice": 140,
      "guidedPrice": 200,
      "standardSoftwarePrice": 170,
      "standardGuidedPrice": 230,
      "guidedSetupHours": 1,
      "requiredModuleIds": [],
      "requirements": "PC running Node.js with the supplied image-rendering packages and fonts · Prepared confirmed driver roster, event details, branding and mapped driver/car images · Compatible installed track preview and map assets. Roster format, assets and branding setup confirmed before purchase."
    },
    {
      "id": "voicecontrol",
      "name": "Discord Voice Control",
      "crew": "Marshals",
      "url": "https://drifttournamentapp.com/#module-voicecontrol",
      "description": "Choose the driver role and destination. The bot moves connected drivers as a group, optionally plays your recorded cue and logs the outcome. Larger moves require confirmation.",
      "automation": "Group voice moves, optional reminder playback and outcome logs.",
      "features": "Role-based moves · Optional recorded voice cue · Confirmation for larger moves · Moved and failed counts",
      "softwarePrice": 90,
      "guidedPrice": 150,
      "standardSoftwarePrice": 110,
      "standardGuidedPrice": 170,
      "guidedSetupHours": 1,
      "requiredModuleIds": [],
      "requirements": "Configured Discord bot runtime · Discord server, bot token, voice permissions and a PC or VPS running Node.js. Audio cues also need FFmpeg, your recording and permission to connect and speak. Drivers must already be in the source voice channel."
    },
    {
      "id": "verticalrecaps",
      "name": "Vertical Replay Recaps",
      "crew": "Social Media",
      "url": "https://drifttournamentapp.com/#module-verticalrecaps",
      "description": "Provide reviewed footage and matching results. The renderer builds Top 3 qualifying recaps and paired battle reels with driver labels. Your team reviews and posts the videos.",
      "automation": "Vertical video assembly, driver labels and result cards.",
      "features": "Top 3 qualifying recap · Paired battle reels · Driver names, scores and result cards · Silent exports for your own soundtrack · Manual sharing",
      "softwarePrice": 240,
      "guidedPrice": 300,
      "standardSoftwarePrice": 280,
      "standardGuidedPrice": 340,
      "guidedSetupHours": 1,
      "requiredModuleIds": [],
      "requirements": "Reviewed replay files matched to exact drivers, runs and results · PC with FFmpeg/FFprobe (H.264 encoding), Python with Pillow, Node.js and the supplied fonts/packages · Paired battle reels need matching Track and Trace footage for both legs. Capture formats, result records and supported layouts checked before purchase."
    },
    {
      "id": "discordcalls",
      "name": "Discord Group Announcer",
      "crew": "Marshals",
      "url": "https://drifttournamentapp.com/#module-discordcalls",
      "description": "When the active server changes to a configured qualifying or battle group, the bot posts the matching role mention and driver list in your chosen Discord channel.",
      "automation": "Group-call messages from configured server-status changes.",
      "features": "Active server-group trigger · Targeted role mention · Driver list · Suppresses repeated calls for the unchanged group",
      "softwarePrice": 90,
      "guidedPrice": 150,
      "standardSoftwarePrice": 110,
      "standardGuidedPrice": 170,
      "guidedSetupHours": 1,
      "requiredModuleIds": [],
      "requirements": "Configured Discord bot runtime · Discord server, bot token, channel access and permission to mention the configured group roles · Compatible server-status feed and preset names · PC or VPS running Node.js. Existing group roles must be configured; Server Preset Manager and Role Sync are optional. Server compatibility checked before purchase."
    }
  ],
  "bundles": [
    {
      "id": "competition",
      "name": "Competition Essentials",
      "url": "https://drifttournamentapp.com/#bundle-picker",
      "description": "Our recommended starting point for live qualifying and tandem battles.",
      "moduleIds": [
        "judging",
        "overlays",
        "announcer"
      ],
      "optionalModuleIds": [
        "commentary",
        "discordboards"
      ],
      "softwareSubtotal": 640,
      "softwareDiscount": 128,
      "softwareTotal": 512,
      "requiredModuleIdsNotIncluded": [],
      "requirements": "Judging, broadcast graphics and driver calls for your competition."
    },
    {
      "id": "operations",
      "name": "Event Operations",
      "url": "https://drifttournamentapp.com/#bundle-picker",
      "description": "For organizers managing registrations, cars and inspections.",
      "moduleIds": [
        "core",
        "carsubmission",
        "cars"
      ],
      "optionalModuleIds": [],
      "softwareSubtotal": 880,
      "softwareDiscount": 176,
      "softwareTotal": 704,
      "requiredModuleIdsNotIncluded": [],
      "requirements": "Collect entries and car submissions, then run quick checks before the event."
    },
    {
      "id": "broadcast",
      "name": "Broadcast & Replay",
      "url": "https://drifttournamentapp.com/#bundle-picker",
      "description": "For organizers improving their livestream production.",
      "moduleIds": [
        "judging",
        "overlays",
        "replays",
        "commentary"
      ],
      "optionalModuleIds": [],
      "softwareSubtotal": 820,
      "softwareDiscount": 164,
      "softwareTotal": 656,
      "requiredModuleIdsNotIncluded": [],
      "requirements": "Includes Live Judging for the overlays and commentator dashboard. Replay capture requires Windows, Assetto Corsa with CSP and OBS. We confirm hardware compatibility before purchase."
    }
  ],
  "calculator": {
    "name": "Season Savings Estimator",
    "url": "https://drifttournamentapp.com/#savings",
    "description": "Free illustrative season staff-time estimator. Choose workflow problems or import the exact modules and setup options from the toolkit builder. Adjust event count, drivers per event and staff-hour value to compare estimated time value with one-time toolkit cost. Time value is not necessarily cash saved; estimates are not measured results or guarantees.",
    "inputs": [
      "Events per season",
      "Drivers per event",
      "Assigned staff-hour value in USD"
    ],
    "importsBuilderSelectionAndPlans": true,
    "savingsAreIllustrative": true,
    "guaranteesPositiveReturn": false
  }
}
