A Sparkfest is like a hackathon, but instead of teams competing to build a product that will be judged, in a sparkfest, teams work on and build marketing campaigns against AI populations to see which strategies are able to get the most distribution. It's a containerized marketing simulator where "Sparkies" (competitors in a sparkfest) engage with AI populations through advertising channels, marketing activations and consumer research.
The goal in a Sparkfest is to use tools available to you to discover the population you are interacting with through activations and research, then build a business by solving a problem for them. In that process, learn skills to improve your intution.
The Sparkfest Platform is a configurable containerized application that runs an interactive simulation where sparkfest competitors test go to market strategies to race to get a specific KPI.
Organizers of Sparkfests create inital configuration(s) that outline things like:
- the make up of the population (usually specific agent files generated using the Population Generator )
- timeline duration, epoch, and event(s) that take place in any given epoch
- product configuration filled from template for the company module
- advertising channel configurations for the channel module
- KPI(s) that are being tracked and any description of dashboards
- given LLM api and key that will be used for all inference. (allow openrouter, lm studio, claude, openai, etc SDKs)
These initial configurations are used to provide a simluated world where sparkies can login, start interacting with modules and advancing epochs. They can run as many simulations they want (maybe even running them in parallel) with the goal of maximizing the given KPI metric within the alloted time for the Sparkfest.
The tech stack will be Bun + Typescript + Svelte 5 (sveltekit) for Webapps
First componet is a identity framework for members of the simulated population. For every member of the population there is a folder containing information on the member such as:
- Name and demographic info (age, race, geographical region, etc)
- Memories (any relevant events in the agent's life)
- Personality & tightly and loosely held Beliefs
- Likes/Dislikes
- Profession / Hobbies
- Family / Friends
- Wealth / Investments / Vices
- Spending habits
- Quirks
This is a script that uses a given free form text description of a population and uses the configured LLM to generate a set of population files for this popluation.
The structure of time in the simulated world is turn based, not real time. A timeline can be configured as any duration (day, month, year, five years, etc), and within that duration you can have any sized turn length. For example I might want to run a simulation for a year, and have a turn per month, giving me 12 turns to reach the KPIs I'm targetting.
- World Events
- There exists an array of events that trigger on given epochs. These are text based events that are added to the memory of each agent, and optionally trigger data changes in the advertising channels
- World Population Research Reports
- Every so often, the "Research Center" will publish reports on beliefs of the entire population. They'll generate some questions relevant to the KPI being tracked, some about other richer information to add to simulated population context.
- Turn Progression Module
- Every turn change (triggered by Sparkie whenever they're ready to progress) we'll update run a population migration. This script will take the population individually in parallel, and possibly generate an update to their life. It can generate as few or as many updates as it wants for that turn, usually depending on the size of the turn compared to the entire timeline. These updates may be random, or geared through recent events in the simluated agent's life.
This is a module which defines the company you work for, what marketing budget you have, and information about your product and business model.
-
Product Schemas There can exist different kinds products, so this will be a set of templates that define different kinds of products (soda cans, software, hardware gadget, etc). For each of these types of products, there exists a description and what information about relevant information about the product (like for a food or drink product, we might have a nutrition label, description of product, description of packaging, etc. For a software business, you might see places to upload UI designs, etc)
-
Business Model Description of what busines model is currently being used by company. This should be modifiable
-
Describe company finances, valuation, funding rounds, etc
-
Customer information such as current/past customers, customer demographics, average customer spend, etc
This should be a modular system that can load in new channels as modules. Each channel (like youtube, X, instagram, word of mouth, IRL convetions, etc) should have ways to query information about the channel and advertise on it and costs associated with that advertising (UGC vs paid platform ads, etc). It should also optionally feature case studies published by the channel describing types of activations they ran and how much they paid.
This is not code but just free form text describing the channel.
A sparkie can describe what kind of activation it wants to run (discount codes, video campaign, tweets, etc) in which channel.
An LLM resolution module will take an initial prompt, price it out, and evaluate the popuplation's reaction each turn for the next turn. For example,
The User Research module allows Sparkies to gather opinions of their existing or past customers using CHOMP markets (see below). They can define questions and get a report about what the population thinks about their products. Direct user interviews are NOT available.
CHOMP is a third party api that helps us survey a population using an implementation of the surprisingly popular algorigthm. The Open API spec is available here: https://staging-api.chomp.fyi/doc and a SKILL.md will be provided later on how to use it.
This is a webapp that allows the sparkie to interact with the rest of the modules.
- Dashboards to show data about their business, markets, users, etc
- Ability to do user reasearch, learn about their product, query advertising channels, run activations, advance epochs etc.
The organizer platform gives the oranganizer of the Sparkfest the ability to register teams and create configured containers. Teams can instantiate any container on the organizer platform, and have an API / UI to access it to interact with it.
It's important that teams don't see the population files inside the container, which is why I think the organizer has to host this platform somewhere, rather than allowing teams to download and run the containers on their own machine.