{
  "name": "TANK Stack Index",
  "description": "What TANK measures every hour: agent work across its workspaces (keys work_*), attacks TANK Shield makes on its own production (shield_*), services graded against public sources (service*), and dated market calls (market_*). Every other figure is the agenture board's research, an archive since October 5, 2026 (archive_days says when it ran). Counts and sums only; nothing from inside a conversation and nothing identifying.",
  "units": "A \"percent\" value is a fraction of one: 0.4 means 40%. \"usd\" is US dollars; \"hours\", \"minutes\" and \"days\" are durations.",
  "url": "https://tank.chat/data",
  "license": "CC BY 4.0",
  "generated": "2026-11-04T17:15:57.503Z",
  "computedAt": "2026-11-04T17:15:56.969636787Z",
  "headline": [
    {
      "key": "work_runs_7d",
      "label": "Agent runs, 7d",
      "value": 162,
      "unit": "",
      "sample": 162,
      "note": "Every run started in a TANK workspace in the last seven days, the board's archived products excluded."
    },
    {
      "key": "work_finished_share_7d",
      "label": "Runs that finished, 7d",
      "value": 0.691358024691358,
      "unit": "percent",
      "sample": 162,
      "note": "Ended with the work done, of runs started in the last seven days."
    },
    {
      "key": "work_spend_7d",
      "label": "Spent on agent work, 7d",
      "value": 348.5946769999999,
      "unit": "usd",
      "sample": 160,
      "note": "From the LLM ledger, at cost."
    },
    {
      "key": "shield_attempts_total",
      "label": "Attacks on our own production, all time",
      "value": 18326,
      "unit": "",
      "sample": 18326,
      "note": "Counted in a tally the database only lets grow."
    },
    {
      "key": "shield_got_through_total",
      "label": "Attacks that got through, all time",
      "value": 1,
      "unit": "",
      "sample": 18326,
      "note": "Each one is an incident, fixed and then attacked again."
    },
    {
      "key": "market_hit_share",
      "label": "Market calls that were right",
      "value": 0.38792480115690525,
      "unit": "percent",
      "sample": 2766,
      "note": "Higher and lower are right when the sign matches; flat within twenty-five basis points."
    },
    {
      "key": "service_readings",
      "label": "Readings of the truth",
      "value": 39449,
      "unit": "",
      "sample": 39449,
      "note": "Fetched by TANK from the public sources every ten minutes."
    }
  ],
  "figures": [
    {
      "key": "work_failed_share_7d",
      "label": "Runs that failed, 7d",
      "value": 0.21604938271604937,
      "unit": "percent",
      "sample": 162,
      "note": "Of runs started in the last seven days. Published because it is the honest half."
    },
    {
      "key": "work_workspaces_7d",
      "label": "Workspaces with agent work, 7d",
      "value": 18,
      "unit": "",
      "sample": 162,
      "note": "Counted, never named."
    },
    {
      "key": "work_median_minutes_7d",
      "label": "Median run length, 7d",
      "value": 6.889227483333333,
      "unit": "minutes",
      "sample": 162,
      "note": "Start to end, of runs that have ended."
    },
    {
      "key": "work_cost_per_run_7d",
      "label": "Median cost of a run, 7d",
      "value": 0.745267,
      "unit": "usd",
      "sample": 160,
      "note": "Half the runs cost less than this."
    },
    {
      "key": "work_small_model_share_7d",
      "label": "Runs on a small model, 7d",
      "value": 0.275,
      "unit": "percent",
      "sample": 160,
      "note": "Runs that used only Haiku. Larger models are kept for the work that needs them."
    },
    {
      "key": "shield_attempts_7d",
      "label": "Attacks on our own production, 7d",
      "value": 4933,
      "unit": "",
      "sample": 4933,
      "note": "TANK Shield's probes, run against the public origin the way an attacker would."
    },
    {
      "key": "shield_probes",
      "label": "Different attacks",
      "value": 80,
      "unit": "",
      "sample": 80,
      "note": "Distinct probes across credential lifetime, user-supplied URLs, the anonymous surface and roles."
    },
    {
      "key": "market_calls_7d",
      "label": "Market calls made, 7d",
      "value": 624,
      "unit": "",
      "sample": 624,
      "note": "Dated calls on software makers' share prices, a day ahead, written before anybody knows."
    },
    {
      "key": "market_scored_total",
      "label": "Market calls scored",
      "value": 2766,
      "unit": "",
      "sample": 2766,
      "note": "Scored against the price when the day was up. Nothing is edited after the fact."
    },
    {
      "key": "market_always_higher_share",
      "label": "Right by saying \"higher\" every time",
      "value": 0.527114967462039,
      "unit": "percent",
      "sample": 2766,
      "note": "The baseline to beat. Below it, the calls are not yet worth reading."
    },
    {
      "key": "services",
      "label": "Services",
      "value": 8,
      "unit": "products",
      "sample": 8,
      "note": "Products graded by a public source of truth rather than by opinion, two to an environment."
    },
    {
      "key": "service_environments",
      "label": "Service environments",
      "value": 4,
      "unit": "",
      "sample": 4,
      "note": "Each is a public source of truth, a question about it and a baseline to beat."
    },
    {
      "key": "service_predictions",
      "label": "Predictions asked for",
      "value": 23008,
      "unit": "",
      "sample": 23008,
      "note": "Each product is asked at every half hour, for every subject; a slot that passes unanswered is never filled in."
    },
    {
      "key": "service_answer_rate",
      "label": "Predictions answered",
      "value": 0.4877433936022253,
      "unit": "percent",
      "sample": 23008,
      "note": "Of the predictions asked for."
    },
    {
      "key": "service_scored",
      "label": "Predictions scored against the truth",
      "value": 10502,
      "unit": "",
      "sample": 10502,
      "note": "Matched to a reading of the truth and to the baseline's prediction for the same moment."
    },
    {
      "key": "service_best_skill",
      "label": "Best skill against the baseline",
      "value": 1,
      "unit": "percent",
      "sample": 10502,
      "note": "The best product's latest window: how much smaller its error was than the baseline's. Below zero means behind."
    },
    {
      "key": "archive_days",
      "label": "Days the board ran",
      "value": 5.9555800509375,
      "unit": "days",
      "sample": 1277,
      "note": "From September 29 to October 5, 2026. Every figure below was measured over that time and no longer changes."
    },
    {
      "key": "products",
      "label": "Businesses researched",
      "value": 1277,
      "unit": "products",
      "sample": 1277,
      "note": "Each one an idea for small-business software that an agent worked through."
    },
    {
      "key": "agent_hours",
      "label": "Agent hours spent",
      "value": 226.2,
      "unit": "hours",
      "sample": 4349,
      "note": "Summed across every run, each run capped at four hours."
    },
    {
      "key": "stages_done",
      "label": "Pieces of research finished",
      "value": 4349,
      "unit": "",
      "sample": 4349,
      "note": "A stage is one question answered in full: a plan, a market scan, a data model."
    },
    {
      "key": "words",
      "label": "Words of research written",
      "value": 715505,
      "unit": "",
      "sample": 4349,
      "note": "Everything the agents wrote down, counted. A novel is about 90,000."
    },
    {
      "key": "industries",
      "label": "Industries covered",
      "value": 86,
      "unit": "",
      "sample": 1277,
      "note": "Distinct trades represented."
    },
    {
      "key": "with_work",
      "label": "Products with finished work",
      "value": 1279,
      "unit": "products",
      "sample": 1277,
      "note": "Products where at least one stage was completed."
    },
    {
      "key": "cost_per_idea",
      "label": "Cost of one piece of research",
      "value": 0.041,
      "unit": "usd",
      "sample": 4349,
      "note": "Measured from the LLM ledger: what one completed stage cost."
    },
    {
      "key": "spend_total",
      "label": "Spent on the research",
      "value": 178.309,
      "unit": "usd",
      "sample": 4349,
      "note": "4349 finished stages at $0.041 each, from the LLM ledger."
    },
    {
      "key": "stages_since_rename",
      "label": "Stages usable for indices",
      "value": 3758,
      "unit": "",
      "sample": 4349,
      "note": "Work recorded after the products were renamed. Earlier work names the product a workspace used to be called, so it is excluded from anything that reads conclusions."
    },
    {
      "key": "cost_per_business",
      "label": "Cost to research one business",
      "value": 0.13941282251759188,
      "unit": "usd",
      "sample": 1279,
      "note": "Total spend divided by the products that have finished work in them."
    },
    {
      "key": "words_per_dollar",
      "label": "Words per dollar",
      "value": 4012.7251008081475,
      "unit": "",
      "sample": 4349,
      "note": "What a dollar of agent time bought, written down."
    },
    {
      "key": "deepest",
      "label": "Most work on one product",
      "value": 6,
      "unit": "",
      "sample": 1277,
      "note": "Stages finished on the furthest-along product."
    },
    {
      "key": "first_answer",
      "label": "Hours to a first answer",
      "value": 19.647184804722222,
      "unit": "hours",
      "sample": 1279,
      "note": "Median time from a product appearing to its first finished stage. High because products were added faster than the agents could work through them."
    },
    {
      "key": "dropped",
      "label": "Ideas dropped",
      "value": 5,
      "unit": "",
      "sample": 1282,
      "note": "Products whose own research concluded they were already well served. Published because research that never drops anything is not research, it is generation."
    },
    {
      "key": "gaps_found",
      "label": "Gaps the agents found",
      "value": 210,
      "unit": "",
      "sample": 4349,
      "note": "One sentence per product naming what the existing tools get wrong, written while researching something else."
    },
    {
      "key": "gaps_built",
      "label": "Gaps turned into products",
      "value": 5,
      "unit": "",
      "sample": 210,
      "note": "Gaps that became a product of their own."
    },
    {
      "key": "second_opinions",
      "label": "Questions answered twice",
      "value": 70,
      "unit": "",
      "sample": 4349,
      "note": "One turn in twenty asked a question a product had already answered, of an agent that could not see the first answer, to measure whether AI agrees with itself."
    },
    {
      "key": "predictions",
      "label": "Dated predictions on record",
      "value": 122,
      "unit": "",
      "sample": 4349,
      "note": "Falsifiable claims the agents made, written down before anybody knew the answer."
    },
    {
      "key": "incumbent_hostile_share",
      "label": "Tool mentions that are hostile or about replacing it",
      "value": 0,
      "unit": "percent",
      "sample": 1684,
      "note": "Every time an agent named an existing tool, the model read how: hostile, critical, neutral, or praise, and whether the product existed to replace it. The hostile share of the last thirty days of mentions."
    },
    {
      "key": "incumbent_most_exposed",
      "label": "Most exposed incumbent — Notion",
      "value": 27.8,
      "unit": "",
      "sample": 1684,
      "note": "The highest vulnerability score this hour, from the research. Vulnerability is 0 to 100, in four parts of equal weight. Pressure: how many hostile or replacement-minded mentions the tool drew in the last thirty days, on a log scale, so the first few count most. Discontent: complaints the agents recorded about it against the strengths they recorded, in the agents' own words. Demand: visits and claims the board's replacements for it have drawn in the last week. Price: how much cheaper the board's software is than what the agents found the incumbent charging. Difficulty — what it costs the board per finished stage to replace it and how often those runs fail — is published beside the score, not inside it: a moat is a fact about the incumbent, not a reason to look away."
    },
    {
      "key": "merged",
      "label": "Twins merged",
      "value": 5,
      "unit": "",
      "sample": 1277,
      "note": "Products found to be the same product twice and absorbed into the one further along."
    },
    {
      "key": "branded",
      "label": "Products with a brand",
      "value": 1277,
      "unit": "products",
      "sample": 1277,
      "note": "A mark, a palette and a tagline, from the product's own description."
    },
    {
      "key": "landing_pages",
      "label": "Products with a landing page",
      "value": 1277,
      "unit": "products",
      "sample": 1277,
      "note": "Written at the first stage and revised at every stage after."
    },
    {
      "key": "repos",
      "label": "Products with a repository",
      "value": 1277,
      "unit": "products",
      "sample": 1277,
      "note": "One GitHub repository per product, holding its research."
    },
    {
      "key": "docs_committed",
      "label": "Documents committed by stages",
      "value": 782,
      "unit": "",
      "sample": 782,
      "note": "Every stage left its writing in the product's repository; this counts those commits."
    }
  ],
  "industries": [
    {
      "name": "Cold chain",
      "count": 33,
      "share": 0.02574102964118565
    },
    {
      "name": "HVAC",
      "count": 31,
      "share": 0.02418096723868955
    },
    {
      "name": "Courier networks",
      "count": 30,
      "share": 0.0234009360374415
    },
    {
      "name": "Locksmiths",
      "count": 30,
      "share": 0.0234009360374415
    },
    {
      "name": "Warehousing",
      "count": 30,
      "share": 0.0234009360374415
    },
    {
      "name": "Freight forwarding",
      "count": 29,
      "share": 0.02262090483619345
    },
    {
      "name": "Plumbing",
      "count": 29,
      "share": 0.02262090483619345
    },
    {
      "name": "Appliance repair",
      "count": 28,
      "share": 0.0218408736349454
    },
    {
      "name": "Landscaping",
      "count": 28,
      "share": 0.0218408736349454
    },
    {
      "name": "Waste collection",
      "count": 28,
      "share": 0.0218408736349454
    },
    {
      "name": "Electrical contracting",
      "count": 27,
      "share": 0.02106084243369735
    },
    {
      "name": "Coffee roasters",
      "count": 26,
      "share": 0.0202808112324493
    },
    {
      "name": "Food manufacturing",
      "count": 26,
      "share": 0.0202808112324493
    },
    {
      "name": "Haulage",
      "count": 26,
      "share": 0.0202808112324493
    },
    {
      "name": "Letting agents",
      "count": 26,
      "share": 0.0202808112324493
    },
    {
      "name": "Pest control",
      "count": 26,
      "share": 0.0202808112324493
    },
    {
      "name": "Roofing",
      "count": 26,
      "share": 0.0202808112324493
    },
    {
      "name": "Glazing",
      "count": 25,
      "share": 0.01950078003120125
    },
    {
      "name": "Block management",
      "count": 24,
      "share": 0.0187207488299532
    },
    {
      "name": "Removals",
      "count": 24,
      "share": 0.0187207488299532
    },
    {
      "name": "Breweries",
      "count": 23,
      "share": 0.01794071762870515
    },
    {
      "name": "Short lets",
      "count": 23,
      "share": 0.01794071762870515
    },
    {
      "name": "Childcare",
      "count": 22,
      "share": 0.0171606864274571
    },
    {
      "name": "Commercial cleaning",
      "count": 22,
      "share": 0.0171606864274571
    },
    {
      "name": "Construction",
      "count": 22,
      "share": 0.0171606864274571
    },
    {
      "name": "Facilities management",
      "count": 22,
      "share": 0.0171606864274571
    },
    {
      "name": "Independent grocers",
      "count": 22,
      "share": 0.0171606864274571
    },
    {
      "name": "Insurance broking",
      "count": 22,
      "share": 0.0171606864274571
    },
    {
      "name": "Surveying",
      "count": 22,
      "share": 0.0171606864274571
    },
    {
      "name": "Catering",
      "count": 21,
      "share": 0.01638065522620905
    },
    {
      "name": "Hotels",
      "count": 21,
      "share": 0.01638065522620905
    },
    {
      "name": "Physiotherapy",
      "count": 21,
      "share": 0.01638065522620905
    },
    {
      "name": "Restaurants",
      "count": 21,
      "share": 0.01638065522620905
    },
    {
      "name": "Salons",
      "count": 21,
      "share": 0.01638065522620905
    },
    {
      "name": "Audiology",
      "count": 20,
      "share": 0.015600624024960999
    },
    {
      "name": "Gyms and studios",
      "count": 20,
      "share": 0.015600624024960999
    },
    {
      "name": "Mental health practices",
      "count": 20,
      "share": 0.015600624024960999
    },
    {
      "name": "Recruitment",
      "count": 20,
      "share": 0.015600624024960999
    },
    {
      "name": "Bakeries",
      "count": 19,
      "share": 0.014820592823712949
    },
    {
      "name": "Dental practices",
      "count": 19,
      "share": 0.014820592823712949
    },
    {
      "name": "Home care",
      "count": 19,
      "share": 0.014820592823712949
    },
    {
      "name": "Optometry",
      "count": 19,
      "share": 0.014820592823712949
    },
    {
      "name": "Urgent care",
      "count": 19,
      "share": 0.014820592823712949
    },
    {
      "name": "Veterinary clinics",
      "count": 19,
      "share": 0.014820592823712949
    },
    {
      "name": "Accountancy",
      "count": 18,
      "share": 0.014040561622464899
    },
    {
      "name": "Pharmacies",
      "count": 18,
      "share": 0.014040561622464899
    },
    {
      "name": "Dermatology",
      "count": 17,
      "share": 0.01326053042121685
    },
    {
      "name": "Driving schools",
      "count": 17,
      "share": 0.01326053042121685
    },
    {
      "name": "Training providers",
      "count": 17,
      "share": 0.01326053042121685
    },
    {
      "name": "Small law firms",
      "count": 16,
      "share": 0.0124804992199688
    },
    {
      "name": "Construction & Trades",
      "count": 6,
      "share": 0.0046801872074883
    },
    {
      "name": "Accounting & Finance",
      "count": 5,
      "share": 0.0039001560062402497
    },
    {
      "name": "Agriculture",
      "count": 5,
      "share": 0.0039001560062402497
    },
    {
      "name": "Dental & Veterinary",
      "count": 5,
      "share": 0.0039001560062402497
    },
    {
      "name": "Education",
      "count": 5,
      "share": 0.0039001560062402497
    },
    {
      "name": "Energy & Utilities",
      "count": 5,
      "share": 0.0039001560062402497
    },
    {
      "name": "Government & Public Safety",
      "count": 5,
      "share": 0.0039001560062402497
    },
    {
      "name": "Healthcare",
      "count": 5,
      "share": 0.0039001560062402497
    },
    {
      "name": "Home Services & Property",
      "count": 5,
      "share": 0.0039001560062402497
    },
    {
      "name": "HR & Staffing",
      "count": 5,
      "share": 0.0039001560062402497
    },
    {
      "name": "Insurance",
      "count": 5,
      "share": 0.0039001560062402497
    },
    {
      "name": "Legal",
      "count": 5,
      "share": 0.0039001560062402497
    },
    {
      "name": "Logistics & Fleet",
      "count": 5,
      "share": 0.0039001560062402497
    },
    {
      "name": "Manufacturing",
      "count": 5,
      "share": 0.0039001560062402497
    },
    {
      "name": "Media & Creative",
      "count": 5,
      "share": 0.0039001560062402497
    },
    {
      "name": "Nonprofit & Faith",
      "count": 5,
      "share": 0.0039001560062402497
    },
    {
      "name": "Real Estate",
      "count": 5,
      "share": 0.0039001560062402497
    },
    {
      "name": "Restaurants & Hospitality",
      "count": 5,
      "share": 0.0039001560062402497
    },
    {
      "name": "Retail & E-commerce",
      "count": 5,
      "share": 0.0039001560062402497
    },
    {
      "name": "Sports & Fitness",
      "count": 5,
      "share": 0.0039001560062402497
    },
    {
      "name": "Field service",
      "count": 3,
      "share": 0.00234009360374415
    },
    {
      "name": "Small business software",
      "count": 3,
      "share": 0.00234009360374415
    },
    {
      "name": "Work tracking",
      "count": 3,
      "share": 0.00234009360374415
    },
    {
      "name": "Accounting",
      "count": 2,
      "share": 0.0015600624024961
    },
    {
      "name": "Customer records",
      "count": 2,
      "share": 0.0015600624024961
    },
    {
      "name": "Customer support",
      "count": 2,
      "share": 0.0015600624024961
    },
    {
      "name": "Messaging",
      "count": 2,
      "share": 0.0015600624024961
    },
    {
      "name": "Payments",
      "count": 2,
      "share": 0.0015600624024961
    },
    {
      "name": "Automation",
      "count": 1,
      "share": 0.00078003120124805
    },
    {
      "name": "Documentation",
      "count": 1,
      "share": 0.00078003120124805
    },
    {
      "name": "Documents",
      "count": 1,
      "share": 0.00078003120124805
    },
    {
      "name": "E-commerce",
      "count": 1,
      "share": 0.00078003120124805
    },
    {
      "name": "Meetings",
      "count": 1,
      "share": 0.00078003120124805
    },
    {
      "name": "Operations",
      "count": 1,
      "share": 0.00078003120124805
    },
    {
      "name": "Scheduling",
      "count": 1,
      "share": 0.00078003120124805
    },
    {
      "name": "Storage",
      "count": 1,
      "share": 0.00078003120124805
    }
  ],
  "stages": [
    {
      "name": "Write the landing page",
      "count": 1291,
      "share": 0.3435337945715806
    },
    {
      "name": "Plan the first version",
      "count": 1206,
      "share": 0.320915380521554
    },
    {
      "name": "Research what already exists",
      "count": 731,
      "share": 0.19451836083022883
    },
    {
      "name": "List the objections",
      "count": 213,
      "share": 0.056679084619478445
    },
    {
      "name": "Write the first ten minutes",
      "count": 36,
      "share": 0.009579563597658328
    },
    {
      "name": "Say what it will not do",
      "count": 28,
      "share": 0.007450771687067589
    },
    {
      "name": "Decide who sees what",
      "count": 23,
      "share": 0.0061202767429483764
    },
    {
      "name": "Sketch the data model",
      "count": 22,
      "share": 0.005854177754124534
    },
    {
      "name": "Say what done looks like",
      "count": 22,
      "share": 0.005854177754124534
    },
    {
      "name": "Decide the first week",
      "count": 21,
      "share": 0.0055880787653006915
    },
    {
      "name": "Explain it to a sceptic",
      "count": 20,
      "share": 0.005321979776476849
    },
    {
      "name": "Plan for what goes wrong",
      "count": 20,
      "share": 0.005321979776476849
    },
    {
      "name": "Write the screens",
      "count": 20,
      "share": 0.005321979776476849
    },
    {
      "name": "Decide what it connects to",
      "count": 18,
      "share": 0.004789781798829164
    },
    {
      "name": "Get the data in",
      "count": 17,
      "share": 0.004523682810005322
    },
    {
      "name": "Name the risks",
      "count": 16,
      "share": 0.004257583821181479
    },
    {
      "name": "Decide what to measure",
      "count": 16,
      "share": 0.004257583821181479
    },
    {
      "name": "Build or buy",
      "count": 14,
      "share": 0.0037253858435337944
    },
    {
      "name": "Find the first ten customers",
      "count": 12,
      "share": 0.0031931878658861094
    },
    {
      "name": "Price it",
      "count": 12,
      "share": 0.0031931878658861094
    }
  ]
}