Featuresmith is an open-source Python library for dataset profiling, rule-based validation, and intelligent feature analysis. Built for engineers who believe data quality is a first-class concern.
Features
From raw files to validated feature sets, Featuresmith gives you the primitives to build reliable data pipelines.
Unified interface for loading tabular data from CSV, Parquet, Excel, pandas, and Polars DataFrames into a normalized contract.
Deterministic computation of 23 numeric metrics, categorical frequency, text profiles, datetime ranges, and Pearson correlations.
8 built-in deterministic validation and leakage rules covering duplicate rows, missingness ratios, empty columns, and target leakage.
Thin Typer command-line client enabling styled Rich tables, JSON export, and exit-code gating (0 = clean, 1 = findings) for CI pipelines.
Core structure prepared for pluggable AI Providers (Ollama, OpenAI, Anthropic) to narrate results, rank recommendations, and run interactive Q&A.
Built-in extension points for registering custom connectors, rules, exporters, and AI providers using standard setuptools entry points.
Architecture
Featuresmith is designed as a layered pipeline. Each stage builds on the last, giving you clear extension points as your needs grow.
Raw Data Source
CSV · Excel · Parquet · DataFrame
Dataset
fs.load() normalized schema and connectors
ProfileResult
fs.profile() deterministic statistical profiling
RuleResult
fs.analyze() running 8 deterministic rules
CLI & SDK interfaces
Zero business logic thin clients calling public SDK APIs
Recommendation Engine (Phase 2+)
Grounded feature engineering rankings and rationales
AI Layer & Chat (Phase 2+)
Narrative summaries & interactive context-grounded Q&A
Code Examples
Featuresmith's API is designed to feel natural whether you're scripting from the terminal or integrating into a Python codebase.
import featuresmith as fs# ── Load ───────────────────────────────────────────────────# Load dataset from CSV, Excel, Parquet, or in-memory DataFramedataset = fs.load("customers.csv")print(dataset.row_count) # 50000print(dataset.schema.names) # ['id', 'age', 'churn', ...]# ── Profile ────────────────────────────────────────────────# Run deterministic profiling engineprofile = fs.profile("customers.csv")for name, col in profile.column_profiles.items(): print(f"{name}: {col.missing_count} missing values")# ── Analyze ────────────────────────────────────────────────# Run rule engine: loader → profiler → rules evaluationresult = fs.analyze("customers.csv", target_column="churn")for finding in result.findings: print(f"[{finding.severity.upper()}] {finding.title}") print(f" Column : {finding.column_name}") print(f" Rule : {finding.rule_id}") print(f" Detail : {finding.description}")print(f"Executed: {len(result.executed_rules)} rules in {result.execution_time_ms:.1f}ms")pip install featuresmith-corelatest: 0.1.0Philosophy
Data quality decisions should be explicit, not implicit. Featuresmith never silently coerces values or swallows errors. Every operation returns a result you can inspect, log, and act on.
Sensible defaults get you to insights in seconds. But every default is overridable. Validators, loaders, reporters, and thresholds are all configurable — nothing is locked behind an abstraction you can't reach.
All business logic resides in Featuresmith Core. The Python SDK, CLI, Dashboard, and any future extensions are thin wrappers over this unified engine. Zero duplicated logic, identical findings across every surface.
Roadmap
Featuresmith is actively developed. The roadmap is public and contributions are welcome at every phase.
Open Source
Featuresmith is Apache 2.0-licensed and developed entirely in public. Every design decision, API change, and roadmap item is visible on GitHub. We believe the best tools are built with the community, not for it.