Cut Web Agency Proposals and Discovery Sheets in Half With Claude Code
For web agency directors: cut proposal and discovery-sheet time with Claude Code, with copy-paste prompts, checklists, and a check script.
It is Friday evening. There is a pitch on Monday. The requirements live as scattered fragments in Slack. The notes my salesperson took during the discovery call are in three separate Google Docs, and one of them trails off mid-bullet.
This is where I used to start, alone, stitching a proposal together. Cover page, problem summary, draft sitemap, schedule, the assumptions behind the estimate. At 2 a.m. I finally finished, looked it over, and realized that “hiring is the top priority this quarter” — a line the client said out loud during discovery — appeared nowhere in the document. We heard it. We just failed to carry it through.
If you direct projects at a web agency, you know that “we heard it but dropped it” feeling. Proposals and discovery sheets are documents you produce constantly, yet most of us rewrite them from scratch every single time. Hand this part to an AI and you free up hours to spend on the thing that actually wins work: the substance of the proposal. Today I will walk through exactly how I do it, with prompts you can paste in and a check script you can run.
Key takeaways
- Proposals and discovery sheets are “documents with a fixed shape,” which makes them a great fit for a generative AI like Claude Code. You can hand off about 70% of the first draft.
- What you delegate is “tidying up scattered information” and “pouring that into a template.” Strategy and the final estimate number stay with a human. Blur that line and you will get burned.
- Feeding the discovery notes in and drafting a proposal skeleton took me from roughly 90 minutes per project down to about 40.
- You need to be careful about settings that keep client company names and personal data out of training, and about how you hand data over. I made that a checklist near the end.
- I have included a copy-paste prompt template, a Markdown discovery-sheet template, and a check script that mechanically catches gaps in your proposal.
Who this helps: which web agency directors
The person I have in mind looks like this. You work at a 5-to-30-person agency where the director also handles sales. You send 2 to 5 proposals a month, and a lot of them are competitive pitches or three-way quotes. There are designers and engineers, but discovery and proposal writing land on one director.
The pain is fairly universal in this role. You want to compete on the substance of the proposal, but document formatting eats your time. The discovery call went great, but the notes are fragmentary and impossible to reconstruct later. You have templates, but every project is slightly different, so you end up editing by hand anyway.
The place AI helps is exactly this “tidying up” work. You are not outsourcing the idea of the proposal itself to the AI.
The web agency workflow, and where time leaks out
Lay out the flow up to a proposal and the leaks become visible.
- Receive the inquiry and send a first reply
- Run the discovery call (in person or online) and take notes
- Organize the notes and pull the requirements together
- Decide the direction of the sitemap and wireframes
- Build the schedule and a rough estimate
- Pour it into the proposal (slides or a document)
- Review internally and submit
Steps 3 and 6 are the biggest bottlenecks. Raw discovery notes are unusable as-is, so organizing them takes time. The proposal has nearly the same structure every time, yet you pour project-specific information in by hand, which creates a lot of rework.
In my experience, proposal writing alone runs 90 to 120 minutes per project. At three projects a month, that was 5 to 6 hours a month disappearing into “document formatting.”
Common rework and headaches
Let me list the ones I have actually messed up, honestly.
- Missing a discovery question. I forgot to ask about budget and the desired launch date, submitted the proposal, then heard “that is over budget” and had to redo it.
- Misreading the notes. “We want it to work on mobile” stayed ambiguous — responsive site or a dedicated app? — and I proposed on the wrong assumption, so the estimate was off by 2x.
- Template reuse mistakes. The previous project’s company name was still on the cover page when I nearly hit submit. That one genuinely makes you break into a cold sweat.
- Gaps in the proposal. I forgot to note the maintenance fee, and after winning the work it turned into a dispute: “nobody told me about a monthly charge.”
Most of these are prevented simply by “filling in the same fixed items, completely, every time.” Humans doing it by hand will drop things. So you let a machine enforce it.
What changed, before and after
Here is the before-and-after as a table.
| Item | Before | After |
|---|---|---|
| Organizing discovery notes | 30 min by hand to clean up | AI structures it in 5 min, human checks |
| Drafting the proposal skeleton | 60 min from a blank page | 20 min pouring into a template |
| Checking for missed questions | Relying on memory | Automatic, via the check script |
| Wrong company name on cover | Happened occasionally | Near zero, with templated variables |
| Total per project | 90-120 min | 40-60 min |
The time I spend on strategy did not drop. What dropped was the “formatting and checking” time. That was exactly the part I wanted to automate, so for me this hit the target.
Use case 1: Turn discovery notes into a proposal skeleton
This is the one with the biggest payoff. You hand over the raw notes right after a discovery call and have the AI draft a skeleton that follows your proposal’s section structure.
With Claude Code you can drop the discovery-note text file into the project and let it read the file directly. Pasting works too, but reading the file directly cuts down on transcription errors.
Use the prompt below as a template.
You are an assistant to a web agency director.
Read the attached discovery notes and draft a proposal skeleton with the sections below.
# Sections
1. The client's current problems (only what the notes support; mark any inference as "inference")
2. The goal of this project
3. A draft sitemap (key pages only)
4. The approach and a rough schedule
5. Assumptions for the estimate (no figures; just bullet the assumptions needed to quote)
# Rules
- Do not invent anything not in the notes. Collect gaps at the end as "needs confirmation"
- Reword jargon plainly, assuming the client will read it
- Do not over-assert; write it as a starting draft for discussion
The key is to constrain it with “do not invent anything not in the notes.” AI loves to fill in blanks, so left alone it will fabricate requirements that do not exist. Forcing it to push gaps into “needs confirmation” makes your missed questions visible on the spot.
Use case 2: Tailor the discovery sheet itself per project
People tend to reuse a fixed question sheet, but what you need to ask changes with the industry and the project size. A recruiting site and an e-commerce site differ in both the order and the content of the questions.
So you hand over a project summary and have the AI rebuild the question sheet.
Build a list of questions for the first discovery call, tailored to the project below.
# Project summary
- Industry: dental clinic
- Goal: increase new-patient bookings
- Scope: roughly 10-page corporate site plus a booking path
# Output format
- Split into "must-ask questions" and "ask if possible"
- Add a one-line note to each question on why you ask it (where it feeds the proposal or estimate)
- Always include budget, desired launch date, whether a current site exists, and photo assets
Having it add “why you ask it” also deepens the director’s own understanding on the day of the call. I have used it to train new directors too.
Use case 3: Merge multiple notes and check proposal hygiene
When information is scattered across sales, the director, and emails from the client, you have the AI merge it onto one page. Use the checklist below for your final proposal review.
- Is the company name and project name on the cover the current one?
- Is the budget range, or the estimate’s assumptions, written down?
- Is there no contradiction between the desired launch date and the schedule?
- Is the handling of maintenance and operations fees stated explicitly?
- Does the sitemap match the page count in the estimate?
- Is the top-priority request from discovery reflected?
- Are any “needs confirmation” items still unresolved at submission?
You can run this check with human eyes, but I will show a mechanical way later. Eyeballing always misses something.
What to delegate to AI versus decide yourself
Leave this fuzzy and you will have an accident. Here is the line, as a table.
| Task | Delegate to AI | Human decides |
|---|---|---|
| Organizing and structuring notes | Yes | Final check |
| Drafting along the section structure | Yes | Context correction |
| Rebuilding the question sheet | Yes | Probing on the day |
| Proposal strategy and differentiation | Draft only | Final decision |
| Locking in the estimate figure | No | Yes |
| Whether to send to the client | No | Yes |
The final calls on money and on sending are always made by a human. Handing the AI’s rough number straight to the client is the same as dumping the estimate on a new hire and letting them submit it without a word. Decide that your scope ends at the starting draft, and you can use this with peace of mind.
A check script that automatically catches gaps in proposals
A visual check leaks when you are tired. So here is a small script that reads your proposal Markdown and mechanically confirms “are the required items present.” It runs with Node.js.
This assumes you write proposals in Markdown. Slides work too, as long as you run a text export through it.
import { readFile } from "node:fs/promises";
// Items the proposal must contain, and keywords that signal them
const checks = [
{ label: "Problem summary", keywords: ["problem", "current state", "challenge"] },
{ label: "Goal", keywords: ["goal", "objective", "KGI", "KPI"] },
{ label: "Sitemap", keywords: ["sitemap", "page structure"] },
{ label: "Schedule", keywords: ["schedule", "timeline", "launch"] },
{ label: "Estimate assumptions", keywords: ["assumption", "rough estimate", "scope"] },
{ label: "Maintenance & ops", keywords: ["maintenance", "operations", "monthly"] },
];
const file = process.argv[2] || "proposal.md";
const text = (await readFile(file, "utf8")).toLowerCase();
let missing = 0;
for (const c of checks) {
const hit = c.keywords.some((k) => text.includes(k.toLowerCase()));
if (hit) {
console.log(`OK ${c.label}`);
} else {
console.log(`NG ${c.label} <- this item is missing`);
missing++;
}
}
// Quick check for a previous project's company name left behind
const ghost = ["acme inc", "sample co", "placeholder client"];
for (const g of ghost) {
if (text.includes(g)) {
console.log(`NG placeholder "${g}" is still present`);
missing++;
}
}
if (missing === 0) {
console.log("\nAll items clear. On to the final visual pass before submitting.");
} else {
console.log(`\n${missing} gap(s) found. Fix them before submitting.`);
process.exitCode = 1;
}
Using it is this simple.
node check-proposal.mjs proposal.md
It is only a few dozen lines, but it stops the two mistakes I always make: forgetting the maintenance fee and leaving a stale company name on the cover. Add keywords to match your own proposal’s wording. It is not a perfect judge; the right way to use it is as the “last gatekeeper” you place in front of human eyes.
You can also have Claude Code run this script, read the output, and fix the proposal for you. The basics of how to set that up are in the Claude Code getting started guide. If you write a reusable project instructions file, the AI keeps your house style every time — see CLAUDE.md best practices.
Security and personal-data cautions
You are handling client information, so you cannot be sloppy here. At a minimum, follow these.
- Turn off training use. If you use this for work, choose a plan and setting where your input is not used for training. Confirm how data is handled in Anthropic’s privacy policy.
- Hand over the minimum. Drafting a proposal skeleton does not require the client contact’s personal cell number or your internal cost basis. Hand over only what is needed.
- Anonymize before sending. Replace company and personal names with “Company A” and “Contact X” before processing, then have a human restore the real names at the end. That alone reduces the damage if something leaks.
- A human always reviews the output. Do not put AI-written text in front of a client as-is. Errors and overstated phrasing creep in.
If your contract with the client restricts subcontracting or external-tool use, always confirm before running anything through a generative AI. Skip that and you turn an efficiency win into a trust problem.
A simple ROI estimate
Rough math. Say a proposal goes from 90 minutes to 50: a 40-minute saving. At three a month, that is two hours. Put the director’s hourly rate at, say, $40, and you free up about $80 of time a month.
Bigger than the dollars is being able to put those two hours into “sharpening the proposal” and “researching competitors.” You redirect time you spent formatting documents into work that moves your win rate. That beats the number.
Tighten your prompts and you save more. For tips on how to write them, advanced prompt engineering and productivity tips are good references.
FAQ
Q. Can I send an AI-written proposal straight to the client? Do not. It is a starting draft. The soundness of the strategy, the money, and the phrasing all have to be fixed by a human. You send it only once a person has checked it and can stand behind it.
Q. My discovery notes are handwritten and messy — can I use them? Yes, if you turn the photo into text first. But misreads creep in, so have a human re-check proper nouns and numbers (budget, dates).
Q. Can it match our template? It can. Paste your own section structure into the prompt and it writes in that shape. Once you have built a good prompt, share it across the team and reuse it.
Q. Is it useful to ask it about design? It makes a fine starting draft for direction, but leave the final design call to a designer. AI is good at “organizing things in words”; the final judgment on whether a visual is good is a human’s domain.
Q. Can someone without technical knowledge run this? Yes. If all you do is paste a prompt and check the result, no code is required. For how to roll it out to a team, see Claude Code for non-engineers.
What happened when I actually tried it
I ran this flow on five of my own past discovery notes. I was checking three things.
First, time. Skeleton drafting dropped from an average of 60 minutes to around 20. Even total time to completion landed at 40-50 minutes on many of them, down from 90. It felt less like “dramatically faster” and more like “the formatting bump I always stall on disappeared.”
Second, missed questions. Constraining it with “do not invent anything not in the notes” paid off: past projects where budget or launch date had been missing duly lined up under “needs confirmation.” It catches more reliably than relying on memory.
Third, the check script. I ran a proposal where I deliberately deleted the maintenance fee, and another that still carried the previous project’s company name — both stopped with NG. As a last line of defense right before submitting, it is more than good enough.
The conclusion: the idea of the proposal still comes from a human, as before. But the step before that — tidying up scattered information, pouring it into a template, confirming nothing is missing — you no longer have to do by hand. Redirect the freed-up time into the substance of the proposal. For a web agency director, that is the use that pays off most.
If you want to run this as a system across the team, or bring it in as training, reach out through the training and consulting page.
Free PDF: Claude Code Cheatsheet
Enter your email and download the one-page Claude Code cheatsheet for commands, review habits, and safe workflows.
We handle your data with care and never send spam.
Level up your Claude Code workflow
Start with the free PDF, use Gumroad guides when you need repeatable workflows, and book consultation when rollout or revenue paths need human judgment.
About the Author
Masa
Engineer focused on practical Claude Code workflows. Runs claudecode-lab.com, a 10-language technical media site.
Related Posts
The Agency Permission Checklist Before Claude Code Edits a Client Site
A client-work permission checklist for safe AI-assisted edits on landing pages and websites.
Turn SaaS Support Bug Reports Into Repro Steps With Claude Code
A support-team workflow for converting vague tickets into safe, reproducible bug reports.
Turn Stale Obsidian Notes Into a Claude Code Brief in 10 Minutes
Obsidian notes that turn to mush when pasted? Sort them into facts, decisions, and unknowns so Claude Code can act on them right away.
Related Products
Claude Code Quick Reference Cheatsheet
A free one-page reference for daily Claude Code work.
Keep the essential commands, file-reference patterns, CLAUDE.md reminders, prompting habits, review cues, and debugging workflow notes next to your editor.
50 Battle-Tested Claude Code Prompt Templates
Copy, paste, ship. 50 production-ready prompts.
Use proven prompts for code review, refactoring, testing, documentation, debugging, architecture, and incident response.