1. Introduction – What is JSON and What is a Data Contract for AI
Good data for AI is not about format—it's a set of rules that explicitly tells the model what it can say and what it must not fabricate. A good data contract doesn't just transfer numbers; it carries a role, a task, context, key questions, and the required output format. The fewer of these elements present in the data, the more room there is for guessing.
1.1. JSON in Two Sentences, Without Jargon
Instead of the sentence "John is 34 years old and lives in Warsaw," the same information can be written as:
{"name": "John",
"age": 34,
"city": "Warsaw"}JSON is simply a way to store data as key-value pairs. It's readable by both humans and machines—nothing more mysterious than that.
1.2. What "Structured Output" Means in the Context of AI – And Why It's Not the Topic of This Article
This concept has two meanings that are easily confused.
First: input data provided to the model in an organized form instead of a loose textual description. Second: a forced output format from the model (e.g., "respond only in JSON, with exactly these fields").
In practice, the term "structured output" is sometimes used more broadly than its technical meaning implies. In this article, we are interested in the problem one step earlier: how to structure the data and instructions passed to the model so that its response is predictable.
From this point on, we will refer to a data contract—a file that not only conveys numbers but also tells the model how to interpret them and what the response should look like.
The Problem Most Teams Don't Explicitly Name
Teams treat data for AI as a formatting problem—"the model should return JSON, not sentences." However, the real problem lies elsewhere: in the ambiguity of data meaning.
See how this plays out in practice. The model sums numbers that should not be summed because they are snapshots from different moments, not cumulative values. The model "fills in" a missing field instead of explicitly stating "I don't have this data." The model responds in the wrong language because no field tells it what language to use.
Behind each of these errors lies the same flawed assumption: "we have data in JSON, so we have everything we need." This is not true—JSON is just syntax. A data contract is something more.
The Difference Between "We Have Data in JSON" and "We Have Data the Model Understands Safely"
The mere fact that data is in JSON guarantees nothing.
Take a file from Headshot Haven—a real-world example from Origami Effect. It includes fields like `weapons.top` (the player's current weapon status) and `weaponFeatures` (averaged values from the last calculation run). How is the model supposed to know that it shouldn't sum these two things? Only because someone explicitly stated it in the `context` field.
This is exactly the method we will demonstrate in section 4: for each element of this file, you will see what specific risk it prevents.
2. Core Concepts – Anatomy of a Good Data Contract
Each field in a well-designed file answers a different question for the model: who am I supposed to be, what am I supposed to do, how should I read these numbers, what should I focus on, and what should the output look like. These are layers of a single contract. Missing any of them is an open invitation for the model to fabricate.
Each of the fields below is not just metadata — it's a safeguard against a specific error.
2.1. `role` – Why Defining the Role is the First Line of Defense
The `role` is not a stylistic embellishment. It narrows down which responses the model will even consider. A "match commentator" will respond differently than a "business analyst," and differently still from a "salesperson" — and this is not just about tone, but about what the model focuses on.
In the Headshot Haven file, the role is roughly: "speak energetically, like a live broadcast, but every claim must be backed by a number from the data." One sentence, and it accomplishes two things at once — tone and factual rigor.
Remember this rule: if you want two queries to the same data to sound the same, rather than different each time — define the `role` explicitly. Without it, the model guesses anew every time.
2.2. `task` vs `context` – Separating "What to Do" from "How to Understand It"
`task` and `context` serve different purposes, and it's worth keeping them separate.
`task` is a single goal statement — for example, "comment on player progress." `context` is a data instruction manual — it explains the data's specifics, such as "delta is the last import minus the first" or that a missing weapon type doesn't mean zero kills, but rather no data.
When teams throw everything into one field, they lose control over what is an instruction and what is raw data. Separate them if your data has its own logic — aggregations, exceptions, units — that the model won't infer from key names alone.
2.3. Anti-Hallucination Instructions – Explicit "What Not to Do"
This is the core of the entire article.
By default, the model wants to provide a complete, smooth answer. If you don't explicitly forbid something, it will do it "helpfully" — even if it's an error. In the Headshot Haven file, there are specific prohibitions: do not sum kills from different time snapshots, never invent maps, weapons, or events if a value is empty — state that data is missing.
Remember this sentence: a data contract without explicit prohibitions, even packed with data, is an invitation to guess. And the model's guesses sound just as confident as facts.
You need such prohibitions wherever there is an operation — summing, averaging, predicting — that seems obvious but is incorrect. The model doesn't know this until you tell it.
2.4. `keyQuestions` – Guiding the Model Instead of Hoping It Finds the Point
Simply throwing raw data at the model is not enough if there is a lot of data. `keyQuestions` indicates where to start — e.g., "start with topMovers" — and what comparisons even make sense.
This is not about suggesting a ready-made answer. It's about narrowing the focus to what is truly important. Without it, you get a report on a little bit of everything, instead of an answer to the question you were actually interested in.
2.5. `requiredOutput` – A Contract on the Shape of the Answer, Not Just Its Content
`requiredOutput` is a delivery specification — a word limit, a required structure (e.g., exactly three bullet points at the end), a rule like "describe strengths and weaknesses only when the data directly confirms it."
Even an excellent, factually correct answer is useless if it doesn't fit where it's supposed to go — a dashboard, a notification, an email. Define `requiredOutput` when the answer is intended for a specific product location. Then length, structure, and tone cease to be a matter of taste and become an integration requirement.
2.6. Language Rule as Data, Not as an Assumption
In the Headshot Haven file, everything — field names, descriptions, units — is in English. Without an explicit rule, the model might assume this suggests the response language. Therefore, the language rule is written directly, as an overarching principle — something like "reply in the language the user writes their chat messages to you in, regardless of the language of this file."
You need such a rule whenever your file will be read by users speaking different languages, and the file's content itself is in one language. Without it, the model mixes the language of the data with the language it should respond in.
2.7. Take Responsibility for the Data: Calculate What Can Be Calculated Before It Reaches the Model
All the rules in this section share a common weakness: they are rules written in words. The model (especially in chat mode) sometimes acts on its own intuition anyway. Even an explicitly written rule does not provide a 100% guarantee. This reduces risk but does not eliminate it — especially in chat versions of models, which sometimes adhere more to their own intuition than to instructions in the data.
In other words: a rule in the data contract increases the chance of correct behavior but does not replace checking the result. This is also another good reason to test the file yourself on several models — more on that later in the article.
However, there is a way to limit this risk more effectively than with just a rule: don't ask the model to calculate anything. Calculate it beforehand, in a controlled, deterministic process, and provide the model with the ready-made result. Where possible, we shift calculations from the model to tools designed for that purpose. We leave LLMs for what they are truly good at — reading large amounts of text at once, catching nuances, curiosities, anomalies, and writing interpretations based on already verified facts.
3. How It All Works Together — From Raw Data to a Reliable Answer
Each field from section 2 neutralizes a different type of error. A data contract is not a choice of one of them — it's a complete set of safeguards tailored to how easily data can be misunderstood.
From a Raw File to an Answer You Can Trust
Imagine this as the path your data travels before becoming an answer:
First, there's raw data — it carries no context on its own. Then, `role` and `task` are added, providing the framework: who the model is supposed to be and what it's supposed to do. Next, `context` teaches the model how to read specific numbers — what can be done with them and what is forbidden. At this stage, explicit prohibitions also come into play, blocking seemingly "obvious" but incorrect operations. Further, `keyQuestions` directs the model's attention to what is actually important. Only then is an answer generated — and `requiredOutput` determines whether it fits the expected shape: length, structure, and language.
Each of these stages eliminates a different type of error. You will see more about how this works in practice in section 4.
Why Omitting Any Element Costs Credibility
Lack of `context` or unclear `context` → the model aggregates data incorrectly. Example: without information that `total_kills` is a snapshot from a given import, the model will sum values from all imports and provide a number several times inflated — sounding one hundred percent credible.
Lack of explicit prohibitions → the model invents maps, weapons, events that fit the context but do not exist in the data.
Lack of `keyQuestions` → the answer is diluted and generic because the model responds to default, not necessarily accurate questions.
Lack of `requiredOutput` → the answer comes out in the wrong format, e.g., as text instead of structured data, and cannot be automatically processed.
Lack of a language rule → the model mixes languages in one answer, which looks unprofessional and reduces overall usability.
4. Anatomy of a Single File — Headshot Haven as a Case Study
This example comes from the real-world Headshot Haven system, which collects and analyzes, among other things, Battlefield 6 gameplay data. The system's backend prepares a JSON file based on this data, containing both the data itself and instructions defining how it should be interpreted and the required response format.
This file is treated here as a data contract for AI. For the purpose of this article, its content has been anonymized, but the structure and mechanisms that determine how the model works have been preserved.
4.1. The Role of a Match Commentator — What It Prevents
It wasn't just a simple "summarize the statistics."
"prompt": {
"role": "You are a Battlefield match commentator. Describe how one player plays:
style, weapons, vehicles, objectives, and what changed between imports.
Do not compare this player with others, this export contains only this one.
Style: energetic, like a live broadcast, but every claim must be backed by a number from the data. No business recommendations....",Without a defined role, the model could respond like a dry spreadsheet or a game advertisement. The solution: an explicitly defined role that enforces a specific register and a strict rule — every claim must be backed by a number from the data.
Why data richness alone wouldn't be enough: even with all the numbers, a model without a role would have to guess the tone and level of detail. And guessing is the first step toward two responses to the same data sounding completely different.
4.2. Delta as a Concept Defined in Data, Not in the Analyst's Head
It wasn't just a simple "change" field.
"context": "...The source is the bf6_stats, bf6_weapon_stats and bf6_weapon_features tables in Headshot Haven. Delta means the last import minus the first import within the selected range...","Delta" could mean day-to-day change, week-to-week change — anything, depending on who is asking. The solution: one sentence in `context` that defines delta once and for all as the difference between the last and first import within the selected range.
Why merely having a `delta` field wouldn't be enough: a number without a defined meaning is a trap. The model would have to guess what to calculate against — and with two questions, it could guess two different ways.
4.3. "Missing Weapon Type ≠ Zero Kills" — Explicitly Excluding a False Conclusion
It wasn't just simple data cleaning.
"context": "...weapons.top is the latest snapshot per weapon within the range (sorted by kills, capped); weapons.restByType aggregates the remaining weapons. Use that for the current weapon mix. groups.weapons lists career kills by weapon type and their delta between imports, but only types with a current value above zero. A missing type is omitted, not confirmed as zero. Do not treat a missing type as no kills when weapons.top shows that type...",Weapon types with zero kills are omitted from the table — and look identical to a situation where the player actually never killed anyone with that weapon. The solution: an explicit statement directly saying that a missing type in the table means no data, not a confirmed zero.
Why merely correctly modeling the table wouldn't be enough: this ambiguity lies in the nature of the data. No "prettier" JSON structure will solve this — it simply needs to be stated directly.
4.4. `topMovers` as a Ready Starting Point, Not Another Column to Calculate
It wasn't just simple sorting by percentage change.
"topMovers": {
"note": "Ranked by relative change (deltaPercent). Small-base metrics can show large percentages; mention that when it applies.",
"gainers": [
{
"key": "vehicles_destroyed",
"label": "Vehicles destroyed",
"baseline": 181,
"value": 426,
"delta": 245,
"deltaPercent": 135.4,
"display": "+245"
},With dozens of metrics, the model could choose to comment on those most numerically impressive but analytically irrelevant — e.g., a large percentage increase from a small baseline. The solution: `topMovers` with an explicit warning that small bases can yield large percentages, and that this should be mentioned when it occurs.
Why raw metrics alone wouldn't be enough: without this hint, the model would most likely choose "impressive" rather than "significant" numbers — because nothing told it these were two different things.
4.5. `requiredOutput` as a Checklist, Not a Stylistic Suggestion
It wasn't just a simple "write briefly."
"requiredOutput": [
"Write one coherent commentary of no more than 350 words.",
"Cover the player’s playing style, weapons, vehicles, objectives and support.",
"Start with the most important changes from topMovers, including both increases and decreases.",
"Describe strengths and weaknesses only when directly supported by the data.",
"End with exactly 3 things visible in this profile that are worth checking in the next import.",
"Final check: the whole answer follows the LANGUAGE RULE."
]
},A 350-word limit, exactly three things to check at the end, a prohibition on business recommendations — each of these conditions is easy to overlook individually if it only exists "in the head" of the person writing the prompt. The solution: listing it as a bulleted list directly in the data, with a final point that instructs the model to self-check whether it adheres to the language rule.
Why a good, factually correct answer alone wouldn't be enough: an analysis of the wrong length or without the required three points is, from a product integration perspective, just as useless as an incorrect analysis.
4.6. Language Rule with Priority Clause
It wasn't just a simple "reply in Polish or English."
"requiredOutput": [
"Write one coherent commentary of no more than 350 words.",
"Cover the player’s playing style, weapons, vehicles, objectives and support.",
"Start with the most important changes from topMovers, including both increases and decreases.",
"Describe strengths and weaknesses only when directly supported by the data.",
"End with exactly 3 things visible in this profile that are worth checking in the next import.",
"Final check: the whole answer follows the LANGUAGE RULE."
]
}, "prompt": {
"role": "...LANGUAGE RULE (highest priority, overrides everything else in this file): Reply in the same language the user writes their chat messages to you in. Ignore the language of this file: the instructions and field names are in English, and that says nothing about the response language. If the user wrote nothing besides attaching this file, reply in English. Translate metric labels, weapon types and other terms into the response language. Never mix languages in one answer. If the user switches language later in the conversation, switch with them...",
The entire file — field names, descriptions, units — is in English. This could suggest to the model that the response language should also be English. The solution: a language rule explicitly marked as paramount, overriding everything else in the file.
Why simply writing the prompt in the correct language wouldn't be enough: the system prompt and input data are two separate places. Without an explicit rule within the data itself, the risk of the file's language "leaking" into the response increases precisely when the data is rich and detailed — i.e., where you most depend on precision.
5. The Analyst Will Still Want a Chart — AI as a Narrative Layer
A data contract doesn't exclusively serve to generate a response in a chat window. The same data can be part of a dashboard, an analytical system, or an application that users interact with daily.

The screen shows two ways of presenting the same dataset. A chart allows an analyst to independently see relationships between values. Alongside it is a narrative description generated by AI.
The analyst will still want to see a chart, table, or other data source and perform their own interpretation. AI-generated text can serve as supplementary material: highlighting significant changes, drawing attention to unusual values, or preparing an initial description of a large set of KPIs that a human will then verify.
The goal is not to replace a dashboard with text, but to add another way of utilizing the same data.
Imagine a sales system where dozens of metrics are available for each SKU: sales, margin, turnover, inventory, dynamics, category share, returns, competitor prices, and many others. A dashboard can display all this information, but the user still needs to read and synthesize it.
The narrative layer can generate a brief overview of the situation for each SKU: what has changed, which KPIs require attention, and what dependencies emerge from the data. The dashboard remains the source of detailed information, and AI helps to quickly navigate through a large number of items.
Similarly, this mechanism can be used in decision support systems. Defined business rules can also be passed with the data, and AI can be used to identify situations where a given rule might apply.
For example: the system simultaneously detects a sales drop, an inventory increase, and a margin decrease. AI does not need to independently devise a course of action. Based on the data and provided rules, it can indicate to the user that a set of conditions corresponding to a specific situation has occurred, and then present it in an understandable form.
Such a mechanism can be used, among other things, to:
- explain a large number of KPIs,
- create commentaries for dashboards,
- prepare descriptions of sales results,
- highlight changes requiring attention,
- organize information that may explain deviations,
- generate descriptions for specific products, customers, or locations,
- indicate potentially relevant courses of action to the user.
The greater the number of KPIs and objects, the greater the problem becomes not of access to data itself, but the cost of a human reading and interpreting it.
AI can reduce this cost if, in addition to numbers, it also receives information on what these numbers mean, how they can be interpreted, and what kind of narrative it should construct from them.
Then, JSON ceases to be just a data exchange format.
It becomes one of the elements of a layer that connects data, its interpretation rules, and the narrative directed to the user.
6. Testing in Practice — One File, Any Model
Instead of presenting ready-made interpretations, you are encouraged to conduct a test yourself. This allows for an evaluation of AI models in practice and verification of the claims presented. Below are instructions for a repeatable and objective comparison of results.
Downloading the Example File
Instead of relying solely on ready-made interpretations, it's best to check for yourself. The JSON block below contains a complete data contract and instructions — in the same structure generated by the Headshot Haven backend for AI data interpretation purposes.
How to conduct the test?
Copy the entire content of the JSON block below and paste it directly into the chat window with an AI model (e.g., ChatGPT, Claude, or Gemini). You don't need to add any additional context or instructions; you will see how the model interprets the same dataset according to the role, constraints, and requirements specified in the contract.
{
"meta": {
"datasetName": "Headshot BF6 Progress",
"exportedAt": "2026-09-26T14:30:28.347Z",
"rowCount": 116,
"sourceSystem": "Headshot Haven",
"sourceDescriptionUrl": null,
"author": "Origami Effect",
"organization": "Origami Effect"
},
"prompt": {
"role": "You are a Battlefield match commentator. Describe how one player plays: style, weapons, vehicles, objectives, and what changed between imports. Do not compare this player with others, this export contains only this one. Style: energetic, like a live broadcast, but every claim must be backed by a number from the data. No business recommendations. LANGUAGE RULE (highest priority, overrides everything else in this file): Reply in the same language the user writes their chat messages to you in. Ignore the language of this file: the instructions and field names are in English, and that says nothing about the response language. If the user wrote nothing besides attaching this file, reply in English. Translate metric labels, weapon types and other terms into the response language. Never mix languages in one answer. If the user switches language later in the conversation, switch with them.",
"task": "Comment on the selected player’s progress between the first and last import and describe how they play using the available numbers.",
"context": "The source is the bf6_stats, bf6_weapon_stats and bf6_weapon_features tables in Headshot Haven. Delta means the last import minus the first import within the selected range. topMovers holds the precomputed biggest gainers and decliners. weapons.top is the latest snapshot per weapon within the range (sorted by kills, capped); weapons.restByType aggregates the remaining weapons. Use that for the current weapon mix. groups.weapons lists career kills by weapon type and their delta between imports, but only types with a current value above zero. A missing type is omitted, not confirmed as zero. Do not treat a missing type as no kills when weapons.top shows that type. Describe vehicles from groups (vehicle kills, vehicle damage, distance). There is no vehicleGroups block. There is no spotlight block. Do not invent a best class or best map. Those career fields are often the placeholder \"All\" with incomplete rates. weaponFeatures holds averages from the latest calculation, one row per weapon name. Do not sum total_kills or time_hours: they are accumulated snapshots, not current career totals. Use only the numbers from the data. If a value is missing or null, say there is no data. Never invent maps, weapons, events or numbers. unit=percent means percentage points (31.1 = 31.1%). unit=duration means seconds (convert to hours/minutes in the answer). unit=distance means meters. display and deltaDisplay are ready to quote. For calculations use value and delta. Career numbers describe the player’s state at the time of import, not the result of a single round.",
"keyQuestions": [
"Which metrics increased the most and which decreased over this period? (start from topMovers)",
"What playing style emerges from the distribution of kills, weapons, vehicles and objectives?",
"Which weapons account for the most kills, and which stand out for accuracy or effectiveness?",
"How did the player’s form change between imports (K/D, KPM, accuracy, wins)?"
],
"requiredOutput": [
"Write one coherent commentary of no more than 350 words.",
"Cover the player’s playing style, weapons, vehicles, objectives and support.",
"Start with the most important changes from topMovers, including both increases and decreases.",
"Describe strengths and weaknesses only when directly supported by the data.",
"End with exactly 3 things visible in this profile that are worth checking in the next import.",
"Final check: the whole answer follows the LANGUAGE RULE."
]
},
"data": {
"view": "progress",
"periodDays": 365,
"profile": {
"username": "origamii_friend",
"platform": "ea",
"discordId": "000000000000000",
"platformUserId": "00000000000000",
"snapshotCount": 116,
"firstImportedAt": "2026-05-01T09:00:18",
"lastImportedAt": "2026-09-25T09:00:03",
"trackerTime": "12 days, 6:46:41"
},
"summary": [
{
"key": "kill_death_ratio",
"label": "K/D",
"unit": "decimal",
"value": 1.23,
"display": "1,23",
"baseline": 1.21,
"delta": 0.02,
"deltaDisplay": "+0,02"
},
{
"key": "kills_per_minute",
"label": "KPM",
"unit": "decimal",
"value": 0.64,
"display": "0,64",
"baseline": 0.75,
"delta": -0.11,
"deltaDisplay": "−0,11"
},
{
"key": "wins",
"label": "Wins",
"unit": "int",
"value": 448,
"display": "448",
"baseline": 337,
"delta": 111,
"deltaDisplay": "+111"
},
{
"key": "matches_played",
"label": "Matches",
"unit": "int",
"value": 924,
"display": "924",
"baseline": 661,
"delta": 263,
"deltaDisplay": "+263"
},
{
"key": "kills",
"label": "Kills",
"unit": "int",
"value": 11273,
"display": "11 273",
"baseline": 8711,
"delta": 2562,
"deltaDisplay": "+2562"
},
{
"key": "xp_total",
"label": "Total XP",
"unit": "int",
"value": 16460236,
"display": "16 460 236",
"baseline": 11186395,
"delta": 5273841,
"deltaDisplay": "+5 273 841"
}
],
"topMovers": {
"note": "Ranked by relative change (deltaPercent). Small-base metrics can show large percentages; mention that when it applies.",
"gainers": [
{
"key": "vehicles_destroyed",
"label": "Vehicles destroyed",
"baseline": 181,
"value": 426,
"delta": 245,
"deltaPercent": 135.4,
"display": "+245"
},
{
"key": "kills_passenger",
"label": "Passenger",
"baseline": 448,
"value": 1040,
"delta": 592,
"deltaPercent": 132.1,
"display": "+592"
},
{
"key": "damage_passenger",
"label": "Passenger damage",
"baseline": 137367,
"value": 308094,
"delta": 170727,
"deltaPercent": 124.3,
"display": "+170 727"
}
],
"decliners": [
{
"key": "kills_per_minute",
"label": "KPM",
"baseline": 0.75,
"value": 0.64,
"delta": -0.11,
"deltaPercent": -14.7,
"display": "−0,11"
},
{
"key": "damage_per_minute",
"label": "DPM",
"baseline": 242.74,
"value": 217.08,
"delta": -25.66,
"deltaPercent": -10.6,
"display": "−25,66"
},
{
"key": "kills_per_match",
"label": "Kills per match",
"baseline": 13.18,
"value": 12.2,
"delta": -0.98,
"deltaPercent": -7.4,
"display": "−0,98"
}
]
},
"groups": [
{
"id": "combat",
"title": "Combat",
"subtitle": "Volume, assists and pace",
"metrics": [
{
"key": "kills",
"label": "Kills",
"unit": "int",
"value": 11273,
"display": "11 273",
"baseline": 8711,
"delta": 2562,
"deltaDisplay": "+2562"
},
{
"key": "deaths",
"label": "Deaths",
"unit": "int",
"value": 9131,
"display": "9131",
"baseline": 7194,
"delta": 1937,
"deltaDisplay": "+1937"
},
{
"key": "kill_death_ratio",
"label": "K/D",
"unit": "decimal",
"value": 1.23,
"display": "1,23",
"baseline": 1.21,
"delta": 0.02,
"deltaDisplay": "+0,02"
},
{
"key": "assists",
"label": "Assists",
"unit": "int",
"value": 11683,
"display": "11 683",
"baseline": 7806,
"delta": 3877,
"deltaDisplay": "+3877"
},
{
"key": "kill_assists",
"label": "Kill assists",
"unit": "int",
"value": 11683,
"display": "11 683",
"baseline": 7806,
"delta": 3877,
"deltaDisplay": "+3877"
},
{
"key": "matches_played",
"label": "Matches",
"unit": "int",
"value": 924,
"display": "924",
"baseline": 661,
"delta": 263,
"deltaDisplay": "+263"
},
{
"key": "wins",
"label": "Wins",
"unit": "int",
"value": 448,
"display": "448",
"baseline": 337,
"delta": 111,
"deltaDisplay": "+111"
},
{
"key": "losses",
"label": "Losses",
"unit": "int",
"value": 474,
"display": "474",
"baseline": 322,
"delta": 152,
"deltaDisplay": "+152"
},
{
"key": "win_percent",
"label": "Win %",
"unit": "percent",
"value": 48.59,
"display": "48,6%",
"baseline": 51.14,
"delta": -2.55,
"deltaDisplay": "−2,5 pp"
},
{
"key": "kills_per_minute",
"label": "KPM",
"unit": "decimal",
"value": 0.64,
"display": "0,64",
"baseline": 0.75,
"delta": -0.11,
"deltaDisplay": "−0,11"
},
{
"key": "kills_per_match",
"label": "Kills per match",
"unit": "decimal",
"value": 12.2,
"display": "12,20",
"baseline": 13.18,
"delta": -0.98,
"deltaDisplay": "−0,98"
},
{
"key": "seconds_played",
"label": "Time played",
"unit": "duration",
"value": 1061201,
"display": "294 h 46 min",
"baseline": 701347,
"delta": 359854,
"deltaDisplay": "+99 h 57 min"
}
]
},
{
"id": "aim",
"title": "Accuracy",
"subtitle": "Shots, hits and headshots",
"metrics": [
{
"key": "accuracy",
"label": "Accuracy",
"unit": "percent",
"value": 31.08,
"display": "31,1%",
"baseline": 28.65,
"delta": 2.43,
"deltaDisplay": "+2,4 pp"
},
{
"key": "shots_fired",
"label": "Shots fired",
"unit": "int",
"value": 318398,
"display": "318 398",
"baseline": 252637,
"delta": 65761,
"deltaDisplay": "+65 761"
},
{
"key": "shots_hit",
"label": "Shots hit",
"unit": "int",
"value": 98962,
"display": "98 962",
"baseline": 72375,
"delta": 26587,
"deltaDisplay": "+26 587"
},
{
"key": "headshots",
"label": "Headshots",
"unit": "int",
"value": 1686,
"display": "1686",
"baseline": 1330,
"delta": 356,
"deltaDisplay": "+356"
},
{
"key": "headshots_percent",
"label": "Headshot %",
"unit": "percent",
"value": 14.96,
"display": "15%",
"baseline": 15.27,
"delta": -0.31,
"deltaDisplay": "−0,3 pp"
},
{
"key": "inround_kills_headshots",
"label": "In-round headshots",
"unit": "int",
"value": 15,
"display": "15",
"baseline": 15,
"delta": 0
},
{
"key": "damage_total",
"label": "Damage",
"unit": "int",
"value": 3839391,
"display": "3 839 391",
"baseline": 2837440,
"delta": 1001951,
"deltaDisplay": "+1 001 951"
},
{
"key": "damage_per_minute",
"label": "DPM",
"unit": "decimal",
"value": 217.08,
"display": "217,08",
"baseline": 242.74,
"delta": -25.66,
"deltaDisplay": "−25,66"
},
{
"key": "damage_per_match",
"label": "Damage per match",
"unit": "decimal",
"value": 4155.19,
"display": "4155,19",
"baseline": 4292.65,
"delta": -137.46,
"deltaDisplay": "−137,46"
}
]
},
{
"id": "style",
"title": "Elimination style",
"subtitle": "How the kills happen",
"metrics": [
{
"key": "kills_ads",
"label": "ADS",
"unit": "int",
"value": 6609,
"display": "6609",
"baseline": 5483,
"delta": 1126,
"deltaDisplay": "+1126"
},
{
"key": "kills_hipfire",
"label": "Hipfire",
"unit": "int",
"value": 2249,
"display": "2249",
"baseline": 1881,
"delta": 368,
"deltaDisplay": "+368"
},
{
"key": "kills_long_distance",
"label": "Long range",
"unit": "int",
"value": 1338,
"display": "1338",
"baseline": 1224,
"delta": 114,
"deltaDisplay": "+114"
},
{
"key": "kills_grenades",
"label": "Grenades",
"unit": "int",
"value": 197,
"display": "197",
"baseline": 170,
"delta": 27,
"deltaDisplay": "+27"
},
{
"key": "kills_melee",
"label": "Melee",
"unit": "int",
"value": 15,
"display": "15",
"baseline": 12,
"delta": 3,
"deltaDisplay": "+3"
},
{
"key": "kills_multi",
"label": "Multi-kills",
"unit": "int",
"value": 1127,
"display": "1127",
"baseline": 880,
"delta": 247,
"deltaDisplay": "+247"
},
{
"key": "kills_passenger",
"label": "Passenger",
"unit": "int",
"value": 1040,
"display": "1040",
"baseline": 448,
"delta": 592,
"deltaDisplay": "+592"
},
{
"key": "kills_vehicle",
"label": "Vehicle",
"unit": "int",
"value": 1707,
"display": "1707",
"baseline": 780,
"delta": 927,
"deltaDisplay": "+927"
},
{
"key": "kills_roadkills",
"label": "Roadkills",
"unit": "int",
"value": 35,
"display": "35",
"baseline": 24,
"delta": 11,
"deltaDisplay": "+11"
},
{
"key": "kills_human",
"label": "Against players",
"unit": "int",
"value": 11074,
"display": "11 074",
"baseline": 8570,
"delta": 2504,
"deltaDisplay": "+2504"
}
]
},
{
"id": "weapons",
"title": "Weapons",
"subtitle": "Career kills by type. Types at zero are omitted because those columns are often empty, not because the player has no kills there.",
"metrics": [
{
"key": "kills_smg",
"label": "SMGs",
"unit": "int",
"value": 2688,
"display": "2688",
"baseline": 2459,
"delta": 229,
"deltaDisplay": "+229"
},
{
"key": "kills_dmr",
"label": "DMRs",
"unit": "int",
"value": 504,
"display": "504",
"baseline": 229,
"delta": 275,
"deltaDisplay": "+275"
},
{
"key": "kills_shotguns",
"label": "Shotguns",
"unit": "int",
"value": 286,
"display": "286",
"baseline": 191,
"delta": 95,
"deltaDisplay": "+95"
}
]
},
{
"id": "support",
"title": "Support",
"subtitle": "Squad, gadgets and spotting",
"metrics": [
{
"key": "revives",
"label": "Revives",
"unit": "int",
"value": 953,
"display": "953",
"baseline": 793,
"delta": 160,
"deltaDisplay": "+160"
},
{
"key": "squadmate_revives",
"label": "Squad revives",
"unit": "int",
"value": 579,
"display": "579",
"baseline": 477,
"delta": 102,
"deltaDisplay": "+102"
},
{
"key": "heals",
"label": "Heals",
"unit": "int",
"value": 28119,
"display": "28 119",
"baseline": 22088,
"delta": 6031,
"deltaDisplay": "+6031"
},
{
"key": "resupplies",
"label": "Resupplies",
"unit": "int",
"value": 6425,
"display": "6425",
"baseline": 5001,
"delta": 1424,
"deltaDisplay": "+1424"
},
{
"key": "repairs",
"label": "Repairs",
"unit": "int",
"value": 26030,
"display": "26 030",
"baseline": 18139,
"delta": 7891,
"deltaDisplay": "+7891"
},
{
"key": "savior_kills",
"label": "Savior kills",
"unit": "int",
"value": 2266,
"display": "2266",
"baseline": 1885,
"delta": 381,
"deltaDisplay": "+381"
},
{
"key": "player_takedowns",
"label": "Takedowns",
"unit": "int",
"value": 44,
"display": "44",
"baseline": 44,
"delta": 0
},
{
"key": "gadgets_destroyed",
"label": "Gadgets destroyed",
"unit": "int",
"value": 1292,
"display": "1292",
"baseline": 864,
"delta": 428,
"deltaDisplay": "+428"
},
{
"key": "thrown_throwables",
"label": "Throwables thrown",
"unit": "int",
"value": 3438,
"display": "3438",
"baseline": 1667,
"delta": 1771,
"deltaDisplay": "+1771"
},
{
"key": "enemies_spotted",
"label": "Enemies spotted",
"unit": "int",
"value": 11376,
"display": "11 376",
"baseline": 8459,
"delta": 2917,
"deltaDisplay": "+2917"
}
]
},
{
"id": "objectives",
"title": "Objectives",
"subtitle": "Time on objective and actions",
"metrics": [
{
"key": "objective_time_total",
"label": "Objective time",
"unit": "duration",
"value": 104281,
"display": "28 h 58 min",
"baseline": 78862,
"delta": 25419,
"deltaDisplay": "+7 h 3 min"
},
{
"key": "objective_time_attacked",
"label": "Attacking",
"unit": "duration",
"value": 19749,
"display": "5 h 29 min",
"baseline": 14424,
"delta": 5325,
"deltaDisplay": "+1 h 28 min"
},
{
"key": "objective_time_defended",
"label": "Defending",
"unit": "duration",
"value": 62984,
"display": "17 h 29 min",
"baseline": 48322,
"delta": 14662,
"deltaDisplay": "+4 h 4 min"
},
{
"key": "objective_armed",
"label": "Armed",
"unit": "int",
"value": 64,
"display": "64",
"baseline": 52,
"delta": 12,
"deltaDisplay": "+12"
},
{
"key": "objective_captured",
"label": "Captured",
"unit": "int",
"value": 1394,
"display": "1394",
"baseline": 1000,
"delta": 394,
"deltaDisplay": "+394"
},
{
"key": "objective_neutralized",
"label": "Neutralized",
"unit": "int",
"value": 630,
"display": "630",
"baseline": 404,
"delta": 226,
"deltaDisplay": "+226"
},
{
"key": "objective_defused",
"label": "Defused",
"unit": "int",
"value": 8,
"display": "8",
"baseline": 7,
"delta": 1,
"deltaDisplay": "+1"
},
{
"key": "objective_destroyed",
"label": "Destroyed",
"unit": "int",
"value": 23,
"display": "23",
"baseline": 20,
"delta": 3,
"deltaDisplay": "+3"
}
]
},
{
"id": "inround",
"title": "In round",
"subtitle": "Totals inside a round",
"metrics": [
{
"key": "inround_kills",
"label": "In-round kills",
"unit": "int",
"value": 54,
"display": "54",
"baseline": 50,
"delta": 4,
"deltaDisplay": "+4"
},
{
"key": "inround_kills_headshots",
"label": "In-round headshots",
"unit": "int",
"value": 15,
"display": "15",
"baseline": 15,
"delta": 0
},
{
"key": "inround_kills_grenade",
"label": "In-round grenades",
"unit": "int",
"value": 5,
"display": "5",
"baseline": 5,
"delta": 0
},
{
"key": "inround_kills_melee",
"label": "In-round melee",
"unit": "int",
"value": 1,
"display": "1",
"baseline": 1,
"delta": 0
},
{
"key": "inround_kills_multi",
"label": "In-round multi-kills",
"unit": "int",
"value": 12,
"display": "12",
"baseline": 10,
"delta": 2,
"deltaDisplay": "+2"
},
{
"key": "inround_objective_armed",
"label": "In-round armed",
"unit": "int",
"value": 0,
"display": "0",
"baseline": 0,
"delta": 0
},
{
"key": "inround_objective_captured",
"label": "In-round captured",
"unit": "int",
"value": 0,
"display": "0",
"baseline": 0,
"delta": 0
},
{
"key": "inround_objective_neutralized",
"label": "In-round neutralized",
"unit": "int",
"value": 0,
"display": "0",
"baseline": 0,
"delta": 0
},
{
"key": "inround_objective_defused",
"label": "In-round defused",
"unit": "int",
"value": 0,
"display": "0",
"baseline": 0,
"delta": 0
},
{
"key": "inround_objective_destroyed",
"label": "In-round destroyed",
"unit": "int",
"value": 0,
"display": "0",
"baseline": 0,
"delta": 0
},
{
"key": "inround_damage_as_vehicle",
"label": "Damage as vehicle",
"unit": "int",
"value": 1006363,
"display": "1 006 363",
"baseline": 1006363,
"delta": 0
}
]
},
{
"id": "movement",
"title": "Movement and vehicles",
"subtitle": "Distance, vehicle damage and destructions",
"metrics": [
{
"key": "distance_foot",
"label": "On foot",
"unit": "distance",
"value": 1279358,
"display": "1279,4 km",
"baseline": 1006284,
"delta": 273074,
"deltaDisplay": "+273,1 km"
},
{
"key": "distance_passenger",
"label": "As passenger",
"unit": "distance",
"value": 926117,
"display": "926,1 km",
"baseline": 442091,
"delta": 484026,
"deltaDisplay": "+484 km"
},
{
"key": "distance_vehicle",
"label": "In a vehicle",
"unit": "distance",
"value": 2641834,
"display": "2641,8 km",
"baseline": 1342277,
"delta": 1299557,
"deltaDisplay": "+1299,6 km"
},
{
"key": "damage_passenger",
"label": "Passenger damage",
"unit": "int",
"value": 308094,
"display": "308 094",
"baseline": 137367,
"delta": 170727,
"deltaDisplay": "+170 727"
},
{
"key": "damage_vehicle_driver",
"label": "Driver damage",
"unit": "int",
"value": 1922513,
"display": "1 922 513",
"baseline": 1477041,
"delta": 445472,
"deltaDisplay": "+445 472"
},
{
"key": "damage_to_vehicle",
"label": "Damage to vehicles",
"unit": "int",
"value": 1155325,
"display": "1 155 325",
"baseline": 599036,
"delta": 556289,
"deltaDisplay": "+556 289"
},
{
"key": "vehicles_destroyed",
"label": "Vehicles destroyed",
"unit": "int",
"value": 426,
"display": "426",
"baseline": 181,
"delta": 245,
"deltaDisplay": "+245"
},
{
"key": "human_percentage",
"label": "PvP share",
"unit": "percent",
"value": 98.23,
"display": "98,2%",
"baseline": 98.38,
"delta": -0.15,
"deltaDisplay": "−0,1 pp"
}
]
},
{
"id": "xp",
"title": "Experience",
"subtitle": "XP breakdown from the latest import",
"metrics": [
{
"key": "xp_total",
"label": "Total XP",
"unit": "int",
"value": 16460236,
"display": "16 460 236",
"baseline": 11186395,
"delta": 5273841,
"deltaDisplay": "+5 273 841"
},
{
"key": "xp_performance",
"label": "Score XP",
"unit": "int",
"value": 4542680,
"display": "4 542 680",
"baseline": 3321045,
"delta": 1221635,
"deltaDisplay": "+1 221 635"
},
{
"key": "xp_accolades",
"label": "Accolade XP",
"unit": "int",
"value": 599300,
"display": "599 300",
"baseline": 449000,
"delta": 150300,
"deltaDisplay": "+150 300"
}
]
}
],
"weapons": {
"totalWeaponsUsed": 61,
"top": [
{
"name": "SCW-10",
"type": "SMG-PDWs",
"kills": 2060,
"headshotKills": 258,
"headshotsPercent": 12.52,
"accuracyPercent": 17.37,
"killsPerMinute": 1.2,
"damage": 229585,
"timeEquippedSeconds": 103380,
"importedAt": "2026-09-21T20:54:13"
},
{
"name": "KORD 6P67",
"type": "Assault Rifles",
"kills": 1128,
"headshotKills": 161,
"headshotsPercent": 14.27,
"accuracyPercent": 20.78,
"killsPerMinute": 0.85,
"damage": 135292,
"timeEquippedSeconds": 79868,
"importedAt": "2026-09-21T20:54:13"
},
{
"name": "M433",
"type": "Assault Rifles",
"kills": 566,
"headshotKills": 62,
"headshotsPercent": 10.95,
"accuracyPercent": 16.59,
"killsPerMinute": 0.92,
"damage": 69461,
"timeEquippedSeconds": 37065,
"importedAt": "2026-09-21T20:54:13"
},
{
"name": "DRS-IAR",
"type": "Machine Guns",
"kills": 541,
"headshotKills": 60,
"headshotsPercent": 11.09,
"accuracyPercent": 21.84,
"killsPerMinute": 0.73,
"damage": 84455,
"timeEquippedSeconds": 44488,
"importedAt": "2026-09-21T20:54:13"
},
{
"name": "M4A1",
"type": "Carbines",
"kills": 517,
"headshotKills": 78,
"headshotsPercent": 15.09,
"accuracyPercent": 15.73,
"killsPerMinute": 1.42,
"damage": 60013,
"timeEquippedSeconds": 21880,
"importedAt": "2026-09-21T20:54:13"
},
{
"name": "Mini Scout",
"type": "Rifles",
"kills": 418,
"headshotKills": 254,
"headshotsPercent": 60.77,
"accuracyPercent": 32.52,
"killsPerMinute": 0.59,
"damage": 63004,
"timeEquippedSeconds": 42505,
"importedAt": "2026-09-21T20:54:13"
},
{
"name": "RPK-74M",
"type": "Machine Guns",
"kills": 303,
"headshotKills": 59,
"headshotsPercent": 19.47,
"accuracyPercent": 19.7,
"killsPerMinute": 0.45,
"damage": 43657,
"timeEquippedSeconds": 40823,
"importedAt": "2026-09-21T20:54:13"
},
{
"name": "TR-7",
"type": "Assault Rifles",
"kills": 275,
"headshotKills": 37,
"headshotsPercent": 13.45,
"accuracyPercent": 14.8,
"killsPerMinute": 0.92,
"damage": 31091,
"timeEquippedSeconds": 17863,
"importedAt": "2026-09-21T20:54:13"
},
{
"name": "GRT-CPS",
"type": "DMRs",
"kills": 251,
"headshotKills": 50,
"headshotsPercent": 19.92,
"accuracyPercent": 24.87,
"killsPerMinute": 0.51,
"damage": 36919,
"timeEquippedSeconds": 29429,
"importedAt": "2026-09-21T20:54:13"
},
{
"name": "VCR-2",
"type": "Assault Rifles",
"kills": 191,
"headshotKills": 30,
"headshotsPercent": 15.71,
"accuracyPercent": 15.54,
"killsPerMinute": 0.7,
"damage": 23127,
"timeEquippedSeconds": 16282,
"importedAt": "2026-09-21T20:54:13"
},
{
"name": "SGX",
"type": "SMG-PDWs",
"kills": 190,
"headshotKills": 23,
"headshotsPercent": 12.11,
"accuracyPercent": 17.7,
"killsPerMinute": 0.84,
"damage": 21731,
"timeEquippedSeconds": 13610,
"importedAt": "2026-09-21T20:54:13"
},
{
"name": "SVK-8.6",
"type": "DMRs",
"kills": 168,
"headshotKills": 40,
"headshotsPercent": 23.81,
"accuracyPercent": 31.43,
"killsPerMinute": 0.4,
"damage": 29003,
"timeEquippedSeconds": 25299,
"importedAt": "2026-09-21T20:54:13"
},
{
"name": "CZ3A1",
"type": "SMG-PDWs",
"kills": 162,
"headshotKills": 25,
"headshotsPercent": 15.43,
"accuracyPercent": 17.54,
"killsPerMinute": 0.75,
"damage": 18187,
"timeEquippedSeconds": 12946,
"importedAt": "2026-09-21T20:54:13"
},
{
"name": "AK-205",
"type": "Carbines",
"kills": 158,
"headshotKills": 17,
"headshotsPercent": 10.76,
"accuracyPercent": 18.48,
"killsPerMinute": 1.42,
"damage": 19652,
"timeEquippedSeconds": 6671,
"importedAt": "2026-09-21T20:54:13"
},
{
"name": "PSR",
"type": "Rifles",
"kills": 148,
"headshotKills": 84,
"headshotsPercent": 56.76,
"accuracyPercent": 27.86,
"killsPerMinute": 0.48,
"damage": 20121,
"timeEquippedSeconds": 18625,
"importedAt": "2026-09-21T20:54:13"
}
],
"restByType": [
{
"type": "Machine Guns",
"weaponsCount": 7,
"kills": 340
},
{
"type": "Pistols",
"weaponsCount": 7,
"kills": 306
},
{
"type": "Shotguns",
"weaponsCount": 4,
"kills": 286
},
{
"type": "SMG-PDWs",
"weaponsCount": 7,
"kills": 276
},
{
"type": "Carbines",
"weaponsCount": 7,
"kills": 174
},
{
"type": "Assault Rifles",
"weaponsCount": 7,
"kills": 173
},
{
"type": "Rifles",
"weaponsCount": 3,
"kills": 141
},
{
"type": "DMRs",
"weaponsCount": 4,
"kills": 85
}
]
},
"weaponFeatures": [
{
"name": "SCW-10",
"type": "SMG-PDWs",
"sessionCount": 60,
"avgAccuracy": 16.65,
"avgKpm": 1.23,
"efficiency": 0.71,
"headshotEfficiency": 10.94,
"damagePerKill": 102.4,
"momentumPercent": -30.7,
"engineeredAt": "2026-09-26T09:00:02"
},
{
"name": "KORD 6P67",
"type": "Assault Rifles",
"sessionCount": 60,
"avgAccuracy": 19.95,
"avgKpm": 0.76,
"efficiency": 0.55,
"headshotEfficiency": 12.83,
"damagePerKill": 113.09,
"momentumPercent": -21.7,
"engineeredAt": "2026-09-26T09:00:02"
},
{
"name": "M433",
"type": "Assault Rifles",
"sessionCount": 60,
"avgAccuracy": 15.53,
"avgKpm": 0.86,
"efficiency": 0.45,
"headshotEfficiency": 10.16,
"damagePerKill": 114.37,
"momentumPercent": -28.5,
"engineeredAt": "2026-09-26T09:00:02"
},
{
"name": "M4A1",
"type": "Carbines",
"sessionCount": 60,
"avgAccuracy": 14.69,
"avgKpm": 1.33,
"efficiency": 0.53,
"headshotEfficiency": 14.08,
"damagePerKill": 108.32,
"momentumPercent": -28.5,
"engineeredAt": "2026-09-26T09:00:02"
},
{
"name": "DRS-IAR",
"type": "Machine Guns",
"sessionCount": 60,
"avgAccuracy": 21.96,
"avgKpm": 0.72,
"efficiency": 0.53,
"headshotEfficiency": 10.23,
"damagePerKill": 152.67,
"momentumPercent": -30.8,
"engineeredAt": "2026-09-26T09:00:02"
},
{
"name": "TR-7",
"type": "Assault Rifles",
"sessionCount": 60,
"avgAccuracy": 13.47,
"avgKpm": 0.93,
"efficiency": 0.49,
"headshotEfficiency": 13.18,
"damagePerKill": 105.89,
"momentumPercent": -33.1,
"engineeredAt": "2026-09-26T09:00:02"
},
{
"name": "AK-205",
"type": "Carbines",
"sessionCount": 60,
"avgAccuracy": 17.36,
"avgKpm": 1.33,
"efficiency": 0.43,
"headshotEfficiency": 9.75,
"damagePerKill": 116.18,
"momentumPercent": -28.5,
"engineeredAt": "2026-09-26T09:00:02"
},
{
"name": "Mini Scout",
"type": "Rifles",
"sessionCount": 25,
"avgAccuracy": 28.32,
"avgKpm": 0.5,
"efficiency": 3.71,
"headshotEfficiency": 49.43,
"damagePerKill": 129.58,
"momentumPercent": -20,
"engineeredAt": "2026-09-26T09:00:02"
},
{
"name": "PSR",
"type": "Rifles",
"sessionCount": 60,
"avgAccuracy": 23.36,
"avgKpm": 0.4,
"efficiency": 3.76,
"headshotEfficiency": 47.5,
"damagePerKill": 112.68,
"momentumPercent": -20.2,
"engineeredAt": "2026-09-26T09:00:02"
},
{
"name": "P18",
"type": "Pistols",
"sessionCount": 60,
"avgAccuracy": 28.74,
"avgKpm": 0.65,
"efficiency": 1.65,
"headshotEfficiency": 10.83,
"damagePerKill": 108.73,
"momentumPercent": -28.3,
"engineeredAt": "2026-09-26T09:00:02"
}
],
"history": {
"note": "Each point is a career snapshot from an import, not a single round. Values are cumulative or measured at that moment. The list was thinned evenly from 116 to 40 points; the first and last are always kept.",
"series": [
{
"key": "kills",
"label": "Kills"
},
{
"key": "deaths",
"label": "Deaths"
},
{
"key": "kill_death_ratio",
"label": "K/D"
},
{
"key": "kills_per_minute",
"label": "KPM"
},
{
"key": "wins",
"label": "Wins"
},
{
"key": "matches_played",
"label": "Matches"
},
{
"key": "win_percent",
"label": "Win %"
},
{
"key": "accuracy",
"label": "Accuracy %"
},
{
"key": "headshots",
"label": "Headshots"
},
{
"key": "headshots_percent",
"label": "Headshots %"
}
],
"points": [
{
"importedAt": "2026-05-01T09:00:18",
"kills": 8711,
"deaths": 7194,
"kill_death_ratio": 1.21,
"kills_per_minute": 0.75,
"wins": 337,
"matches_played": 661,
"win_percent": 51.14,
"accuracy": 28.65,
"headshots": 1330,
"headshots_percent": 15.27
},
{
"importedAt": "2026-05-05T09:00:27",
"kills": 8781,
"deaths": 7264,
"kill_death_ratio": 1.21,
"kills_per_minute": 0.74,
"wins": 340,
"matches_played": 668,
"win_percent": 51.05,
"accuracy": 28.65,
"headshots": 1343,
"headshots_percent": 15.29
},
{
"importedAt": "2026-05-10T09:00:14",
"kills": 8801,
"deaths": 7291,
"kill_death_ratio": 1.21,
"kills_per_minute": 0.74,
"wins": 340,
"matches_played": 669,
"win_percent": 50.97,
"accuracy": 28.62,
"headshots": 1347,
"headshots_percent": 15.31
},
{
"importedAt": "2026-05-13T09:00:37",
"kills": 8901,
"deaths": 7351,
"kill_death_ratio": 1.21,
"kills_per_minute": 0.74,
"wins": 345,
"matches_played": 677,
"win_percent": 51.11,
"accuracy": 28.71,
"headshots": 1359,
"headshots_percent": 15.27
},
{
"importedAt": "2026-05-17T09:00:32",
"kills": 8996,
"deaths": 7448,
"kill_death_ratio": 1.21,
"kills_per_minute": 0.72,
"wins": 348,
"matches_played": 689,
"win_percent": 50.66,
"accuracy": 28.81,
"headshots": 1366,
"headshots_percent": 15.18
},
{
"importedAt": "2026-05-20T09:00:06",
"kills": 8996,
"deaths": 7448,
"kill_death_ratio": 1.21,
"kills_per_minute": 0.72,
"wins": 348,
"matches_played": 689,
"win_percent": 50.66,
"accuracy": 28.81,
"headshots": 1366,
"headshots_percent": 15.18
},
{
"importedAt": "2026-05-23T09:00:16",
"kills": 9044,
"deaths": 7490,
"kill_death_ratio": 1.21,
"kills_per_minute": 0.73,
"wins": 348,
"matches_played": 692,
"win_percent": 50.43,
"accuracy": 28.8,
"headshots": 1370,
"headshots_percent": 15.15
},
{
"importedAt": "2026-05-27T09:00:08",
"kills": 9190,
"deaths": 7598,
"kill_death_ratio": 1.21,
"kills_per_minute": 0.72,
"wins": 352,
"matches_played": 707,
"win_percent": 49.93,
"accuracy": 28.85,
"headshots": 1396,
"headshots_percent": 15.19
},
{
"importedAt": "2026-06-01T09:00:10",
"kills": 9273,
"deaths": 7651,
"kill_death_ratio": 1.21,
"kills_per_minute": 0.71,
"wins": 356,
"matches_played": 714,
"win_percent": 50,
"accuracy": 28.99,
"headshots": 1408,
"headshots_percent": 15.18
},
{
"importedAt": "2026-06-05T09:00:40",
"kills": 9378,
"deaths": 7729,
"kill_death_ratio": 1.21,
"kills_per_minute": 0.71,
"wins": 360,
"matches_played": 724,
"win_percent": 49.86,
"accuracy": 29.08,
"headshots": 1422,
"headshots_percent": 15.16
},
{
"importedAt": "2026-06-07T09:00:05",
"kills": 9378,
"deaths": 7729,
"kill_death_ratio": 1.21,
"kills_per_minute": 0.71,
"wins": 360,
"matches_played": 724,
"win_percent": 49.86,
"accuracy": 29.08,
"headshots": 1422,
"headshots_percent": 15.16
},
{
"importedAt": "2026-06-12T09:00:26",
"kills": 9458,
"deaths": 7794,
"kill_death_ratio": 1.21,
"kills_per_minute": 0.7,
"wins": 365,
"matches_played": 736,
"win_percent": 49.73,
"accuracy": 29.3,
"headshots": 1433,
"headshots_percent": 15.15
},
{
"importedAt": "2026-06-17T09:00:19",
"kills": 9712,
"deaths": 7987,
"kill_death_ratio": 1.22,
"kills_per_minute": 0.69,
"wins": 377,
"matches_played": 767,
"win_percent": 49.28,
"accuracy": 29.28,
"headshots": 1476,
"headshots_percent": 15.2
},
{
"importedAt": "2026-06-20T09:00:59",
"kills": 9821,
"deaths": 8026,
"kill_death_ratio": 1.22,
"kills_per_minute": 0.69,
"wins": 383,
"matches_played": 778,
"win_percent": 49.36,
"accuracy": 29.58,
"headshots": 1494,
"headshots_percent": 15.21
},
{
"importedAt": "2026-06-23T09:00:25",
"kills": 9900,
"deaths": 8053,
"kill_death_ratio": 1.23,
"kills_per_minute": 0.69,
"wins": 384,
"matches_played": 781,
"win_percent": 49.29,
"accuracy": 29.59,
"headshots": 1497,
"headshots_percent": 15.12
},
{
"importedAt": "2026-06-26T09:00:30",
"kills": 9900,
"deaths": 8053,
"kill_death_ratio": 1.23,
"kills_per_minute": 0.69,
"wins": 384,
"matches_played": 781,
"win_percent": 49.29,
"accuracy": 29.59,
"headshots": 1497,
"headshots_percent": 15.12
},
{
"importedAt": "2026-06-29T09:00:59",
"kills": 9937,
"deaths": 8080,
"kill_death_ratio": 1.23,
"kills_per_minute": 0.69,
"wins": 386,
"matches_played": 783,
"win_percent": 49.42,
"accuracy": 29.58,
"headshots": 1509,
"headshots_percent": 15.19
},
{
"importedAt": "2026-07-02T09:00:07",
"kills": 10052,
"deaths": 8146,
"kill_death_ratio": 1.23,
"kills_per_minute": 0.69,
"wins": 390,
"matches_played": 792,
"win_percent": 49.37,
"accuracy": 29.58,
"headshots": 1520,
"headshots_percent": 15.12
},
{
"importedAt": "2026-07-07T09:00:59",
"kills": 10276,
"deaths": 8295,
"kill_death_ratio": 1.24,
"kills_per_minute": 0.69,
"wins": 397,
"matches_played": 813,
"win_percent": 48.95,
"accuracy": 29.81,
"headshots": 1555,
"headshots_percent": 15.13
},
{
"importedAt": "2026-07-11T09:00:15",
"kills": 10309,
"deaths": 8331,
"kill_death_ratio": 1.24,
"kills_per_minute": 0.68,
"wins": 399,
"matches_played": 818,
"win_percent": 48.9,
"accuracy": 29.81,
"headshots": 1561,
"headshots_percent": 15.14
},
{
"importedAt": "2026-07-15T09:00:56",
"kills": 10309,
"deaths": 8331,
"kill_death_ratio": 1.24,
"kills_per_minute": 0.68,
"wins": 399,
"matches_played": 818,
"win_percent": 48.9,
"accuracy": 29.81,
"headshots": 1561,
"headshots_percent": 15.14
},
{
"importedAt": "2026-07-18T09:00:07",
"kills": 10309,
"deaths": 8331,
"kill_death_ratio": 1.24,
"kills_per_minute": 0.68,
"wins": 399,
"matches_played": 818,
"win_percent": 48.9,
"accuracy": 29.81,
"headshots": 1561,
"headshots_percent": 15.14
},
{
"importedAt": "2026-07-23T09:00:40",
"kills": 10434,
"deaths": 8410,
"kill_death_ratio": 1.24,
"kills_per_minute": 0.68,
"wins": 404,
"matches_played": 830,
"win_percent": 48.79,
"accuracy": 29.88,
"headshots": 1582,
"headshots_percent": 15.16
},
{
"importedAt": "2026-07-26T09:00:06",
"kills": 10541,
"deaths": 8481,
"kill_death_ratio": 1.24,
"kills_per_minute": 0.68,
"wins": 411,
"matches_played": 841,
"win_percent": 48.99,
"accuracy": 29.93,
"headshots": 1597,
"headshots_percent": 15.15
},
{
"importedAt": "2026-07-29T09:00:23",
"kills": 10566,
"deaths": 8502,
"kill_death_ratio": 1.24,
"kills_per_minute": 0.68,
"wins": 413,
"matches_played": 844,
"win_percent": 49.05,
"accuracy": 29.98,
"headshots": 1601,
"headshots_percent": 15.15
},
{
"importedAt": "2026-08-02T09:00:11",
"kills": 10724,
"deaths": 8623,
"kill_death_ratio": 1.24,
"kills_per_minute": 0.67,
"wins": 423,
"matches_played": 861,
"win_percent": 49.24,
"accuracy": 29.87,
"headshots": 1622,
"headshots_percent": 15.12
},
{
"importedAt": "2026-08-05T09:00:15",
"kills": 10793,
"deaths": 8702,
"kill_death_ratio": 1.24,
"kills_per_minute": 0.67,
"wins": 427,
"matches_played": 868,
"win_percent": 49.31,
"accuracy": 29.85,
"headshots": 1639,
"headshots_percent": 15.19
},
{
"importedAt": "2026-08-09T09:00:22",
"kills": 10817,
"deaths": 8742,
"kill_death_ratio": 1.24,
"kills_per_minute": 0.67,
"wins": 427,
"matches_played": 872,
"win_percent": 49.08,
"accuracy": 29.79,
"headshots": 1643,
"headshots_percent": 15.19
},
{
"importedAt": "2026-08-12T09:00:06",
"kills": 10883,
"deaths": 8816,
"kill_death_ratio": 1.23,
"kills_per_minute": 0.67,
"wins": 432,
"matches_played": 881,
"win_percent": 49.15,
"accuracy": 29.76,
"headshots": 1655,
"headshots_percent": 15.21
},
{
"importedAt": "2026-08-15T09:00:06",
"kills": 10883,
"deaths": 8816,
"kill_death_ratio": 1.23,
"kills_per_minute": 0.67,
"wins": 432,
"matches_played": 881,
"win_percent": 49.15,
"accuracy": 29.76,
"headshots": 1655,
"headshots_percent": 15.21
},
{
"importedAt": "2026-08-18T09:00:06",
"kills": 10883,
"deaths": 8816,
"kill_death_ratio": 1.23,
"kills_per_minute": 0.67,
"wins": 432,
"matches_played": 881,
"win_percent": 49.15,
"accuracy": 29.76,
"headshots": 1655,
"headshots_percent": 15.21
},
{
"importedAt": "2026-08-21T09:00:07",
"kills": 10940,
"deaths": 8863,
"kill_death_ratio": 1.23,
"kills_per_minute": 0.66,
"wins": 435,
"matches_played": 889,
"win_percent": 49.04,
"accuracy": 30.02,
"headshots": 1658,
"headshots_percent": 15.16
},
{
"importedAt": "2026-08-28T09:00:01",
"kills": 10940,
"deaths": 8863,
"kill_death_ratio": 1.23,
"kills_per_minute": 0.66,
"wins": 435,
"matches_played": 889,
"win_percent": 49.04,
"accuracy": 30.02,
"headshots": 1658,
"headshots_percent": 15.16
},
{
"importedAt": "2026-08-31T09:00:07",
"kills": 11063,
"deaths": 8946,
"kill_death_ratio": 1.24,
"kills_per_minute": 0.66,
"wins": 436,
"matches_played": 898,
"win_percent": 48.66,
"accuracy": 30.24,
"headshots": 1665,
"headshots_percent": 15.05
},
{
"importedAt": "2026-09-03T09:00:07",
"kills": 11124,
"deaths": 8993,
"kill_death_ratio": 1.24,
"kills_per_minute": 0.65,
"wins": 439,
"matches_played": 906,
"win_percent": 48.56,
"accuracy": 30.61,
"headshots": 1667,
"headshots_percent": 14.99
},
{
"importedAt": "2026-09-06T09:00:12",
"kills": 11124,
"deaths": 8993,
"kill_death_ratio": 1.24,
"kills_per_minute": 0.65,
"wins": 439,
"matches_played": 906,
"win_percent": 48.56,
"accuracy": 30.61,
"headshots": 1667,
"headshots_percent": 14.99
},
{
"importedAt": "2026-09-10T09:00:08",
"kills": 11165,
"deaths": 9034,
"kill_death_ratio": 1.24,
"kills_per_minute": 0.64,
"wins": 443,
"matches_played": 913,
"win_percent": 48.63,
"accuracy": 30.71,
"headshots": 1673,
"headshots_percent": 14.98
},
{
"importedAt": "2026-09-13T09:00:03",
"kills": 11165,
"deaths": 9034,
"kill_death_ratio": 1.24,
"kills_per_minute": 0.64,
"wins": 443,
"matches_played": 913,
"win_percent": 48.63,
"accuracy": 30.71,
"headshots": 1673,
"headshots_percent": 14.98
},
{
"importedAt": "2026-09-21T09:00:03",
"kills": 11273,
"deaths": 9131,
"kill_death_ratio": 1.23,
"kills_per_minute": 0.64,
"wins": 448,
"matches_played": 924,
"win_percent": 48.59,
"accuracy": 31.08,
"headshots": 1686,
"headshots_percent": 14.96
},
{
"importedAt": "2026-09-25T09:00:03",
"kills": 11273,
"deaths": 9131,
"kill_death_ratio": 1.23,
"kills_per_minute": 0.64,
"wins": 448,
"matches_played": 924,
"win_percent": 48.59,
"accuracy": 31.08,
"headshots": 1686,
"headshots_percent": 14.96
}
]
}
}
}
