How I turn a messy proposal and estimate dump into a clean open-proposals tracker
A Drive folder of half-named PDFs, three Slack threads titled "sent the quote," a Notion page you stopped updating in March, and a sticky that says "follow up with Dana" are not a pipeline. They are how you forget who still owes a yes, who ghosted, and which number you actually quoted.
Here is the workflow I use when someone dumps messy proposals, estimates, and quote threads on me and wants one sheet that shows what is open, what stage each deal is in, and what to chase next.
What "good enough" looks like
- Every live proposal has one row (not three copies of the same PDF)
- Status is plain English: draft / sent / negotiating / won / lost / expired — not vibes
- Amount, currency, and validity date are explicit
- Who owns the next step (you or them) is named
- Last touch and next touch dates are filled so nothing ages in silence
- You can sort by "needs chase this week" without opening five apps
Intake checklist
- The dump (PDFs, Docs, email/Slack quote threads, CRM exports, screenshots)
- Any existing pipeline or "deals" sheet (so I do not invent a second system)
- How they define stages (sent vs negotiating vs verbal yes)
- Hard rules (quote expiry, tax/VAT notes, who can discount)
- What "done" means for them (one tracker sheet, chase list for this week, archive of closed quotes)
The pass order that saves time
- Inventory — list every proposal/estimate/quote artifact and the client or lead it belongs to.
- Dedupe — keep the latest version; mark superseded files so you do not chase an old number.
- Normalize stages — map their slang ("circling," "hot," "maybe") onto a short status set.
- Pull money and dates — quoted amount, currency, sent date, valid-until, last client reply.
- Name the next step — one owner + one action (send revised PDF, wait on budget, book call).
- Build the tracker — one row per open deal; closed won/lost in a separate section or filter.
- Hand back — the sheet + a short "chase this week" list; no full CRM rebuild unless they asked separately.
Tracker columns that work
| Column | What goes here |
|---|---|
| Client / lead | Working name + contact if known |
| Proposal title | What you quoted (scope one-liner) |
| Amount | Quoted total + currency |
| Status | draft / sent / negotiating / won / lost / expired |
| Sent date | When the current version left your inbox |
| Valid until | Expiry if the quote has one |
| Last touch | Last meaningful reply (yours or theirs) |
| Next touch | When you should nudge or close the loop |
| Next owner | You / them / mutual — who moves it |
| Next action | One concrete step, not "follow up somehow" |
| Link | Current PDF/Doc (source of truth) |
| Notes | Blockers, discount asks, competitors mentioned |
Common traps
- Tracking every brainstorm PDF as an "open deal" so the sheet becomes noise
- Leaving amount blank because "it depends" — then you cannot prioritize chase time
- Updating Slack but never the tracker, so the sheet lies within a week
- Counting verbal yes as won without a signed SOW / PO (if that is their real close rule)
- Mixing inbound RFPs with outbound cold outreach without a source column
- Pasting full contract terms into the notes cell instead of linking the file
Soft handoff
When the sheet is done, send:
- The open-proposals tracker
- A short "chase this week" list (3–7 rows that need a human nudge)
- One suggested next step (archive expired quotes, or pick one deal to revise today)
That is the whole job. No Salesforce rebuild required for a proposal hygiene pass. I am a freelancer admin / spreadsheet person, not a salesperson or CPA — this is pipeline hygiene, not sales coaching or tax advice.
I do this as a 24-hour DFY service for freelancers and small businesses ($12 for messy proposal/estimate dump → clean open-proposals tracker). Shop: https://brittanybonds.gumroad.com/l/proposaltrack — code ADMIN12 for $2 off. Full catalog: https://brittanybonds.gumroad.com/ and https://brittany-bonds.github.io/
Top comments (0)