diff --git a/mcp-server/console.html b/mcp-server/console.html
new file mode 100644
index 0000000..884afe9
--- /dev/null
+++ b/mcp-server/console.html
@@ -0,0 +1,380 @@
+
+
+
+Staffing Intelligence Console
+
+
+
Staffing Intelligence Console
+
Analyzing 500,000 profiles...
+
+
+
Scanning your entire workforce...
+
+
+
Powered by Lakehouse — Hybrid SQL + Vector Search across 500,000 embedded worker profiles
+
+
diff --git a/mcp-server/index.ts b/mcp-server/index.ts
index ccbe799..d5a3e61 100644
--- a/mcp-server/index.ts
+++ b/mcp-server/index.ts
@@ -1029,8 +1029,139 @@ tr:hover{background:#111827}
return ok(await runWeekSimulation());
}
+ // ─── Staffing Intelligence Console ───
+ if (url.pathname === "/console") {
+ return new Response(Bun.file(import.meta.dir + "/console.html"));
+ }
+
+ // Intelligence Brief — parallel analytics across 500K profiles
+ if (url.pathname === "/intelligence/brief" && req.method === "POST") {
+ const start = Date.now();
+ const [poolR, benchR, supplyR, gemsR, risksR, untappedR, archetypeR] = await Promise.all([
+ api("POST", "/query/sql", { sql: `SELECT COUNT(*) total, ROUND(AVG(CAST(reliability AS DOUBLE)),3) avg_rel, SUM(CASE WHEN CAST(reliability AS DOUBLE)>0.9 THEN 1 ELSE 0 END) elite, SUM(CASE WHEN CAST(reliability AS DOUBLE)>0.8 THEN 1 ELSE 0 END) reliable, SUM(CASE WHEN archetype='erratic' THEN 1 ELSE 0 END) erratic, SUM(CASE WHEN archetype='silent' THEN 1 ELSE 0 END) silent_cnt, SUM(CASE WHEN archetype='improving' THEN 1 ELSE 0 END) improving FROM workers_500k` }),
+ api("POST", "/query/sql", { sql: `SELECT state, COUNT(*) total, ROUND(AVG(CAST(reliability AS DOUBLE)),3) avg_rel, SUM(CASE WHEN CAST(reliability AS DOUBLE)>0.8 THEN 1 ELSE 0 END) reliable, SUM(CASE WHEN CAST(availability AS DOUBLE)>0.5 THEN 1 ELSE 0 END) available FROM workers_500k GROUP BY state ORDER BY total DESC` }),
+ api("POST", "/query/sql", { sql: `SELECT role, COUNT(*) supply, SUM(CASE WHEN CAST(availability AS DOUBLE)>0.5 THEN 1 ELSE 0 END) available, ROUND(AVG(CAST(reliability AS DOUBLE)),3) avg_rel FROM workers_500k GROUP BY role ORDER BY supply DESC` }),
+ api("POST", "/query/sql", { sql: `SELECT name, role, city, state, ROUND(CAST(reliability AS DOUBLE),2) rel, ROUND(CAST(availability AS DOUBLE),2) avail, archetype, skills FROM workers_500k WHERE archetype='improving' AND CAST(reliability AS DOUBLE)>0.8 ORDER BY CAST(reliability AS DOUBLE) DESC LIMIT 5` }),
+ api("POST", "/query/sql", { sql: `SELECT name, role, city, state, ROUND(CAST(reliability AS DOUBLE),2) rel, ROUND(CAST(responsiveness AS DOUBLE),2) resp, ROUND(CAST(compliance AS DOUBLE),2) compl, archetype FROM workers_500k WHERE archetype IN ('erratic','silent') AND CAST(reliability AS DOUBLE)<0.5 ORDER BY CAST(reliability AS DOUBLE) ASC LIMIT 5` }),
+ api("POST", "/query/sql", { sql: `SELECT name, role, city, state, ROUND(CAST(availability AS DOUBLE),2) avail, ROUND(CAST(reliability AS DOUBLE),2) rel, skills, archetype FROM workers_500k WHERE CAST(availability AS DOUBLE)>0.8 AND CAST(reliability AS DOUBLE)>0.85 ORDER BY CAST(availability AS DOUBLE) DESC LIMIT 5` }),
+ api("POST", "/query/sql", { sql: `SELECT archetype, COUNT(*) cnt, ROUND(AVG(CAST(reliability AS DOUBLE)),3) avg_rel FROM workers_500k GROUP BY archetype ORDER BY cnt DESC` }),
+ ]);
+ return ok({
+ pool: poolR.rows?.[0] || {},
+ bench: benchR.rows || [],
+ supply: supplyR.rows || [],
+ gems: gemsR.rows || [],
+ risks: risksR.rows || [],
+ untapped: untappedR.rows || [],
+ archetypes: archetypeR.rows || [],
+ duration_ms: Date.now() - start,
+ });
+ }
+
+ // Intelligence Chat — natural language → routed queries → structured results
+ if (url.pathname === "/intelligence/chat" && req.method === "POST") {
+ const b = await json();
+ const q = (b.message || "").trim();
+ const lower = q.toLowerCase();
+ const start = Date.now();
+ const queries: string[] = [];
+
+ // Route 1: "Find someone like [Name]"
+ const likeMatch = q.match(/(?:like|similar to)\s+([A-Z][a-z]+(?:\s+[A-Z]\.?\s*)?(?:[A-Z][a-z]+)?)/i);
+ if (likeMatch) {
+ const name = likeMatch[1].trim();
+ queries.push(`SQL: Looking up ${name}'s profile`);
+ const profileR = await api("POST", "/query/sql", { sql: `SELECT * FROM workers_500k WHERE name LIKE '%${name.replace(/'/g,"''")}%' LIMIT 1` });
+ if (profileR.rows?.length) {
+ const worker = profileR.rows[0];
+ const stateMatch = lower.match(/\b(?:in|from)\s+([A-Z]{2})\b/i) || lower.match(/\b(IL|IN|OH|MO|TN|KY|WI|MI|IA|MN)\b/i);
+ const stateFilter = stateMatch ? `state = '${stateMatch[1].toUpperCase()}'` : `state != '${worker.state}'`;
+ queries.push(`Vector: Semantic similarity on ${worker.name}'s full profile → ${stateFilter}`);
+ const searchR = await api("POST", "/vectors/hybrid", {
+ question: worker.resume_text || `${worker.role} in ${worker.city} with skills ${worker.skills}`,
+ index_name: "workers_500k_v1",
+ sql_filter: stateFilter + ` AND CAST(reliability AS DOUBLE) >= 0.7`,
+ filter_dataset: "ethereal_workers", id_column: "worker_id", top_k: 5, generate: false,
+ });
+ return ok({ type: "similar", summary: `Found ${(searchR.sources||[]).length} workers similar to ${worker.name}${stateMatch ? ' in '+stateMatch[1].toUpperCase() : ' (other states)'}`,
+ source: { name: worker.name, role: worker.role, city: worker.city, state: worker.state, rel: worker.reliability, skills: worker.skills, archetype: worker.archetype },
+ results: (searchR.sources||[]).map((s:any) => ({ doc_id: s.doc_id, score: s.score, text: s.chunk_text })),
+ sql_matches: searchR.sql_matches, queries_run: queries, duration_ms: Date.now() - start });
+ }
+ return ok({ type: "error", summary: `Couldn't find "${name}" in the database. Try a full name.`, queries_run: queries, duration_ms: Date.now() - start });
+ }
+
+ // Route 2: "What if we lose"
+ if (/what if|lose|happens if/i.test(lower)) {
+ const roleMatch = lower.match(/(?:lose|lost?)\s+(?:our\s+)?(?:top\s+)?(\d+)?\s*(.+?)(?:\?|$)/i);
+ if (roleMatch) {
+ const count = parseInt(roleMatch[1]) || 5;
+ const subject = roleMatch[2].trim().replace(/\s*workers?\s*$/,'').replace(/s$/,'');
+ queries.push(`SQL: Top ${count} ${subject}s by reliability`);
+ const topR = await api("POST", "/query/sql", { sql: `SELECT name, role, city, state, ROUND(CAST(reliability AS DOUBLE),2) rel, skills FROM workers_500k WHERE LOWER(role) LIKE '%${subject.replace(/'/g,"''")}%' ORDER BY CAST(reliability AS DOUBLE) DESC LIMIT ${count}` });
+ if (topR.rows?.length) {
+ const states = [...new Set(topR.rows.map((r:any) => r.state))];
+ queries.push(`SQL: Bench depth for ${subject}s in ${states.join(', ')}`);
+ const benchR = await api("POST", "/query/sql", { sql: `SELECT state, COUNT(*) total, SUM(CASE WHEN CAST(reliability AS DOUBLE)>0.8 THEN 1 ELSE 0 END) reliable FROM workers_500k WHERE LOWER(role) LIKE '%${subject.replace(/'/g,"''")}%' AND state IN (${states.map((s:string)=>`'${s}'`).join(',')}) GROUP BY state` });
+ const totalInRole = (benchR.rows||[]).reduce((s:number,r:any) => s + r.total, 0);
+ const reliableRemaining = (benchR.rows||[]).reduce((s:number,r:any) => s + r.reliable, 0) - topR.rows.length;
+ return ok({ type: "whatif", summary: `Impact: losing top ${topR.rows.length} ${subject} workers`,
+ lost: topR.rows, bench: benchR.rows||[], total_in_role: totalInRole, reliable_remaining: Math.max(0, reliableRemaining),
+ risk_level: reliableRemaining < count * 2 ? "HIGH" : reliableRemaining < count * 5 ? "MEDIUM" : "LOW",
+ queries_run: queries, duration_ms: Date.now() - start });
+ }
+ return ok({ type: "error", summary: `Couldn't find workers in the "${subject}" role. Try: welder, forklift operator, assembler, etc.`, queries_run: queries, duration_ms: Date.now() - start });
+ }
+ }
+
+ // Route 3: "Who could handle" — semantic role discovery
+ if (/could handle|capable of|suitable for|qualified for|try.*for|can do/i.test(lower)) {
+ const roleDesc = q.replace(/^.*?(?:handle|capable of|suitable for|qualified for|try\s+\w+\s+for|can do)\s*/i,'').replace(/\?$/,'').trim();
+ queries.push(`Vector: Semantic search for "${roleDesc}" — no exact role match needed`);
+ const searchR = await api("POST", "/vectors/hybrid", {
+ question: `Worker experienced in ${roleDesc}, relevant skills and certifications`,
+ index_name: "workers_500k_v1", sql_filter: "CAST(reliability AS DOUBLE) >= 0.75",
+ filter_dataset: "ethereal_workers", id_column: "worker_id", top_k: 8, generate: false,
+ });
+ return ok({ type: "discovery", summary: `${(searchR.sources||[]).length} workers found through semantic skill matching for: "${roleDesc}"`,
+ role_searched: roleDesc, results: (searchR.sources||[]).map((s:any) => ({ doc_id: s.doc_id, score: s.score, text: s.chunk_text })),
+ sql_matches: searchR.sql_matches,
+ note: "None of these workers have this exact role title. They were found because their skills, certifications, and experience are semantically similar. This is talent discovery — finding people for roles that don't exist in your database yet.",
+ queries_run: queries, duration_ms: Date.now() - start });
+ }
+
+ // Route 4: "Stop placing" / risk workers
+ if (/stop placing|worst|problem|flag|risk|underperform|fire|let go/i.test(lower)) {
+ queries.push("SQL: erratic/silent workers with reliability < 50%");
+ const riskR = await api("POST", "/query/sql", { sql: `SELECT name, role, city, state, ROUND(CAST(reliability AS DOUBLE),2) rel, ROUND(CAST(responsiveness AS DOUBLE),2) resp, ROUND(CAST(compliance AS DOUBLE),2) compl, archetype FROM workers_500k WHERE archetype IN ('erratic','silent') AND CAST(reliability AS DOUBLE)<0.5 ORDER BY CAST(reliability AS DOUBLE) ASC LIMIT 10` });
+ const countR = await api("POST", "/query/sql", { sql: `SELECT COUNT(*) cnt FROM workers_500k WHERE archetype IN ('erratic','silent') AND CAST(reliability AS DOUBLE)<0.5` });
+ return ok({ type: "risk", summary: `${countR.rows?.[0]?.cnt || 0} workers flagged — showing the 10 lowest performers`,
+ results: riskR.rows||[], total_flagged: countR.rows?.[0]?.cnt || 0,
+ queries_run: queries, duration_ms: Date.now() - start });
+ }
+
+ // Route 5: Analytics / counts
+ if (/how many|count|total|percentage|average|breakdown/i.test(lower)) {
+ queries.push("RAG: analytical question → vector retrieval + LLM reasoning");
+ const ragR = await api("POST", "/vectors/rag", { index_name: "workers_500k_v1", question: q, top_k: 3 });
+ return ok({ type: "answer", summary: ragR.answer || "Couldn't determine the answer from the data",
+ sources: (ragR.sources||[]).map((s:any) => ({ doc_id: s.doc_id, text: s.chunk_text, score: s.score })),
+ queries_run: queries, duration_ms: Date.now() - start });
+ }
+
+ // Default: hybrid search with generation
+ queries.push("Hybrid: SQL filter + vector semantic search + LLM summary");
+ const searchR = await api("POST", "/vectors/hybrid", {
+ question: q, index_name: "workers_500k_v1", sql_filter: "CAST(reliability AS DOUBLE) >= 0.5",
+ filter_dataset: "ethereal_workers", id_column: "worker_id", top_k: 5, generate: true,
+ });
+ return ok({ type: "search", summary: searchR.answer || `Found ${(searchR.sources||[]).length} matching workers`,
+ results: (searchR.sources||[]).map((s:any) => ({ doc_id: s.doc_id, score: s.score, text: s.chunk_text })),
+ sql_matches: searchR.sql_matches, queries_run: queries, duration_ms: Date.now() - start });
+ }
+
activeTrace = null;
- return err("Unknown path. Available: / /health /search /sql /match /worker/:id /ask /log /playbooks /profile/:id /vram /context /verify /simulation/run", 404);
+ return err("Unknown path. Available: / /health /search /sql /match /worker/:id /ask /log /playbooks /profile/:id /vram /context /verify /simulation/run /console /intelligence/brief /intelligence/chat", 404);
} catch (e: any) {
if (activeTrace) { scoreTrace(activeTrace, "error", 0, e.message); }
activeTrace = null;