From 9f93a9986c259a1b0e15dfb9acb75a8ee7272de6 Mon Sep 17 00:00:00 2001 From: Anthony Ettinger Date: Mon, 2 Nov 2026 21:57:36 +0000 Subject: [PATCH] w3bs ask: tax agent (tax-guy-agent), sources-only prompt with disclaimer Co-Authored-By: Claude Opus 5.5 --- docs/ask.md | 1 + fixtures/agents.json | 15 +++++++++++++++ package-manager/crates/w3bs-cli/src/ask.rs | 2 +- test/ask.test.mjs | 2 ++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/docs/ask.md b/docs/ask.md index 8dadb3b..779116a 100644 --- a/docs/ask.md +++ b/docs/ask.md @@ -57,6 +57,7 @@ business> /ask business "What do I do, I can't make money???? HELP!" | ---------- | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `business` | `saas`, `strategist` | Profullstack's [saas-business-strategist-agent](https://huggingface.co/profullstack/saas-business-strategist-agent): Qwen2.5-0.5B-Instruct with a LoRA trained on the c0mpute network ([GGUF](https://huggingface.co/profullstack/saas-business-strategist-agent-GGUF)) | | `legal` | `lawyer`, `law`, `not-a-lawyer` | Profullstack's [not-a-lawyer-agent](https://huggingface.co/profullstack/not-a-lawyer-agent): legal research, trained on the c0mpute network from rssamplifier law topics and pit.world ([GGUF](https://huggingface.co/profullstack/not-a-lawyer-agent-GGUF)). Not a lawyer, not legal advice | +| `tax` | `taxes`, `tax-guy`, `irs` | Profullstack's [tax-guy-agent](https://huggingface.co/profullstack/tax-guy-agent): tax research, trained on the c0mpute network from rssamplifier tax topics and pit.world ([GGUF](https://huggingface.co/profullstack/tax-guy-agent-GGUF)). Not a CPA, not tax advice | An agent with a `disclaimer` prints it under every answer and returns it in `--json`, the API and MCP results. diff --git a/fixtures/agents.json b/fixtures/agents.json index b831153..fa2adb8 100644 --- a/fixtures/agents.json +++ b/fixtures/agents.json @@ -30,6 +30,21 @@ "grounding": { "search": "pit.world", "query_suffix": "law", "results": 3 }, "max_tokens": 220, "temperature": 0.2 + }, + { + "name": "tax", + "aliases": ["taxes", "tax-guy", "irs"], + "title": "Tax research (not a CPA)", + "by": "Profullstack", + "model": "hf.co/profullstack/tax-guy-agent-GGUF:latest", + "base_model": "Qwen/Qwen2.5-0.5B-Instruct", + "huggingface": "https://huggingface.co/profullstack/tax-guy-agent", + "gguf": "https://huggingface.co/profullstack/tax-guy-agent-GGUF", + "system": "You are tax-guy-agent, a tax research assistant, not a CPA or tax attorney; this is not tax advice. Answer only from the numbered sources you are given and cite them like [1]. Never invent tax rates, dollar limits, deadlines, form numbers, rulings or code sections. If the sources do not answer the question, say so. Name the country, state and tax year a rule applies to. Keep it under 120 words and end by suggesting a CPA or enrolled agent for their situation.", + "disclaimer": "Not a CPA. Not tax advice. Tax research from public sources; rules change every year and vary by place, so check with a CPA or enrolled agent before filing.", + "grounding": { "search": "pit.world", "query_suffix": "tax", "results": 3 }, + "max_tokens": 220, + "temperature": 0.2 } ] } diff --git a/package-manager/crates/w3bs-cli/src/ask.rs b/package-manager/crates/w3bs-cli/src/ask.rs index e270374..448bf73 100644 --- a/package-manager/crates/w3bs-cli/src/ask.rs +++ b/package-manager/crates/w3bs-cli/src/ask.rs @@ -666,7 +666,7 @@ mod tests { #[test] fn builtin_registry_has_the_legal_agent_with_a_disclaimer() { let a = agents(); - for (alias, name, repo, note) in [("lawyer", "legal", "not-a-lawyer-agent", "Not a lawyer."), ("@Not-A-Lawyer", "legal", "not-a-lawyer-agent", "Not a lawyer.")] { + for (alias, name, repo, note) in [("lawyer", "legal", "not-a-lawyer-agent", "Not a lawyer."), ("@Not-A-Lawyer", "legal", "not-a-lawyer-agent", "Not a lawyer."), ("@IRS", "tax", "tax-guy-agent", "Not a CPA.")] { let ag = find(&a, alias).unwrap(); assert_eq!(ag.name, name); assert_eq!(ag.model, format!("hf.co/profullstack/{repo}-GGUF:latest")); diff --git a/test/ask.test.mjs b/test/ask.test.mjs index 7650869..a8cd592 100644 --- a/test/ask.test.mjs +++ b/test/ask.test.mjs @@ -17,6 +17,8 @@ test('the registry, aliases, query, sources, prompt and SSE framing', () => { assert.equal(b.disclaimer, ''); assert.equal(findAgent('lawyer', list).model, 'hf.co/profullstack/not-a-lawyer-agent-GGUF:latest'); assert.match(findAgent('legal', list).disclaimer, /^Not a lawyer\. Not legal advice\./); + assert.equal(findAgent('tax-guy', list).model, 'hf.co/profullstack/tax-guy-agent-GGUF:latest'); + assert.match(findAgent('@IRS', list).disclaimer, /^Not a CPA\. Not tax advice\./); assert.equal(searchQuery("I can't make money???? HELP!", 'startup revenue'), "I can't make money? HELP! startup revenue"); const s = pickSources( {