Method

Keyword taxonomy with QA gates

The output: one reportable intent per keyword, parallel facets and a review queue, with publication of the full corpus held until the leakage and name gates are at zero.

Updated
·

Inputs

  • A keyword corpus from a research tool's export for one market, here the Finnish housing market.

  • A versioned rule set: term lists for the intents and the facets, and a written priority order.

  • Public reference data: place names from the national survey's data, and first names and surnames from the population register's public name lists.

  • A sample schedule for the gates: controlled samples of growing size before the full corpus.

Procedure

  1. Model as a hybrid, not a tree

    Every keyword gets one primary intent for reporting and facets alongside: brand, location, property type, content need and market role. Classification status and the review queue are fields of their own.

  2. Extract signals before intent

    A signal is an observation of what was found in the keyword; an intent is a conclusion about what it means. The split makes an error locatable: a missing signal, a signal too broad, a wrong interpretation, a wrong priority or a wrong status.

  3. Apply the rules in a written order

    Brands first as facets, then the strong functional intents, price before property type, broker, guides, and location and property type as facets. What remains gets a status: ambiguous, brand only or no match.

  4. Enrich location as a facet only

    A location match never promotes a row or changes intent, action bucket or confidence until the guards are accepted. A location alone does not make a keyword an opportunity.

  5. Audit person names as diagnosis only

    A person-name-shaped keyword that the location matcher accepted is flagged as a risk and sent to manual review. The name reference is never used to identify a person, to profile, to score, to remove automatically or to contact anyone.

  6. Gate the corpus with growing samples

    Every sample runs under the same constraints, and the single-row and batch classifiers must agree. Acceptance requires zero core leakage, zero person-name risk in the core, zero location-only core rows and an explainable review queue.

  7. Hold the conclusions until the gates pass

    No opportunity list is published before a full-corpus dry run passes the same gates. A decision is recorded at every gate.

Outputs and how to read them

  • One row per keyword: intent and confidence, all matched intents, facets, status, flags, rule version and a readable note.

  • A QA bundle: distributions, leakage counts and the name-risk rows in the review queue.

  • A decision record for every gate and for the hold that remains.

Failure modes

  • One rigid tree that multi-intent keywords do not fit.

  • Enrichment starts to score, and a location match promotes rows into the core.

  • A Finnish surname is read as a town, because many names are both.

  • The rules are tuned on the QA sample, and the sample stops measuring.

  • The batch classifier and the single-row classifier drift apart unnoticed.

Where it is used

In a taxonomy engine for Finnish housing-market keywords with a Rust location matcher and a batch classifier: the gates hold publication of conclusions until the full-corpus dry run passes them.