Bitrecs V2 has a small number of hard rules that will get your artifact rejected before it is ever evaluated, and a larger set of softer quality signals that determine how well it scores once it reaches the validator stage. Understanding both categories is the difference between a submission that idles in screener failures and one that competes for emissions. This page covers the most important constraints, configuration choices, and prompt engineering patterns to keep in mind.Documentation Index
Fetch the complete documentation index at: https://docs.bitrecs.ai/llms.txt
Use this file to discover all available pages before exploring further.
Hard rules — these will get you rejected
One submission per hotkey — no exceptions
One submission per hotkey — no exceptions
Gist must have exactly one commit — never edit after creating
Gist must have exactly one commit — never edit after creating
Gist must be less than 24 hours old at submission time
Gist must be less than 24 hours old at submission time
created_at timestamp of your Gist both in the CLI and server-side. A Gist older than 24 hours will be rejected. Plan to create your Gist and submit within the same working session.If you need extra preparation time, do all your editing and testing locally first, then create the Gist only when you are ready to submit.Model must cost less than $1 per million tokens
Model must cost less than $1 per million tokens
model field must reference a model priced below $1/M tokens on your chosen provider. Free tier models (identifiers containing :free) are explicitly blocked. Check the pricing page for your provider before choosing a model.Expensive frontier models are generally not competitive here — capable open-weight models in the sub-$1 range perform well and submit successfully.Only recognized template variables are allowed
Only recognized template variables are allowed
| Variable | What it contains |
|---|---|
{{current_date}} | Today’s date |
{{num_recs}} | Number of recommendations to return |
{{persona}} | Customer shopping persona |
{{sku}} | Currently viewed product SKU |
{{sku_info}} | Attributes of the viewed SKU |
{{cart_json}} | Customer’s current cart |
{{order_json}} | Customer’s past orders |
{{product_catalog}} | Candidate product pool |
{{your_persona}} instead of {{persona}}) will cause the artifact to fail local validation. Additionally, product_catalog, cart_json, and order_json may each appear at most once across both templates combined.Provider and model selection
Provider: CHUTES is the only accepted provider
Provider: CHUTES is the only accepted provider
Choosing a model
Choosing a model
qwen/qwen3-next-80b-a3b-instruct as a starting point.Prioritize models known for:- Reliable JSON output (avoids format failures during evaluation).
- Strong instruction following (respects the output requirements section).
- Good multilingual or broad domain knowledge (ecommerce catalogs span many categories).
Temperature and sampling
Start with temperature 0.2
Start with temperature 0.2
temperature: 0.2. This is deliberately conservative: at evaluation time, the model must return a precisely structured JSON array with no extra text. Higher temperatures increase the risk of the model deviating from the format, which causes hard evaluation failures.Optional: top_p, max_tokens, stop_sequences
Optional: top_p, max_tokens, stop_sequences
max_tokens to cap response length and reduce cost, but set it high enough that your full recommendation set fits. A response with {{num_recs}} items at reasonable reason lengths typically fits within 1,024–2,048 tokens.Similarity check
Cosine similarity — avoid copying other artifacts
Cosine similarity — avoid copying other artifacts
Testing locally before submitting
Validate your artifact without submitting
Validate your artifact without submitting
Test your prompts with rendered variables
Test your prompts with rendered variables
Prompt engineering for ecommerce
Make full use of all context variables
Make full use of all context variables
{{sku_info}}, reasoning from {{cart_json}}, and filtering against {{order_json}} — tend to score higher than those that treat the recommendation as a generic task.Explicitly instruct the model to:- Avoid products already in the cart or past orders.
- Prioritize products complementary to the viewed SKU.
- Use the persona attributes to tailor the recommendation set.
Reason quality is graded
Reason quality is graded
reason field. The evaluation harness grades reasons, not just SKU selections. A good reason:- Is relevant to the viewing SKU and the overall recommendation set.
- Is a single, plain-text sentence with no punctuation or line breaks.
- Focuses on customer benefit, not internal business strategy.
Maintain gender consistency
Maintain gender consistency
Understanding screener thresholds
Understanding screener thresholds
- Return exactly
{{num_recs}}items in a valid JSON array. - Use only SKUs that exist in the provided
product_catalog. - Exclude any SKU already in the cart or order history.
- Return no duplicate SKUs.