Tax question

The running jobjob_4Tx2 · delivered · workpapers-2026.txt · return.txt · $1,800.00 charged

A taxpayer's question, answered by AI in the job's thread with its sources. An answer that tells them what to do is advice the rules reserve, so a signer from the Pool adopts it as written, revises it, or refuses it, and it goes out in the signer's name.

tax's wordsreturn is a jobtaxpayer is a subjectreview is a taskpreparer is a member

Most questions are facts: when an estimate is due, what a form is for. Some are advice: whether to deduct the van. The AI answers every one in the job's thread and cites what it rests on. The rules table reserves advise to a signer, so an answer that tells the taxpayer what to do waits for one.

Run
cat services/question.ts
magic values: none
import { Service } from 'services.dev'
import { preparers } from '../pools/preparers.ts'
import rules from '../rules.ts'

// The AI answers a taxpayer's question in the job's thread, citing what it rests on. An answer that tells them what to do
// is advice the rules reserve: it waits until a signer from the Pool adopts it as written, revises it, or refuses it,
// and what the client reads goes out in the signer's name.
export default Service({
  name: 'Tax Question',
  description: 'A tax question, answered with its sources.',
  input: { owner: 'party: who asks', ein: 'text: such as 12-3456789', question: 'text: such as Can we deduct the van?' },
  output: { answer: 'text' },
  rules,
  subject: { kind: 'taxpayer', key: 'ein' },
  roles: { signer: { pool: preparers, pay: 25 } },
  talk: { with: 'owner', adopt: { by: 'signer', may: ['adopt', 'revise', 'refuse'], checklist: ['the authority cited says what the answer says', 'the facts it assumes are the facts in the thread'] } },
  deliver: { answer: { by: 'ai', cite: 'the code, its regulations and the agency guidance it rests on' } },
  price: 49,
})
Run
npx services.dev check
magic values: none
services/question.ts · 10 lines · $49 per job, within 48 hours, charged on delivery.
  bounds  reserved advise to ptin, and cpa or enrolled agent: an answer that is advice waits for a signer to adopt, revise or refuse it
  talk    the AI answers the client · advice (advise, rules 2026-10) held for the signer, who adopts, revises or refuses it on a 2-item checklist, included, up to 3 answers · contact relays through the thread

The held answer posts to the Pool as a review for a signer, $25 an act. The signer reads the question, the answer and its sources, and does one of three things on a two-item checklist: the authority says what the answer says, and the facts it assumes are the facts in the thread.

The signerThe taxpayer gets
adopts itthe AI's answer, in the signer's name
revises itthe signer's version, in their name, with what changed on the record
refuses itnothing from the AI; the signer writes the answer, or says why there isn't one

On the Tax Plan a question.asked event orders it inside the allowance, twelve a year. A bookkeeping agent asks the same way, and the answer waits for its signer:

Call
→ tools/call get_return {"id":"job_4Ta5","wait":50}
magic values: none
← job_4Ta5 · question · delivered · $0.00
  answer    held: it tells the business what to do, so it waited for a signer · adopted as written by mbr_8Ea1, Katherine Johnson, EA, in her own name
  next      list_return_messages {"id":"job_4Ta5"}

Talk covers talk.adopt, and the rules table the advise row.