Plugins¶
honestroles supports a stable plugin system for custom filtering, labeling, and rating logic without modifying core package code.
For the complete plugin contract and author workflow:
reference/plugins/api_contract.mdreference/plugins/author_guide.mdreference/plugins/compatibility.md
Filter Plugins¶
- Register a filter plugin.
- Apply by name through
filter_jobs(..., plugin_filters=[...]).
import pandas as pd
from honestroles.filter import filter_jobs
from honestroles.plugins import register_filter_plugin
def only_backend(df: pd.DataFrame) -> pd.Series:
return df["title"].fillna("").str.contains("Backend", case=False)
register_filter_plugin("only_backend", only_backend)
df = filter_jobs(df, plugin_filters=["only_backend"])
Label Plugins¶
- Register a label transform plugin.
- Apply by name through
label_jobs(..., plugin_labelers=[...]).
import pandas as pd
from honestroles.label import label_jobs
from honestroles.plugins import register_label_plugin
def add_region_group(df: pd.DataFrame) -> pd.DataFrame:
result = df.copy()
result["region_group"] = result["country"].fillna("UNK")
return result
register_label_plugin("region_group", add_region_group)
df = label_jobs(df, use_llm=False, plugin_labelers=["region_group"])
Rate Plugins¶
Register a post-rating transform plugin and apply it through rate_jobs(..., plugin_raters=[...]).
import pandas as pd
from honestroles.rate import rate_jobs
from honestroles.plugins import register_rate_plugin
def mark_top_tier(df: pd.DataFrame, threshold: float = 0.8) -> pd.DataFrame:
result = df.copy()
result["is_top_tier"] = result["rating"].fillna(0).ge(threshold)
return result
register_rate_plugin("mark_top_tier", mark_top_tier)
df = rate_jobs(df, use_llm=False, plugin_raters=["mark_top_tier"])
API¶
register_filter_pluginunregister_filter_pluginlist_filter_pluginsapply_filter_pluginsregister_label_pluginunregister_label_pluginlist_label_pluginsapply_label_pluginsregister_rate_pluginunregister_rate_pluginlist_rate_pluginsapply_rate_pluginsload_plugins_from_entrypointsload_plugins_from_module