Workforce Astra
Snowflake CoCo CLI Hackathon Customer 360 / Employee 360 Track

One workforce.
One governed answer.

HR, Finance, and Engineering ask "how many employees do we have?" and get three different numbers — from the exact same underlying data. Workforce Astra encodes each definition once, as governed Snowflake Semantic Views across five domains, so every team gets the identical, SQL-transparent answer.

Try the live conflict below View source
Headcount Flight risk Org health Pay equity Employee voice Band health Governance
Honest status, 26-Sep-2026: the Snowflake side of this project is live and verified — five Semantic Views (Employee 360, Org Health, Pay Equity, Employee Voice, Band Health), a Snowpark Python procedure scoring interview transcripts with Cortex, the Cortex Search service active over 127 review notes, a 25-test regression suite passing, three scheduled governance tasks, and the Streamlit portal running inside Snowflake. This page is a static file, in two parts: the first three sections compute their numbers in your browser from the 150-employee synthetic dataset committed to the repo; the later sections show a dated snapshot exported from those Snowflake views (scripts/export_site_snapshot.py), because a static page can't query Snowflake live. All data is synthetic. The MCP action tools are mocked with dry_run=true — no Slack or Workday message is ever sent.

The cold open: same question, two answers

Ask "how many employees do we have?" two ways. Same 150-row dataset, same moment in time — the numbers genuinely disagree, because one query is governed and one isn't.

Finance asks (ungoverned)
—
"How many people work here, including contractors?"
VS
HRBP asks (governed)
—
"How many active employees do we have?"

Ask the governed Semantic View

Six illustrative queries, written the way the Semantic View answers them. Click one — the answer and its SQL are computed in your browser from the same 150 rows Snowflake holds. Inside Snowflake these same questions resolve through employee_360 with the SQL visible.

Pick a question above

Flight-risk evidence & the drafted action

Comp-ratio below 0.85 and a rating of 4 or above — underpaid high performers, the real retention risk. Click a name for the cited review evidence, then preview the payload the mock MCP server in this repo would draft. Nothing is sent.

Org health & manager spans

Finance and HR count "management overhead" differently. org_health_360 fixes the definitions of span of control and overspan once, from the reporting lines already in the data.

Widest spans of control

Reorgs are previewed through a guarded simulate_reorg procedure that rejects self-moves, circular reporting lines and overspan breaches. It never changes the org.

Pay equity: two honest numbers

The board and legal ask different questions about the same pay data. pay_equity_360 answers both, with each definition fixed once.

Unadjusted gap (women vs men)
—
What the board sees: every employee, band mix included.
VS
Adjusted gap
—
What legal needs: the gap once band mix is held constant.

Cohorts, with privacy suppression

Employee voice: the unstructured layer

Stay and exit interview transcripts are scored inside Snowflake by a Snowpark Python procedure (SCORE_VOICE_TRANSCRIPTS) using Cortex sentiment and multi-label reason classification against a fixed taxonomy — not keyword matching.

Reasons given — primary label per interview

Where voice and metrics agree

Negative interviews from people the structured metric already flags as flight risks (underpaid, rated 4+). Expand for the transcript and the review behind it.

Disclosure: 5 of the 18 synthetic interviews were deliberately placed on employees who already meet the flight-risk rule, so the cross-signal is demonstrable. The sentiment scores and reason labels are Cortex's own output.

Comp band architecture

Bands get set once and drift. band_health_360 audits whether people are actually paid inside their own published ranges — and whether the ranges separate the levels at all.

By band

Range overlap between adjacent bands

0% means the ranges are disjoint; 100% means identical. At 71%, pay alone can't tell an M1 manager from an IC5.

Guardrail: the auditor and its audit_comp_bands MCP tool report findings only. There is no proposed-pay column and no way to ask for one — a human sets the band.

Governance that can't quietly drift

Every governed metric has an owner, a certified definition and a golden-value test. The suite runs on a schedule, so a changed definition — or a changed Cortex model — fails loudly instead of silently moving a number in a board pack.

Scheduled tasks

Latest governance alerts

The suite passes with HIGH alerts open: those aren't test failures, they're the schedulers correctly escalating a real pay-equity breach and people paid below their band minimum.

What's actually running underneath

Five governed Semantic Views

employee_360, org_health_360, pay_equity_360, employee_voice_360, band_health_360. Every governed question resolves through a view, never a raw table, and each answers in Cortex Analyst.

Snowpark Python + Cortex AI

SCORE_VOICE_TRANSCRIPTS runs inside Snowflake, calling Cortex sentiment and AI_CLASSIFY on 18 transcripts and writing governed results.

Two reusable CoCo CLI skills

$workforce-astra-data-gen generates, verifies and loads the data; $workforce-astra-governance-check runs the regression suite and reports tasks and alerts.

Mock MCP action server

Six tools — manager alert, comp-adjustment draft, promotion nomination, requisition, guarded reorg simulator, and a report-only band auditor. dry_run defaults to true; nothing is sent.

Cortex Search

Live service, indexing and serving both active over 127 review notes (arctic-embed-m-v1.5), returning the cited review text behind a flight-risk call.

Scheduled governance

Three Snowflake Tasks: a daily 25-test regression run, a weekly pay-equity drift check, and a quarterly band review. Streamlit-in-Snowflake portal on top.

Semantic Views Cortex Analyst Cortex Search Cortex AI SQL Snowpark Python Streamlit in Snowflake Tasks CoCo CLI MCP