{
  "id": "email-qualification",
  "name": "Guest-post outreach thread qualification",
  "version": "1.1",
  "updated": "2026-09-25",
  "summary": "Qualify one link-building outreach thread (every email between your team and one website about a paid guest post): did they reply, what happened, how the price went, their terms, why it failed, and how well your side handled it. Vansa-3's email skill was trained on 76,584 labelled decisions from 23,894 such threads with these question ids and option sets (each core question in three wordings, the one published here among them).",
  "model": "vansa-3",
  "trained_with": "vansa-3",
  "endpoint": "https://api.vansa.org/v1/systemone",
  "docs": "https://docs.vansa.org/#email-qualification",
  "state_builder": "https://docs.vansa.org/presets/email_state.py",
  "how_to_use": [
    "Send ONE thread per request as `state`, built in the trained format below (the reference builder email_state.py does it).",
    "Send `questions` from this file unchanged: same ids, same option names and descriptions. Rewording costs accuracy (measured 0.956 -> 0.939 on reworded versions).",
    "The 26 `questions` fit in one request (limit 32). The 26 `extra_questions` need a second request with the same state.",
    "Ignore an extra answer when its condition in `extra_questions_only_when` does not hold for the thread (e.g. tone_of_them when counts.theirs is 0): those questions were only trained, and measured, where the condition holds. payment_method was trained and measured only on threads where the reference labels had a value (\"none\" included: 378 of the 600 test threads); nothing in the state shows which threads those are, so its agreement covers only those threads.",
    "Send `state` as a JSON object, not as a string, with the keys in the order shown: the model reads it serialised exactly like that.",
    "`us` is always the side that sends the outreach and buys the post; `them` is the website. Copy `roles` verbatim from `example_state.roles`.",
    "Send a User-Agent header with every request (to docs.vansa.org too): Cloudflare answers 403 (error 1010) to Python-urllib's default one.",
    "`counts` and `days_since_last` are computed by your code from the mail headers and the current date, never guessed: the time-based outcomes (still_open, ghosted_*) depend on them.",
    "84% of the training threads were English; Spanish and Portuguese were in the training data too. Vansa-3's base model (JevK5) is documented by its author as English only.",
    "Most training threads were weeks or months old: threads from the last two weeks (still_open) were rare, so check low-confidence answers on fresh threads.",
    "Weakest of the 26 questions (87-91%): article_by_them_only, our_handling, negotiation, fail_reason. Weakest extras (80-87%): their_last_topic, tone_of_them, tone_of_us, distinct_prices_bucket. Use `confidence` to send doubtful threads to a person.",
    "Prices, counters, 'best move' advice and free-text notes are not answered by the model: extract amounts with code or an LLM."
  ],
  "state_format": {
    "site": "the other side's email domain, lowercased (e.g. example-garden-blog.com)",
    "subject": "the first message's subject without Re:/Fwd: prefixes, at most 120 characters",
    "roles": "us = our outreach team buying a sponsored guest post; them = the website owner or editor",
    "counts": {
      "ours": "all messages from us in the whole thread",
      "theirs": "their real messages in the whole thread (auto-replies and bounces excluded)",
      "auto_replies": "messages with an auto-reply signal (Auto-Submitted / X-Autoreply / X-Autorespond header, or an out-of-office / ticket-received subject or opening), either side; a bounce with such a signal counts here as well as under bounces",
      "bounces": "delivery failures",
      "days_since_last": "whole days from the last message to now",
      "last_from": "\"us\" or \"them\": who sent the last message (auto-replies and bounces included)"
    },
    "messages": "[{n, from, date, text}] oldest first; from = \"us\" | \"them\"; date = YYYY-MM-DD; text = the new text only (quoted replies, '>' lines, mail footers and anything after a line of only 2 or 3 dashes or a 'Sent from my iPhone/iPad/Samsung/Android' line removed), at most its first 150 words, shortened to the first 120 plus up to 3 later sentences (35 words at most) that carry an amount or a yes/no answer (fewer words when a long thread must be trimmed; email_state.py does this); add \"kind\": \"auto_reply\" | \"bounce\" when it applies. Long threads keep the first message, their first real reply and the last 4, with {\"n\": \"...\", \"omitted\": k} in place of the rest; the whole state stays under about 1,250 tokens."
  },
  "example_state": {
    "site": "example-garden-blog.com",
    "subject": "Guest post on example-garden-blog.com",
    "roles": "us = our outreach team buying a sponsored guest post; them = the website owner or editor",
    "counts": {
      "ours": 2,
      "theirs": 1,
      "auto_replies": 0,
      "bounces": 0,
      "days_since_last": 112,
      "last_from": "us"
    },
    "messages": [
      {
        "n": 1,
        "from": "us",
        "date": "2026-06-02",
        "text": "Hi, we would like to publish a sponsored guest post on your site for one of our clients. Do you accept guest posts, and what is your price for one article with one do-follow link?"
      },
      {
        "n": 2,
        "from": "them",
        "date": "2026-06-03",
        "text": "Hello, our price is 150 USD per post, do-follow and permanent. Payment in advance by PayPal."
      },
      {
        "n": 3,
        "from": "us",
        "date": "2026-06-04",
        "text": "Thanks, we will check with our client and get back to you."
      }
    ]
  },
  "questions": {
    "reply": {
      "type": "choice",
      "instructions": "Looking at the whole thread, did the website side reply to us? The facts in counts are computed from mail headers and are always right.",
      "criteria": {
        "no_reply": "we wrote one or more emails and nothing came back at all",
        "auto_reply": "the only answers are automatic: out of office, 'we received your message', ticket numbers, autoresponders",
        "bounce": "our email could not be delivered",
        "answered": "a real person wrote back at least once, whatever they said; a human answer sent through a helpdesk system counts"
      }
    },
    "outcome": {
      "type": "choice",
      "instructions": "What is the outcome of this guest-post negotiation as of the last message? Use counts.days_since_last and counts.last_from for the time-based options.",
      "criteria": {
        "published": "the article went live on their site with our client's link",
        "agreed_not_published": "price and terms were agreed, but nothing was published yet",
        "declined_by_them": "they said no and that ended it",
        "declined_by_us": "we EXPLICITLY ended it: said no, too expensive, wrong terms, no client order, chose another site (an unfulfilled 'we will get back to you' is ghosted_by_us, not declined_by_us)",
        "ghosted_by_them": "they answered at least once, then our last message asked them for something and they did not answer for more than 14 days",
        "ghosted_by_us": "they were waiting for us: they answered, asked something or quoted, our last message (if any) only said we would get back to them, and nothing came from us for more than 14 days",
        "still_open": "the conversation is not finished: the last message is at most 14 days old and a next step is expected",
        "no_response": "ADDED: we wrote one or more times and the site never replied; the thread is dead",
        "unclear": "you really cannot tell: missing emails, two different orders in one thread, contradictory messages"
      }
    },
    "negotiation": {
      "type": "choice",
      "instructions": "How did the price negotiation for one guest post go? Use no_price_talk ONLY when they never named any per-post price: a price in the subject line counts, and if WE asked them to lower, reduce or discount a price they named one even when the amount is not visible. When they named a price and we only said we would get back to them, use price_named_no_decision.",
      "criteria": {
        "no_price_talk": "they never named a price for one guest post (if they named ANY per-post price, do not use this)",
        "price_named_no_decision": "ADDED: they named a price and we neither accepted it nor sent a number back: we asked more questions, said we would get back to them, or went quiet",
        "accepted_first_price": "we took their first price as it was, no counter from us",
        "negotiated_success": "we countered and they came down to a number of THEIR own that is not exactly one we sent (they said 120, we said 80, they said 90 and we took 90)",
        "negotiated_fail": "we countered and it broke on price",
        "firm_price": "they named a price, said it is fixed or non-negotiable, and did not move",
        "they_accepted_ours": "they accepted EXACTLY a number we had sent (our first counter or a later one); if this and negotiated_success both seem to apply, choose this",
        "countered_no_decision": "they named a price, we sent a number back, and the thread ended without a decision either way"
      }
    },
    "fail_reason": {
      "type": "choice",
      "instructions": "If the post was not published, what is the main reason? not_applicable ONLY when outcome is published; none_yet ONLY when outcome is still_open or agreed_not_published; every other outcome needs a real reason. ghosted_by_us pairs with we_dropped unless a price, niche or terms problem is written in the thread.",
      "criteria": {
        "not_applicable": "the post was published; nothing failed",
        "none_yet": "ADDED: nothing has failed: the thread is still open, or the deal is agreed and publication is pending",
        "price_too_high": "their price stayed above what we pay; nothing else was wrong",
        "niche_rejected": "they refuse our client's niche AND name it: betting, casino, gambling, crypto, CBD, adult and similar; a general 'we do not do this kind of content' that names no niche is other",
        "no_dofollow": "they only offer nofollow or rel=sponsored links",
        "sponsored_tag_only": "every paid post carries a visible sponsored / in partnership with label and they will not remove it",
        "not_permanent": "the link stays only for a fixed time such as 6 months or 1 year",
        "off_script_terms": "a condition we cannot meet: link exchange, package only, minimum spend, subscription, they must write the article",
        "no_response": "they never replied or stopped replying",
        "wrong_contact": "we reached the wrong person or department, or the address bounced; nobody handled it",
        "we_dropped": "we stopped: no client order, budget moved, we did not follow up, we chose another site",
        "payment_problem": "they demanded prepayment we did not do, invoice trouble, PayPal or bank issue",
        "other": "anything else"
      }
    },
    "they_named_price": {
      "type": "noul",
      "instructions": "Did they name a price for one guest post on their site anywhere in the thread (any message, the subject line, an autoresponder with a rate card)? If WE asked them to lower, reduce or discount a price, they named one: answer true even when the amount itself is not visible."
    },
    "price_for_igaming": {
      "type": "choice",
      "instructions": "Did they name a separate price for betting, casino or other iGaming content?",
      "criteria": {
        "not_mentioned": "iGaming pricing never came up",
        "same_price": "they said such content costs the same as any other post",
        "different_price": "they named a different, usually higher, price for betting or casino content"
      }
    },
    "rounds": {
      "type": "score",
      "instructions": "Count the DISTINCT amounts WE proposed for one post, in any form (statement or question). Repeating an amount already sent counts once. A budget stated in our first email counts as a number. 0 = we never sent a number.",
      "criteria": [
        "0, we never sent a number",
        "1 number",
        "2 numbers",
        "3 or more numbers"
      ]
    },
    "dofollow": {
      "type": "choice",
      "instructions": "Do they give do-follow links? Count only what THEY stated; do not infer from our pitch or from them not objecting. If they never said it, unknown.",
      "criteria": {
        "yes": "they confirmed do-follow links",
        "no": "they only offer nofollow or rel=sponsored links",
        "unknown": "never said"
      }
    },
    "permanent": {
      "type": "choice",
      "instructions": "Does the post stay on the site for good? Count only what THEY stated; if they never said it, unknown.",
      "criteria": {
        "yes": "the post stays permanently",
        "no": "the post or link is removed after a fixed time",
        "unknown": "never said"
      }
    },
    "sponsored_tag_required": {
      "type": "choice",
      "instructions": "Must the post carry a visible sponsored, paid or partnership label? Count only what THEY stated; if they never said it, unknown.",
      "criteria": {
        "yes": "they require the label",
        "no": "they said no label is needed",
        "unknown": "never said"
      }
    },
    "prepayment_demanded": {
      "type": "choice",
      "instructions": "Do they require payment before publishing? Count only what THEY stated; if they never said it, unknown.",
      "criteria": {
        "yes": "payment must come first",
        "no": "payment after publishing is fine",
        "unknown": "never said"
      }
    },
    "article_by_them_only": {
      "type": "choice",
      "instructions": "Do they insist on writing the article themselves, rejecting our text? Count only what THEY stated; do not infer from a guest-post context or from word-count rules. If they never said it, unknown.",
      "criteria": {
        "yes": "only their own writing is accepted",
        "no": "our text is accepted",
        "unknown": "never said"
      }
    },
    "links_allowed": {
      "type": "choice",
      "instructions": "How many links do they allow in one post?",
      "criteria": {
        "not_said": "never mentioned",
        "one": "one link",
        "two": "two links",
        "three_or_more": "three or more links"
      }
    },
    "our_handling": {
      "type": "choice",
      "instructions": "How well did OUR side handle this thread? good requires every mistake question below to be false AND that the site was not left waiting for us. If outcome is ghosted_by_us the best possible answer is ok, and it is mistake when they had accepted our number, asked a concrete question we never answered, or told us we wrote to the wrong site. If any mistake is true, this must be ok or mistake.",
      "criteria": {
        "good": "we did what a careful human would do; nothing to improve",
        "ok": "we got there or left them waiting, but nothing damaging: slow, a bit pushy, a missed detail, an unfulfilled 'we will get back to you'",
        "mistake": "we did something wrong that changed the result or looked bad"
      }
    },
    "mistake_answered_twice": {
      "type": "noul",
      "instructions": "Did we send two replies to the same message of theirs, or repeat the same content back to back? A follow-up sent after days of silence is NOT a mistake."
    },
    "mistake_ignored_their_question": {
      "type": "noul",
      "instructions": "Did they ask a concrete question (niche, topic, budget, invoice details, anchor, target URL, which or how many sites) that we never answered? Chasers like 'any update?' or 'please let us know' do NOT count."
    },
    "mistake_wrong_price": {
      "type": "noul",
      "instructions": "Did we name a wrong number: above our budget, below our previous number, another site's price, or the wrong currency?"
    },
    "mistake_too_pushy": {
      "type": "noul",
      "instructions": "Were we too pushy: ultimatums, pressure, 'last chance' wording, arguing?"
    },
    "mistake_gave_up_too_early": {
      "type": "noul",
      "instructions": "Did we go silent or close while a deal was still possible? A reason to stop counts only when it is WRITTEN in the thread: 'we will get back to you' followed by silence is not a reason, it IS giving up. If outcome is ghosted_by_us, answer true unless the thread shows their last price above the last number WE stated, an explicit refusal of our client's niche, or a term we explicitly objected to."
    },
    "mistake_accepted_too_fast": {
      "type": "noul",
      "instructions": "Did we accept their first price although a counter was clearly reasonable (price well above the usual range, they invited negotiation, or a bad term was attached)? Accepting a normal price without countering is NOT a mistake."
    },
    "mistake_wrong_language": {
      "type": "noul",
      "instructions": "Were most of OUR messages in a language they did not use? A one-line payment or link confirmation in English does not count."
    },
    "mistake_revealed_client_early": {
      "type": "noul",
      "instructions": "Did we name the client or give the client's URL before the client had confirmed?"
    },
    "mistake_promised_payment": {
      "type": "noul",
      "instructions": "Did we say 'paid' or promise payment terms we do not have?"
    },
    "mistake_sent_wrong_details": {
      "type": "noul",
      "instructions": "Did we send wrong details: wrong company block, wrong article link, wrong anchor or target?"
    },
    "mistake_slow_to_answer": {
      "type": "noul",
      "instructions": "Were there days of delay on our side that cost the deal?"
    },
    "mistake_other": {
      "type": "noul",
      "instructions": "Did we make some other mistake not covered by the questions above?"
    }
  },
  "extra_questions": {
    "last_from": {
      "type": "choice",
      "instructions": "Who wrote the last message in the thread?",
      "criteria": {
        "us": null,
        "them": null
      }
    },
    "replies_bucket": {
      "type": "score",
      "instructions": "How many real messages did the site send?",
      "criteria": [
        "none",
        "one",
        "two or three",
        "four or more"
      ]
    },
    "thread_age": {
      "type": "choice",
      "instructions": "How long ago was the last message?",
      "criteria": {
        "under_2_weeks": null,
        "2_to_8_weeks": null,
        "over_8_weeks": null
      }
    },
    "payment_method": {
      "type": "choice",
      "instructions": "Which payment method did the site mention?",
      "criteria": {
        "none": "no payment method mentioned",
        "paypal": null,
        "bank_transfer": null,
        "card": null,
        "crypto": null,
        "wise": null,
        "other": null
      }
    },
    "invoice_mentioned": {
      "type": "noul",
      "instructions": "Was an invoice mentioned by either side?"
    },
    "deadline_mentioned": {
      "type": "noul",
      "instructions": "Was a turnaround time, publication date or deadline mentioned?"
    },
    "word_count_bucket": {
      "type": "choice",
      "instructions": "What minimum article length do they require?",
      "criteria": {
        "not_said": "no word count mentioned",
        "under_500": "fewer than 500 words",
        "500_to_999": "500 to 999 words",
        "1000_or_more": "1000 words or more"
      }
    },
    "niche_restrictions_mentioned": {
      "type": "noul",
      "instructions": "Did they mention topics they refuse or restrict?"
    },
    "tone_of_them": {
      "type": "choice",
      "instructions": "What is the tone of the site's messages?",
      "criteria": {
        "friendly": null,
        "neutral": null,
        "cold": null,
        "hostile": null
      }
    },
    "tone_of_us": {
      "type": "choice",
      "instructions": "What is the tone of our messages?",
      "criteria": {
        "friendly": null,
        "neutral": null,
        "pushy": null
      }
    },
    "they_asked_question_last": {
      "type": "noul",
      "instructions": "Does their last message contain a question we have not answered?"
    },
    "we_promised_to_return": {
      "type": "noul",
      "instructions": "Did we promise to come back to them later?"
    },
    "discount_offered": {
      "type": "noul",
      "instructions": "Did they offer a discount, lower price or bulk deal on their own?"
    },
    "package_offer": {
      "type": "noul",
      "instructions": "Did they propose a package, bundle or multi-post deal?"
    },
    "language_mismatch": {
      "type": "noul",
      "instructions": "Did we write in a language they did not use?"
    },
    "their_last_topic": {
      "type": "choice",
      "instructions": "What is the main topic of the site's last message?",
      "criteria": {
        "price": null,
        "terms": null,
        "article_requirements": null,
        "scheduling": null,
        "rejection": null,
        "question": null,
        "confirmation": null,
        "payment": null,
        "other": null
      }
    },
    "they_requested_something": {
      "type": "noul",
      "instructions": "Did they ask us to send or do something (article, anchor, payment proof, details)?"
    },
    "we_sent_article": {
      "type": "noul",
      "instructions": "Did we send or link the article text?"
    },
    "published_url_shared": {
      "type": "noul",
      "instructions": "Was a URL of the published post shared in the thread?"
    },
    "they_asked_payment_proof": {
      "type": "noul",
      "instructions": "Did they ask for proof of payment?"
    },
    "distinct_prices_bucket": {
      "type": "score",
      "instructions": "How many different per-post amounts did the site name?",
      "criteria": [
        "none",
        "one",
        "two",
        "three or more"
      ]
    },
    "price_band": {
      "type": "score",
      "instructions": "Roughly how much did they ask for one post (first price, any currency)?",
      "criteria": [
        "no price named",
        "under 50",
        "50 to 99",
        "100 to 199",
        "200 to 499",
        "500 or more"
      ]
    },
    "currency": {
      "type": "choice",
      "instructions": "In which currency did they quote their first price?",
      "criteria": {
        "none": "no price quoted",
        "EUR": null,
        "USD": null,
        "GBP": null,
        "other": null
      }
    },
    "price_came_down": {
      "type": "noul",
      "instructions": "Is the agreed price lower than their first quote?"
    },
    "they_lowered_price": {
      "type": "noul",
      "instructions": "Did they lower their own price at any point (their last price below their first)?"
    },
    "igaming_costs_more": {
      "type": "noul",
      "instructions": "Is their iGaming price higher than their normal price?"
    }
  },
  "extra_questions_only_when": {
    "tone_of_them": "only when counts.theirs > 0",
    "their_last_topic": "only when counts.theirs > 0",
    "word_count_bucket": "only when counts.theirs > 0",
    "price_band": "only when counts.theirs > 0",
    "currency": "only when counts.theirs > 0",
    "price_came_down": "only when they named a price and a final price was agreed",
    "they_lowered_price": "only when they named a price",
    "igaming_costs_more": "only when they named both a normal and an iGaming price"
  },
  "measured": {
    "what": "Agreement with the reference labels on 600 held-out threads the model never saw in training: their website (or, for free-mail contacts, their contact address) does not appear in the training data. Reference labels: Gemini 3.8 Flash as the teacher, corrected by code rules (facts from the mail headers, plus consistency rules that can override labels such as outcome, fail_reason and our_handling). An automated referee re-labelled 16 of the 26 questions on 80 audit threads and agreed on 95-98% of the answers on the 75 it scored; the labelling rules were tuned on these same threads, so this is not an independent check. Not yet human-verified.",
    "questions": {
      "agreement": 0.968,
      "most_common_answer": 0.818,
      "answers": 15585
    },
    "extra_questions": {
      "agreement": 0.954,
      "most_common_answer": 0.742,
      "answers": 13875
    },
    "weakest": {
      "questions": {
        "names": [
          "article_by_them_only",
          "our_handling",
          "negotiation",
          "fail_reason"
        ],
        "range": "87-91%"
      },
      "extra_questions": {
        "names": [
          "their_last_topic",
          "tone_of_them",
          "tone_of_us",
          "distinct_prices_bucket"
        ],
        "range": "80-87%"
      }
    },
    "per_question": {
      "reply": {
        "agreement": 0.998,
        "most_common_answer": 0.913,
        "answers": 600
      },
      "outcome": {
        "agreement": 0.952,
        "most_common_answer": 0.735,
        "answers": 600
      },
      "negotiation": {
        "agreement": 0.908,
        "most_common_answer": 0.447,
        "answers": 599
      },
      "fail_reason": {
        "agreement": 0.913,
        "most_common_answer": 0.66,
        "answers": 600
      },
      "they_named_price": {
        "agreement": 0.973,
        "most_common_answer": 0.665,
        "answers": 600
      },
      "price_for_igaming": {
        "agreement": 0.937,
        "most_common_answer": 0.668,
        "answers": 600
      },
      "rounds": {
        "agreement": 0.98,
        "most_common_answer": 0.82,
        "answers": 599
      },
      "dofollow": {
        "agreement": 0.967,
        "most_common_answer": 0.572,
        "answers": 600
      },
      "permanent": {
        "agreement": 0.97,
        "most_common_answer": 0.6,
        "answers": 600
      },
      "sponsored_tag_required": {
        "agreement": 0.983,
        "most_common_answer": 0.803,
        "answers": 600
      },
      "prepayment_demanded": {
        "agreement": 0.985,
        "most_common_answer": 0.895,
        "answers": 600
      },
      "article_by_them_only": {
        "agreement": 0.87,
        "most_common_answer": 0.63,
        "answers": 600
      },
      "links_allowed": {
        "agreement": 0.96,
        "most_common_answer": 0.663,
        "answers": 600
      },
      "our_handling": {
        "agreement": 0.878,
        "most_common_answer": 0.641,
        "answers": 599
      },
      "mistake_answered_twice": {
        "agreement": 0.992,
        "most_common_answer": 0.987,
        "answers": 599
      },
      "mistake_ignored_their_question": {
        "agreement": 0.988,
        "most_common_answer": 0.943,
        "answers": 599
      },
      "mistake_wrong_price": {
        "agreement": 0.997,
        "most_common_answer": 0.997,
        "answers": 599
      },
      "mistake_too_pushy": {
        "agreement": 1.0,
        "most_common_answer": 1.0,
        "answers": 599
      },
      "mistake_gave_up_too_early": {
        "agreement": 0.933,
        "most_common_answer": 0.651,
        "answers": 599
      },
      "mistake_accepted_too_fast": {
        "agreement": 1.0,
        "most_common_answer": 1.0,
        "answers": 599
      },
      "mistake_wrong_language": {
        "agreement": 0.995,
        "most_common_answer": 0.993,
        "answers": 599
      },
      "mistake_revealed_client_early": {
        "agreement": 1.0,
        "most_common_answer": 1.0,
        "answers": 599
      },
      "mistake_promised_payment": {
        "agreement": 1.0,
        "most_common_answer": 1.0,
        "answers": 599
      },
      "mistake_sent_wrong_details": {
        "agreement": 0.998,
        "most_common_answer": 0.998,
        "answers": 599
      },
      "mistake_slow_to_answer": {
        "agreement": 0.997,
        "most_common_answer": 0.997,
        "answers": 599
      },
      "mistake_other": {
        "agreement": 0.992,
        "most_common_answer": 0.99,
        "answers": 599
      },
      "last_from": {
        "agreement": 1.0,
        "most_common_answer": 0.672,
        "answers": 600
      },
      "replies_bucket": {
        "agreement": 1.0,
        "most_common_answer": 0.518,
        "answers": 600
      },
      "thread_age": {
        "agreement": 1.0,
        "most_common_answer": 0.995,
        "answers": 600
      },
      "payment_method": {
        "agreement": 0.992,
        "most_common_answer": 0.664,
        "answers": 378
      },
      "invoice_mentioned": {
        "agreement": 0.992,
        "most_common_answer": 0.91,
        "answers": 600
      },
      "deadline_mentioned": {
        "agreement": 0.977,
        "most_common_answer": 0.888,
        "answers": 600
      },
      "word_count_bucket": {
        "agreement": 0.991,
        "most_common_answer": 0.863,
        "answers": 548
      },
      "niche_restrictions_mentioned": {
        "agreement": 0.937,
        "most_common_answer": 0.66,
        "answers": 600
      },
      "tone_of_them": {
        "agreement": 0.832,
        "most_common_answer": 0.527,
        "answers": 548
      },
      "tone_of_us": {
        "agreement": 0.832,
        "most_common_answer": 0.587,
        "answers": 596
      },
      "they_asked_question_last": {
        "agreement": 0.985,
        "most_common_answer": 0.948,
        "answers": 600
      },
      "we_promised_to_return": {
        "agreement": 0.99,
        "most_common_answer": 0.633,
        "answers": 600
      },
      "discount_offered": {
        "agreement": 0.955,
        "most_common_answer": 0.852,
        "answers": 600
      },
      "package_offer": {
        "agreement": 0.933,
        "most_common_answer": 0.853,
        "answers": 600
      },
      "language_mismatch": {
        "agreement": 0.988,
        "most_common_answer": 0.988,
        "answers": 600
      },
      "their_last_topic": {
        "agreement": 0.804,
        "most_common_answer": 0.358,
        "answers": 547
      },
      "they_requested_something": {
        "agreement": 0.933,
        "most_common_answer": 0.827,
        "answers": 600
      },
      "we_sent_article": {
        "agreement": 0.998,
        "most_common_answer": 0.977,
        "answers": 599
      },
      "published_url_shared": {
        "agreement": 0.998,
        "most_common_answer": 0.968,
        "answers": 599
      },
      "they_asked_payment_proof": {
        "agreement": 0.997,
        "most_common_answer": 0.997,
        "answers": 600
      },
      "distinct_prices_bucket": {
        "agreement": 0.873,
        "most_common_answer": 0.36,
        "answers": 600
      },
      "price_band": {
        "agreement": 0.954,
        "most_common_answer": 0.328,
        "answers": 548
      },
      "currency": {
        "agreement": 0.971,
        "most_common_answer": 0.485,
        "answers": 548
      },
      "price_came_down": {
        "agreement": 0.961,
        "most_common_answer": 0.706,
        "answers": 51
      },
      "they_lowered_price": {
        "agreement": 0.957,
        "most_common_answer": 0.821,
        "answers": 375
      },
      "igaming_costs_more": {
        "agreement": 0.964,
        "most_common_answer": 0.826,
        "answers": 138
      }
    }
  }
}
