package ai import "testing" // TestOpportunityQuestionsRouteToTheMarketCorpus proves a plainly market shaped question is recognized, so // it retrieves from the federal opportunity catalog rather than the bench. func TestOpportunityQuestionsRouteToTheMarketCorpus(t *testing.T) { market := []string{ "what cybersecurity opportunities are coming from the Air Force", "show me recent solicitations in NAICS 541512", "which recompetes are coming up for bid next quarter", "any 8(a) set aside work at the VA", "who is buying data engineering support", "list sources sought notices for cloud migration", } for _, q := range market { if !isOpportunityQuestion(q) { t.Errorf("expected a market question to reach the opportunity corpus: %q", q) } } } // TestBenchQuestionsNeverLoseTheirCandidateCorpus is the no regression contract. Every question that // answered from candidates before must still answer from candidates, including one that names BOTH planes: // the market branch must yield rather than silently change the corpus underneath a working question. func TestBenchQuestionsNeverLoseTheirCandidateCorpus(t *testing.T) { bench := []string{ "who holds an active TS SCI clearance", "find me a cleared systems engineer in Huntsville", "which candidates fit this solicitation", "show me the slate for the VA opportunity", "top data scientists on our bench", "which candidate has the most customer experience", } for _, q := range bench { if isOpportunityQuestion(q) { t.Errorf("BENCH REGRESSION: %q was diverted to the market corpus but asks about people", q) } } } // TestNeutralQuestionsAreUnchanged proves the detector does not claim a question that names neither plane, // so the default routing is byte for byte what it was. func TestNeutralQuestionsAreUnchanged(t *testing.T) { for _, q := range []string{"how does the match score work", "what is clearance intelligence", "hello"} { if isOpportunityQuestion(q) { t.Errorf("a neutral question must keep its existing route: %q", q) } } }