domain capa

domain-competitive-intel

Competitor entity classification, competitive-power scoring, and data-quality confidence for market research — industry-agnostic.

Competitor entity classification, competitive-power scoring, and data-quality confidence for market research — industry-agnostic.

Tierdomain
Roleunclassified (baselined)
Pathcrates/domain/competitive-intel
Edition2021
Targetsdomain_competitive_intel
Public items23 across 5 modules
Tests47

What it is for

# domain-competitive-intel

Competitor entity classification, competitive-power scoring, and data-quality confidence for market research — industry-agnostic.

Lifted from plumber's src/validation/mod.rs, which validated and classified competitor entities for a Phoenix-plumbing engagement. The logic itself never referenced plumbing, HVAC-vs-electrical categories aside — those are input strings, not baked-in assumptions — so it lands here unchanged in behavior, renamed only where a name presumed a verdict instead of describing what was actually computed. See CHANGELOG.md for the specific renames and why.

Core types

buckets a competitor by observable market-presence signals, with the supporting evidence kept alongside the verdict.

competitive-power scoring (reputation, SERP, content, technical, brand) collapsed to a severity tier plus a strengths/weaknesses rationale.

section's underlying data was actually observed vs. inferred vs. missing.

location-count estimation, flagging patterns outside the typical range as anomalies to check, not fraud to assert.

and frequency-anomaly flagging for keyword-density data.

Capabilities

CompetitorClass

Competitor entity classification.

Item
pub enum CompetitorClass
CompetitorClass :: fn as_str(& self) -> & 'static str
CompetitorClass :: fn is_comparable_to_local(& self) -> bool

EntityClassification

Competitor entity classification.

Item
pub struct EntityClassification

EntityClassifier

Competitor entity classification.

Item
pub struct EntityClassifier
EntityClassifier :: fn classify(review_count : Option <i32>, categories : & String, domain_age_days : Option <i32>, discovered_addresses : Option <i32>,) -> EntityClassification

KeywordValidator

Keyword frequency validation.

Item
pub struct KeywordValidator
KeywordValidator :: fn is_boilerplate(frequency : i32, page_count : i32, total_pages : i32) -> bool
KeywordValidator :: fn is_frequency_anomaly(frequency : i32, page_count : i32) -> bool

CompetitivePower

Multi-dimensional competitive-power scoring.

Item
pub struct CompetitivePower

CompetitiveSeverity

Multi-dimensional competitive-power scoring.

Item
pub enum CompetitiveSeverity
CompetitiveSeverity :: fn as_str(& self) -> & 'static str

EntityClassifier

Competitor entity classification.

Item
EntityClassifier :: fn calculate_power(review_count : Option <i32>, avg_rating : Option <f32>, mobile_score : Option <i32>, desktop_score : Option <i32>, total_pages : i32, domain_age_days : Option <i32>, keywords_ranked : i32, page_1_rankings : i32,) -> CompetitivePower

DataConfidence

Data-quality indicators for a competitor's report.

Item
pub enum DataConfidence
DataConfidence :: fn symbol(& self) -> & 'static str

DataQualitySummary

Data-quality indicators for a competitor's report.

Item
pub struct DataQualitySummary
DataQualitySummary :: fn overall_completeness(& self) -> f64

KeywordValidation

Data-quality indicators for a competitor's report.

Item
pub struct KeywordValidation

ReviewIntegrity

Data-quality indicators for a competitor's report.

Item
pub struct ReviewIntegrity

ReviewValidator

Review velocity and location-count estimation.

Item
pub struct ReviewValidator
ReviewValidator :: fn estimate_velocity(review_count : i32, domain_age_days : Option <i32>) -> f64
ReviewValidator :: fn is_velocity_anomaly(reviews_per_month : f64) -> bool
ReviewValidator :: fn estimate_locations(review_count : i32, _categories : & String, discovered_addresses : Option <i32>,) -> Option <i32>

How to use it

No examples/ target and no doctest in this crate's rustdoc. The tests listed under Verification are the closest executable usage.

Module structure

domain_competitive_intel

flowchart TD
  n_domain_competitive_intel["domain_competitive_intel"]
  n_domain_competitive_intel --> n_classification["classification"]
  n_domain_competitive_intel --> n_keyword_validator["keyword_validator"]
  n_domain_competitive_intel --> n_power["power"]
  n_domain_competitive_intel --> n_quality["quality"]
  n_domain_competitive_intel --> n_review_validator["review_validator"]

Public surface

`classification`

ItemWhat it is
pub enum CompetitorClassClassification of a competitor entity based on observable market-presence signals (review count, category tags, domain age, discovered locations).
CompetitorClass :: fn as_str(& self) -> & 'static str
CompetitorClass :: fn is_comparable_to_local(& self) -> boolReturns true if this class should be compared with local operators.
pub struct EntityClassificationEntity classification with supporting evidence.
pub struct EntityClassifierClassifies and scores competitor entities from observable signals.
EntityClassifier :: fn classify(review_count : Option <i32>, categories : & String, domain_age_days : Option <i32>, discovered_addresses : Option <i32>,) -> EntityClassificationClassify a competitor based on available data.

`keyword_validator`

ItemWhat it is
pub struct KeywordValidatorValidates keyword data for a competitor.
KeywordValidator :: fn is_boilerplate(frequency : i32, page_count : i32, total_pages : i32) -> boolCheck if a keyword is likely boilerplate based on its distribution.
KeywordValidator :: fn is_frequency_anomaly(frequency : i32, page_count : i32) -> boolCheck whether keyword frequency per page is an outlier relative to the typical range — a pattern to investigate, not an accusation.

