Part 2 of 7 · Tax doc collector series ~4 min read

How a client file gets set up

The collector only chases what’s in the checklist. So the first job is making sure each client file actually lists the right documents for that client. There are three ways a file gets started: somebody types a row in the Drive sheet, somebody taps “copy last year’s file,” or a new client fills in a short intake form. The first one is obvious. The other two exist because in real life nobody wants to retype last year’s checklist, and a brand-new client doesn’t know which documents they owe.

Key takeaways

  • Three setup lanes feed one checklist sheet: the Drive sheet, a copy-from-last-year lane, and an intake form.
  • The copy lane clones last season’s row and resets every item to waiting in one tap.
  • The intake form picks the right checklist for the client type, then the preparer approves it before it lands.
  • Every new file goes through the preparer’s one-tap approval before the first request goes out.
  • The Drive sheet stays the canonical store. The other lanes are conveniences that write into it.

Three lanes into one checklist

Three setup lanes funnel into one checklist sheet A diagram with three vertical lane columns at the top and a single unified row at the bottom. Lane one, Drive sheet: somebody types a client row directly into the Google Sheet that holds the checklists; the drive-sync Lambda mirrors the sheet to S3 every 15 minutes, and the collector reads from there. Lane two, Copy last year: the preparer taps a button that clones last season's row for a returning client and resets every checklist item to waiting; the proposed file is shown for one-tap approval before it lands. Lane three, Intake form: a new client fills in a short form (client type and a few questions); a Function URL Lambda picks the right checklist for that client type from the rules doc and proposes the file; the same approval flow runs before it lands. All three lanes converge on the same Drive sheet, which the drive-sync Lambda keeps mirrored to S3 for the collector to read. A note at the bottom: the Drive sheet stays the source of truth — the other lanes are conveniences that propose files for it. Lane 1 · manual Drive sheet • Somebody types a client row • drive-sync mirrors to S3 every 15 min • Collector reads from S3 • Source of truth stays in Drive Lane 2 · one tap Copy last year • Tap copy on a returning client • Clones the row, resets to waiting • Preparer reviews the proposed file • One-tap approve → sheet Lane 3 · new client Intake form • Client fills a short form on a Function URL • Picks checklist for that client type • Same approval flow to preparer as Lane 2 • On approve → added to sheet Drive checklist sheet (source of truth) name · client type · email · checklist · due date · status per item drive-sync mirrors it to S3 every 15 min — collector reads from S3 to tracker, daily tick The Drive sheet stays the source of truth — the other lanes are conveniences that propose files for it.
Fig 2. Three lanes converge on one Drive sheet. The sheet is the source of truth; the copy lane and the intake form are conveniences that propose files for the preparer’s approval. The drive-sync Lambda mirrors the sheet to S3 so the collector can read it without hitting Drive on every tick.

Lane 1: the Drive sheet itself

The simplest lane. Open the checklist sheet in Drive, add a row, save. The columns are short: name, client type, contact email, the checklist of documents owed, a due date, and a status per item. A small Lambda — drive-sync — runs every fifteen minutes, exports the sheet as plain CSV via the Drive API, and writes it to s3://td-clients-source/clients.csv if the sheet has changed since the last sync. The collector reads from S3, not Drive directly. That keeps Drive API calls predictable and gives you S3 versioning for free, so a bad bulk-edit can be rolled back in one click.

This lane covers the cases where you already know the client and their checklist and you can spend thirty seconds typing it in. It’s also how you hand-tune any file the other two lanes propose — the sheet is always editable by hand.

Lane 2: copy last year (the lane most practices use)

Most clients in February are returning clients. Last year you collected a W-2, a mortgage statement, and a childcare receipt; this year you’ll need the same kinds of document, just the new versions. So the most-used lane is a one-tap copy. In the per-client status board, each returning client has a Start this year’s file button. Tapping it calls a Function URL Lambda that clones last season’s row: it keeps the name, client type, email, and the checklist, but resets every item’s status to waiting and clears last year’s uploaded files (they stay archived for reference). It sets a fresh due date from the rules doc.

The cloned file is shown to the preparer for a quick look before anything goes out — a small approval card with the proposed checklist and three buttons: start, edit, cancel. On start, the row is written to the Drive sheet via the Sheets API and the file enters the chase cadence (Part 4). On edit, the preparer gets a fillable view to add or drop an item — useful for the client who sold a rental this year and now owes a closing statement they didn’t owe last year. On cancel, nothing is written.

The reason every cloned file goes to a human first is simple: the wrong checklist is worse than no checklist. A file that asks a client for a document they don’t have wastes their time and yours; a file that forgets to ask for one means a scramble in April. A ten-second preparer glance catches both.

Lane 3: the intake form for new clients

A brand-new client has no last-year file to copy, and they don’t know which documents they owe. Lane 3 is a short intake form, served from a Function URL, that you link from your website or a welcome email. The client answers a few plain questions — are you filing as an individual, a sole trader, a rental owner, a small company; do you have children; do you own your home — and submits.

A Function URL Lambda reads the answers and builds the right checklist from the rules doc: the rules doc has one checklist template per client type, plus a few conditional items (“if they own a home, add the mortgage interest statement”). The proposed file goes into the same preparer approval card as Lane 2 — one tap to start, with an edit option. Once approved, the new row lands in the Drive sheet and the first request goes out.

The intake form is the most opt-in of the three lanes. A practice that doesn’t use it loses nothing; a practice that does saves the back-and-forth of figuring out what a new client needs to send.

Why the sheet stays the source of truth

Three lanes in, but only one place where the collector actually looks. That’s a deliberate constraint. If two lanes both wrote directly to the collector’s state, every “why did this client get chased?” question would mean checking three places. Funneling everything through the Drive sheet means there is exactly one row per client, and any preparer can read or edit any of it without learning a new tool. The convenience lanes are first-class for starting files, but they always pass through the sheet on the way.

Next post: how a document actually arrives, how it’s stored privately, and how the collector reads it just enough to check off the right checklist item.

All posts