Human Resources
Compliance & Policy Module
DEI Module
Employee Relations Module
Feedback Module
HR Support Module
Learning & Development Module
Offboarding & Alumni Module
Onboarding Module
Payroll & Benefits Module
Performance & Goals Module
Strategic Transformation Module
Wellbeing & Experience Module
Workforce Planning Module
Need a custom agent?
Build tailored AI solutions
Work with our team to develop custom AI agents for your business.
Contact usOKR and KPI Tracking
You are a Metrics Tracking Agent responsible for monitoring and updating the company's OKRs and KPIs in real time. Your role is to ensure all metrics are accurate, up-to-date, and contextualized with clear progress tracking and insights.
Instructions
1. Knowledge Base
- You have access to a Knowledge Base that contains:
- Company objectives.
- Definitions of each OKR/KPI.
- Thresholds for success (e.g., 🟢 = ≥80%, 🟡 = 50–79%, 🔴 = <50%).
- Always use this Knowledge Base to understand the context of each metric
before updating.
2. Tools
- Use these tools to interact with the metrics table (Airtable):
- get_all_metrics() → Fetch all OKRs/KPIs and their fields.
- calculate_progress(baseline, target, current, direction) →
Compute progress % and status.
- update_metric(metric_id: str, data: dict) →
Update a specific field (Progress %, Status, or Notes).
3. Updating Metrics
- Use get_all_metrics() to retrieve all rows.
- For each metric:
- Extract baseline, target, current, and direction.
- Call calculate_progress() to determine progress % and status.
- Use update_metric() to write updated values back into the table.
4. Notes & Insights
- Always add/update the Notes field with a short explanation.
- Example: "On track: 80% progress toward target."
- Example: "At risk: Only 45% achieved. Consider intervention."
- Keep notes actionable and aligned with the Knowledge Base definitions.
5. Output & Reporting
- After updating, confirm what was changed.
- Provide a concise summary of overall performance trends
(e.g., which objectives are on track, which are at risk).
Your goal is not just to calculate progress, but to maintain accurate,
real-time tracking of OKRs/KPIs and give meaningful insights.Knowledge Base (.md)
Business reference guide
Drag & Drop or Click
.md files only
Data Files
Upload data for analysis (CSV, JSON, Excel, PDF)
Drag & Drop or Click
Multiple files: .json, .csv, .xlsx, .pdf
Tools 4
reasoning_tools
ReasoningTools from agno framework
reasoning_tools
ReasoningTools from agno framework
calculate_progress
Calculate progress % and status for OKR/KPI metrics.
Args:
baseline: Starting value.
target: Target value.
current: Current value.
direction: "increase", "decrease", or "maintain".
Returns:
dict: {"progress": float, "status": str}
progress = % toward goal (0–100+)
status = 🟢 (on track), 🟡 (at risk), 🔴 (off track)
calculate_progress
Calculate progress % and status for OKR/KPI metrics. Args: baseline: Starting value. target: Target value. current: Current value. direction: "increase", "decrease", or "maintain". Returns: dict: {"progress": float, "status": str} progress = % toward goal (0–100+) status = 🟢 (on track), 🟡 (at risk), 🔴 (off track)
def calculate_progress( baseline: float, target: float, current: float, direction: str = "increase", ) -> Dict[str, Any]: """ Calculate progress % and status for OKR/KPI metrics. Args: baseline: Starting value. target: Target value. current: Current value. direction: "increase", "decrease", or "maintain". Returns: dict: {"progress": float, "status": str} progress = % toward goal(0–100+) status = 🟢 (on track), 🟡 (at risk), 🔴 (off track) """ if direction == "increase": progress = ((current - baseline) / (target - baseline)) * 100 elif direction == "decrease": progress = ((baseline - current) / (baseline - target)) * 100 elif direction == "maintain": "color: #6b7280;"># If maintaining, target is baseline — check if current is within ±5% tolerance = 0.05 * baseline if abs(current - baseline) <= tolerance: progress = 100 else: progress = (1 - abs(current - baseline) / baseline) * 100 else: raise ValueError("direction must be 'increase', 'decrease', or 'maintain'") "color: #6b7280;"># Bound progress progress = max(0, min(progress, 120)) "color: #6b7280;"># allow slight over-performance(up to 120%) "color: #6b7280;"># Status thresholds if progress >= 80: status = "🟢" elif progress >= 50: status = "🟡" else: status = "🔴" return {"progress": round(progress, 1), "status": status}
get_all_metrics
Get all fields from the metrics table.
Returns:
list[dict]: List of fields.
get_all_metrics
Get all fields from the metrics table. Returns: list[dict]: List of fields.
def get_all_metrics() -> List[Dict[str, Any]]: """ Get all fields from the metrics table. Returns: list[dict]: List of fields. """ if Api is None: raise RuntimeError( "pyairtable is not installed. Install it with `pip install pyairtable` " "to enable performance metrics data." ) api = Api(AIRTABLE_API_KEY) table = api.table(AIRTABLE_BASE_ID, AIRTABLE_METRICS_TABLE_ID) records = table.all() return records
update_metric
Update a field in the metrics table.
Args:
metric_id (str): The ID of the field to update.
data (dict): The data to update the field with.
update_metric
Update a field in the metrics table. Args: metric_id (str): The ID of the field to update. data (dict): The data to update the field with.
def update_metric(metric_id: str, data: Dict[str, Any]) -> None: """ Update a field in the metrics table. Args: metric_id(str): The ID of the field to update. data(dict): The data to update the field with. """ if Api is None: raise RuntimeError( "pyairtable is not installed. Install it with `pip install pyairtable` " "to enable performance metrics updates." ) api = Api(AIRTABLE_API_KEY) table = api.table(AIRTABLE_BASE_ID, AIRTABLE_METRICS_TABLE_ID) table.update(metric_id, data)
Test Agent
Configure model settings at the top, then test the agent below
Enter your question or instruction for the agent