`power`

ItemWhat it is
pub enum CompetitiveSeveritySeverity of the competitive pressure a scored entity's public signals indicate, derived from the average of its five power dimensions.
CompetitiveSeverity :: fn as_str(& self) -> & 'static str
pub struct CompetitivePowerMulti-dimensional competitive-power analysis.
EntityClassifier :: fn calculate_power(review_count : Option <i32>, avg_rating : Option <f32>, mobile_score : Option <i32>, desktop_score : Option <i32>, total_pages : i32, domain_age_days : Option <i32>, keywords_ranked : i32, page_1_rankings : i32,) -> CompetitivePowerCalculate multi-dimensional competitive power scores.

`quality`

ItemWhat it is
pub struct ReviewIntegrityReview data integrity validation results.
pub struct KeywordValidationKeyword frequency validation to detect boilerplate pollution.
pub enum DataConfidenceData quality indicators for report sections.
DataConfidence :: fn symbol(& self) -> & 'static str
pub struct DataQualitySummaryData quality summary for a competitor's report.
DataQualitySummary :: fn overall_completeness(& self) -> f64

`review_validator`

ItemWhat it is
pub struct ReviewValidatorReview integrity validator.
ReviewValidator :: fn estimate_velocity(review_count : i32, domain_age_days : Option <i32>) -> f64Estimate review velocity (reviews per month).
ReviewValidator :: fn is_velocity_anomaly(reviews_per_month : f64) -> boolCheck whether review velocity is outside the range typical for a single-location entity.
ReviewValidator :: fn estimate_locations(review_count : i32, _categories : & String, discovered_addresses : Option <i32>,) -> Option <i32>Estimate number of locations based on review count and other signals.

Re-exports. Exported here, defined elsewhere.

ExportDefined in
KeywordValidatorkeyword_validator::KeywordValidator
ReviewValidatorreview_validator::ReviewValidator
{CompetitivePower,CompetitiveSeverity}power::{CompetitivePower,CompetitiveSeverity}
{CompetitorClass,EntityClassification,EntityClassifier}classification::{CompetitorClass,EntityClassification,EntityClassifier}
{DataConfidence,DataQualitySummary,KeywordValidation,ReviewIntegrity}quality::{DataConfidence,DataQualitySummary,KeywordValidation,ReviewIntegrity}

Boundary

Depends on no other workspace tier.

Shares tier domain with 41 other crates: domain-agreements, domain-ai-report, domain-billing, domain-catalog, domain-classify, domain-comments, domain-contact, domain-conversation-engine, … (41 total).

_What this crate deliberately does NOT own is a judgment. No committed registry records one for it, so none is stated here._

Where it sits

Tier (ontology)domain
Architectural role (taxonomy)unclassified (baselined)
Locationcrates/domain/competitive-intel
Vocabulary in force (lexicon)current

Dependencies

Runtime, from outside the workspace.

CrateRequirementFeaturesOptionalOnly on
serde^1derivenoalways
serde_json^1noalways

Development. None.

Build. None.

Depended on by. 1 workspace crate.

Signal flow — what reaches this crate, and what it reaches.

flowchart LR
  n_application_party_discovery["application-party-discovery"] -->|uses| SELF
  SELF["domain-competitive-intel"]
  classDef self fill:#1f883d,stroke:#1f883d,color:#fff;
  class SELF self;

Feature flags

No Cargo features are defined: every capability is unconditional, so no consumer can receive a half-wired crate.

Targets

KindNameSource
libdomain_competitive_intel`src/lib.rs`

Error model

No public error type was detected: no public item declares a type named *Error, and no public signature returns one.

Operational characteristics

PropertyEvidence
async public surfacenone detected
async runtimenone detected
database accessnone detected
network I/Onone detected
unsafe codenone detected
environment variablesnone detected

No unsafe block, unsafe fn, unsafe impl or unsafe trait was found by the parser anywhere in this crate's source.

Configuration

No environment variable is read with a literal name anywhere in this crate. A variable whose key is computed at run time cannot be listed here, and is not claimed to be absent.

1 workspace crate depends on this one: application-party-discovery.

Verification

KindCount
Unit tests47
Integration tests0
Examples0
Doctests0

Evidence by module. How often each public module is named by something executable.

ModuleTestsExamplesConsumers
classification302
keyword_validator100
power200
quality400
review_validator100

What the tests establish, by name:

Documentation coverage

MeasureDocumentedTotal
Public items with rustdoc1923
Public modules with a //! block55
pie showData
    title Public items with rustdoc
    "Documented" : 19
    "No rustdoc detected" : 4

Metrics

MetricValue
Rust source files6
Source lines1065
Code lines794
Public API items23
Public modules5
Tests47
Examples0
Cargo features0
Direct runtime dependencies2
Workspace reverse dependencies1
pie showData
    title Public API by kind
    "enum" : 3
    "method" : 12
    "struct" : 8
pie showData
    title Rust source composition
    "Code" : 794
    "Blank or comment" : 271

Generation

Rendered by tools-corpus corpus readme from repository evidence alone, renderer schema 2, lexicon current. No model, network service or database was consulted. Regenerate with tools-corpus corpus readme --write; verify with --check.

Todas las domain · Manual