Collects review feedback from Airtable and Google Forms scoped to each manager's direct reports, writes per-employee summaries to Notion, and DMs the manager a Slack digest.
This repo scopes one review cycle to a single MANAGER_EMAIL with per-connector *_USER identities from .env. In production, pass each manager's real ID as the identifier on every Scalekit call, and send them an authorization link whenever their connector status is not ACTIVE.
logger.info("Step 0: Checking connector auth")
for connector_name, identifier in cfg.get_connector_users().items():
conn = Connector(actions, connector_name, identifier)
conn.check_auth()
# connectors.py -- check_auth()
resp = self.actions.get_or_create_connected_account(
connection_name=self.connector_name,
identifier=self.identifier,
)
if resp.connected_account.status != "ACTIVE":
link = self.actions.get_authorization_link(
connection_name=self.connector_name,
identifier=self.identifier,
).link
logger.warning(f"Authorize here: {link}")Three things you'd otherwise build: OAuth, token storage, refresh. Handled.
Clone github.com/scalekit-developers/workflow-agents-demos/tree/main/performance-review-collector-agent and adapt it for my review cycle.
I am building for: my People Ops team (or: an HR product) ← edit this line
Connectors my users need: Airtable, Google Forms, Notion MCP, Slack ← edit this line
Trigger: weekly cron or POLLING_MODE=true. Deliver: per-employee Notion summaries + a Slack DM digest to each manager.
Steps:
1. Create Scalekit AgentKit connections for airtable, googleforms, notionmcp, slackmcp -- copy the exact (auto-suffixed) connection names from the dashboard into .env.
2. Map identifier to each manager's real user ID (not a shared HR bot). Per-connector *_USER overrides exist if identities differ per service.
3. If I swap a connector, mirror an existing class in connectors.py: execute_tool(tool_name, identifier, tool_input) → read result.data (MCP envelopes unwrap automatically).
4. Keep Step 0.5 provisioning: ensure_airtable_table auto-creates the review table; the Google Form's questions stay manual (the GOOGLEFORMS connector has no add-question tool).
5. Resolve direct reports from the Airtable Manager Email column, with DIRECT_REPORTS as fallback.
6. Run python run_flow.py for one manager, then describe how to deploy for many.
Each one runs on delegated identity, scoped per user.