Building an Agentic AI Banking Advisor
Concept
A personal test project modeled on One Zero Bank's Ella.AI: a Claude data-connector AI financial advisor for a fictional bank, MyBank, serving individuals optimizing their personal bank accounts. A customer links their account through an account-aggregation connector pattern (validated against Plaid Sandbox). The advisor then answers questions about spending and savings, grounded in the customer's linked account data, with deterministic calculations, compliance guardrails and full observability.
Why this project?
It demonstrates the full "agentic AI in a regulated domain" skill set in one build: a data connector (a custom MCP server), multi-agent orchestration, deterministic (non-hallucinated) calculation, compliance-style grounding (data governance, privacy, security) and guardrails, evals, and monitoring.
My role
I owned product discovery, scope, requirements, acceptance criteria and validation. The code was produced through AI-assisted development with Claude, and I verified every output against answers computed independently in advance. Where my own assumptions turned out wrong, this article says so.
PM or Builder? Why build it myself?
Builder skills give a PM two distinct advantages.
- Understanding the system from the inside. A PM working on AI products has to understand the considerations that drive the system well enough to discuss them credibly with developers, system architects and stakeholders:
- why a model shouldn't do the arithmetic
- what a guardrail can and can't catch
- why eval data has to stay fixed
- where cost and latency actually come from
- what "data minimization" means in a real tool call
Building the MVP end to end was the fastest way to learn those trade-offs. It means I can ask the right questions, challenge estimates and make informed scope decisions, rather than taking architecture on trust.
- Showing, not telling. A functional MVP that stakeholders can actually use changes the development process:
- It aligns everyone around something concrete instead of competing interpretations of a spec.
- It surfaces requirements, edge cases and risks early, while they're still cheap to change.
- It gives developers a working reference to challenge and improve, not a document to decode.
The code will be refactored and the UX redesigned, and that's expected. The value is the shared understanding a working system creates, which no deck or mockup matches.
Skills demonstrated
- Product management: product discovery, market and competitive analysis, problem and value hypotheses, MVP scoping and prioritization, acceptance criteria, trade-off decisions, phased delivery
- Agentic AI: multi-agent orchestration (router, specialist, compliance verifier), tool use via Model Context Protocol (MCP), prompt engineering, deterministic tools for hallucination mitigation
- AI quality: LLM evaluation (evals), golden datasets, automated regression testing, human-in-the-loop review, error analysis
- AI operations (LLMOps): observability and tracing, cost and latency monitoring, product metrics, alerting
- Trust & compliance: data governance, privacy by design, security, consent and data-minimization design, guardrails for regulated advice (OSFI E-23 and PIPEDA context)
- Stack: Claude (Haiku 4.5), n8n, MCP (FastMCP), Plaid Sandbox, LangSmith, Python, Docker
- The value hypothesis — the product statement and six hypotheses, for customers and for the bank
- Scope — what I built, what I faked, and what I cut
- Architecture — connect & consent, how a question flows, the data sources, the MCP connector, and determinism by design
- The product process — phases, key decisions, the week I was wrong
- Evals & monitoring — how I know it works, running it like a product, results at a glance
- Security & privacy — what's designed in, and what building it revealed
- Limitations — the known gaps
- Key takeaways — three lessons for PMs building AI products
The Value Hypothesis
Before building anything, I wrote one value hypothesis per problem: who benefits, how the product would deliver it, and a pass/fail test the MVP could actually run. Three are about the customer and three about the bank. The last column is what a live product would track. Four synthetic customers can't measure those outcomes, so they show business-outcome thinking, not demonstrated results.
| # | For whom | Value hypothesis | How the product delivers it | MVP pass/fail test | If live, we'd track |
|---|---|---|---|---|---|
| PH1 | Privacy-conscious customer | They'll connect and ask sensitive questions if access is scoped and per-question, not a standing full-account grant to a third party | Narrowly scoped MCP tools per question (designed; only partly delivered, not enforced); optional incognito mode on a paid AI plan | Each tool call requests only the data the question needs | Activation, regular usage, N-month retention, stickiness |
| PH2 | Customer with finances across domains | One advisor, authorized once, beats juggling separate spending, credit, investing and mortgage apps | Router classifies each question by domain under one shared authorization | Router hands off correctly across domains in one conversation | % of customers asking across ≥ 2 domains per quarter |
| PH3 | The bank: compliance | Compliance exposure (OSFI E-23, PIPEDA) is manageable if the AI stays informational and never replaces customer judgment | An independent Guardrail agent reviews every answer before the customer sees it | Blocks every advice-overreach case without over-blocking factual answers | Zero missed advice-overreach incidents; escalation rate within an expected band |
| PH4 | The bank: relationship | Advice can happen anywhere; keeping the transaction in the bank's own app stops advisory moments (and revenue) leaking to competitors | Read/action boundary; any in-context product mention sits under an anti-steering guardrail | Agent never implies it can act, and never hides a better option | Competitor-account openings vs. a matched cohort; upsell (Ella reports +15%) |
| PH5 | Everyday customer | Clear answers on spending and saving without manual math, spreadsheets or an appointment (parity, not differentiation) | Deterministic calculation tools; the model narrates, never computes | Calculated answers match pre-computed golden values exactly | New regular savers vs. a matched cohort |
| PH6 | The bank: cost to serve | Human-level personalization at software cost, the gap between scripted bots and human advisors | Agents grounded in each customer's own data, running as software rather than headcount | Answers are grounded in each persona's own data, not generic scripts | Cost per resolved interaction; % resolved without a human (Ella reports 80–85%) |
Value stack: PH5 is the floor (table stakes), PH2 is convenience, PH1 is the real customer-side differentiation, PH3 and PH4 are the institutional case, and PH6 is the cost-to-serve case. How they fared in the MVP: PH3, PH5 and PH6 passed their mechanism tests; PH2 and PH4 are partly tested (three domains are referrals by design, and there's no MyBank product yet to test steering); PH1's per-question data access is designed but not enforced (see Security & Privacy).
Scope — What I Built, Faked and Cut
| Built (real, working) | Mocked (on purpose) | Cut (decided, not forgotten) |
|---|---|---|
| Router agent that sorts every question into one of 5 categories | Connect & Consent screen: how a customer would authorize access | Credit, Investment and Mortgage specialist agents → replaced by referrals to human teams |
| Cashflow/Savings specialist agent with 8 data tools | Bank data: 4 fictional customers, 23 months of transactions, built on Plaid's sandbox format | Financial-education knowledge base (RAG) |
| Compliance guardrail that approves or blocks every answer | Customer login: one "persona token" field swaps who is asking | Langfuse (swapped for LangSmith after testing; see Evals & Monitoring) |
| Custom MCP data connector + 6 tested calculation modules | — | — |
| Regression tests, human review, dashboards, alerts | — | — |
The biggest scope call: one domain done properly beats four done shallowly. Credit, investment and mortgage questions are real, but each is regulated in its own way. Doing one domain end to end, with evals and monitoring, taught me more than four half-built agents would have.
Architecture
Connect & Consent (the entry point, mocked)
Before any question is asked, the customer authorizes access on a MyBank-branded consent screen. It shows the value hypothesis above in action:
- Data control: scope checkboxes say exactly which data the AI may read (balances, transactions), each marked read-only.
- Security control: access is issued by the bank as a limited, revocable token, never the customer's password, and can be revoked at any time in the bank's settings.
- Privacy control: an optional incognito mode on the customer's AI plan keeps the conversation out of model training.

It's a mockup: nothing is really authorized, and the scopes aren't yet wired to the tools (see Security & Privacy). What matters is the pattern: access issued and revocable by the bank itself, not by an aggregator the bank doesn't control.
How a question flows

The same three paths with real output: what the customer sees, the route n8n took, and the execution log that confirms the verdict.

Full system architecture, as built:

When a customer asks a question:
Every step is traced (tokens, time, cost, tool calls), so any answer can be audited after the fact.
Data sources
The advisor reads a fixed, synthetic test dataset stored as files on my machine. It was built from Plaid Sandbox and then extended. Four test customers (personas), 23 months of history (Sep 2024 – Jul 2026), all amounts in CAD:
| Persona | Profile | Snapshot | Transactions |
|---|---|---|---|
| P1 | Young professional | $2,700 checking; credit card $2,200 of a $5,000 limit | 277 |
| P2 | Joint account | Two holders, shared spending | 253 |
| P3 | Good credit | $8,500 checking + a savings account | 231 |
| P4 | Poor credit | $350 checking; card $4,750 of $5,000 (95% used), recent fees | 207 |
How the test data was built
- Defined in Plaid Sandbox. Each persona's accounts and transactions were loaded into Plaid Sandbox as custom test users.
- Extended past Plaid's limit. Plaid Sandbox returns only about 90 days of history. So I kept Plaid's output (its data format and its real merchant categorization) and extended it to 23 months.
- Seeded with patterns to detect. I added seasonal swings in spending, recurring monthly charges, a duplicate charge and bank fees, so every in-scope question has something real to find.
- Stored as files. The transactions are Plaid-shaped JSON files, one per persona. The expected answers for every persona and month sit in a spreadsheet (
golden_numbers.xlsx).
Where Plaid stays in the loop. The project still demonstrates working with an external data source:
- The full connection was proven end to end: token create → exchange → accounts → transactions.
- The categories in the data are Plaid's own.
- Each persona keeps its Plaid sandbox access token as its customer ID.
All of this happens at build time. While answering a customer, there is no Plaid call: the categories are stored with the data, and tokens are matched locally. A production version would call the aggregator or the bank's own systems live. Why fixed data and not random. Two reasons:
- Scope. With fixed data, every expected answer (the "golden" values the tests check against) is calculated once, in advance. With random data, the expected answers would have to be calculated on the fly for every test run. That's feasible, but it adds complexity this test project didn't need.
- Reproducibility. The same question must give the same expected answer on every run, or a failed test tells you nothing.

The connector: 8 MCP tools
The specialist reaches the customer's data through a small custom MCP (Model Context Protocol) server: AI-written in Python, reviewed and tested by me. n8n's agent calls it like any other tool, and each tool answers a family of customer questions:
"What's my balance?" "How close am I to my card limit?"
"When was that fee charged?"
"What was my savings rate in July?" "Could I save more?"
"How much did I spend on groceries?"
"How much of my spending is essential?"
"How can I cut my costs?"
"What am I paying for every month?"
"Was I charged twice for anything?"
Behind the tools sit 6 calculation modules, checked by 4,000+ automated tests against the golden numbers with 0 mismatches. The model narrates the result; it never adds up transactions itself.
Determinism by design
In banking, the same question must always produce the same numbers. So I split the system into a deterministic core and a probabilistic layer, and tested the boundary between them.
| Decision | Consideration | How it shows in the architecture |
|---|---|---|
| Fixed test data | Evals need stable expected answers; keep scope small | Static persona files; no live Plaid dependency at runtime |
| Code does the math, not the model | Language models make arithmetic errors; a wrong number from a bank is worse than no answer | 6 tested Python calculation modules behind 8 MCP tools; the model only narrates (one flagged exception: card utilization %) |
| Expected answers calculated twice | The test's "correct answer" must itself be trustworthy | Spreadsheet formulas plus an independent script: 4,000+ checks, 0 mismatches |
| Fixed referrals for regulated topics | No AI-generated advice on credit, investment or mortgage | Router picks a category; a rule-based Switch node routes it; the referral text is fixed, not generated |
| One-word compliance verdict | Free-text judgments can't be routed reliably | Guardrail must answer exactly PASS or BLOCK; an exact-match Switch routes it; anything else goes to the safe fallback |
| Rule-based test scoring | An AI grader would add its own variability | Regression tests check numbers, phrases, route and verdict by rule; no AI judge |
What stays probabilistic, on purpose: the Router's classification, the specialist's choice of tool, its wording, and the Guardrail's judgment. These are where the evals found real issues: the Router sending an in-scope investing question to a referral, and the Guardrail over-blocking a factual balance answer. They're managed with regression tests and human review, not eliminated.
The Product Process
I ran it as a phased build, with one rule borrowed from real product work: decide what "done" looks like before building it.
| Phase | What I did | Key output |
|---|---|---|
| 0 · Setup | Accounts, self-hosted n8n in Docker, Plaid sandbox, API key with a spend limit | A working sandbox for ~$10–15 of credits |
| 0.5 · Product framing | Market research, competitive alternatives map, problem & value hypotheses | 6 hypotheses, product statement |
| 1 · Data layer | Custom sandbox data; found Plaid's 90-day history cap; generated 23 months of test data instead; built the MCP connector | 4 personas, golden numbers spreadsheet, connector |
| 2 · Learn evals | Studied eval practice before designing any (binary pass/fail, error analysis, offline vs. online checks) | Evals & metrics framework |
| 2.5–2.75 · Use cases & calculations | In/out-of-scope questions; calculation modules tested against pre-computed answers | 6 modules, 4,000+ checks, 0 mismatches |
| 3 · First end-to-end path | Consent mockup + specialist agent answering real questions | First correct live answer (38.4% savings rate) |
| 4 · Router + Guardrail | Routing, referrals, compliance review of every answer | PASS and BLOCK both observed on real drafts |
| 5 · Knowledge base | Cut: nothing in the demo needed it | — |
| 6 · Evals | 15-case regression suite, human review queue | 13/15 → 14/15 after a fix |
| 7 · Monitoring | Dashboards, business metrics, alerts | ~1¢ per question, 3 alerts |
| 8 · Write-up | This article | — |
Six decisions that shaped it
| Decision | Why |
|---|---|
| Cut 3 of 4 specialist agents to referrals | Depth over breadth; regulated domains deserve a human hand-off, not a half-built bot |
| The AI never does the arithmetic | A wrong number from a bank is worse than no answer. Tested code calculates; the model explains (one flagged exception: card utilization %) |
| Fixed test data instead of live sandbox data | Evals only mean something if the same question gives the same expected answer every run |
| The cheapest capable model (Claude Haiku 4.5) for all three agents | Cost: ~1 cent per customer question, including the safety checks |
| Switched observability tools after testing, not before | The planned tool (Langfuse) turned out to have no native n8n tracing; I tested LangSmith against my setup before committing |
| Cut the knowledge base to finish | Shipping one complete, honest MVP beat one more half-feature |
Evals & Monitoring
A working demo proves the system can answer correctly. Evals prove it does, every time something changes. Monitoring shows whether it keeps doing so once it's running.
Evals: how I know it works
Three layers, from the code up to a human reviewer. None of them uses an AI to grade the AI: every check is either a rule or a person.
| Layer | What it checks | Result |
|---|---|---|
| 1 · Calculation tests | Do the 6 calculation modules return the right numbers? Checked against answers worked out independently in a spreadsheet; no AI involved | 4,000+ checks, 0 mismatches |
| 2 · End-to-end regression tests | Does the whole advisor behave correctly? 15 real questions across 3 personas, each scored on numbers, forbidden phrases, route and Guardrail verdict | 14/15 (13/15 before a fix) |
| 3 · Human review | Was the Guardrail's call right for the customer, and is the answer accurate? A review queue with two yes/no scores per item | 12 items queued; the first one found a missing rule |
The suite's first catch was my own bug. For the at-risk persona, a plain "What's my balance?" came back blocked. My first guess at the cause was wrong. The blocked draft was clean facts ("$4,750 of your $5,000 limit, 95% used"), so the Guardrail was over-blocking because 95% sounds alarming. Two new Guardrail rules fixed it, and one command proved the fix in both directions: the balance answer now passes, and the "pay down your card" draft is still blocked.

Human review finds what nobody wrote a rule for. In the first reviewed item, the draft asked the customer to "verify the access token". Nothing in the rules forbade it, but for a bank's customer it reads like phishing. The rulebook was missing a category: never expose system errors or internal details.

Monitoring: running it like a product
Every agent step is traced in LangSmith: tokens, time, cost and tool calls. Two dashboards answer two different questions:
- Is it healthy? The built-in dashboard covers volume, latency, cost and errors, with zero setup.
- Is it behaving as designed? A custom dashboard tracks the two product metrics no tool ships by default: how often the Guardrail blocks an answer, and how often a question is referred to a human team. To chart them, I first had to turn the agents' text verdicts into data.

Three alerts watch for trouble: error rate above 5%, answers slower than 10 seconds, and a spike in blocked answers. In this prototype they go to a test inbox; in production they'd go to Slack or PagerDuty.
Results at a glance
| What | Result | Context |
|---|---|---|
| Regression tests | 14 / 15 pass | Up from 13/15 after the tests caught a Guardrail bug; the remaining failure is a known Router scope gap |
| Calculation accuracy | 4,000+ checks, 0 mismatches | Against answers worked out independently in a spreadsheet |
| Cost per question | ~1 cent | $0.44 for all test traffic (149 agent steps) |
| Cost of safety | ~9% of total | Router + Guardrail together; the specialist is 91% |
| Speed | 0.83s median / 4.2s p99 | Per agent step; 0% errors |
| Guardrail block rate | 19% | Test traffic, deliberately adversarial, so inflated |
| Referral rate | 23% | Share of questions sent to human specialist teams |
Security & Privacy
Even as a prototype, a banking assistant has to be designed as if the data were real:
- Synthetic data only. Four fictional customers, Plaid sandbox format, no real accounts or personal data anywhere.
- Consent first. The entry point is a (mocked) bank-branded Connect & Consent screen: scoped permissions, revocable access, a plain explanation of what the AI provider sees.
- Read-only by design. The advisor can inform but can't act. Anything actionable (an application, a transfer) goes back to the bank's own authenticated app.
- Regulated topics go to humans. Credit, investment and mortgage questions get a fixed referral, not AI advice.
- An independent compliance check. A separate Guardrail agent reviews every answer before the customer sees it, and every decision is traceable.
- Numbers from code, not the model. No hallucinated balances.
- Secrets hygiene. API keys live in environment files, not in the workflow; spend limits are set; keys are rotated before they expire.
And the honest part: what building it revealed.
- The sandbox access token showed up in plain text in the traces. Harmless here, unacceptable in production, where the token would be held server-side and never passed through the AI.
- Data minimization is designed but only partly delivered. Most tools return calculated totals rather than raw transactions, so the AI usually sees only what the answer needs. But nothing enforces it: the model chooses which tool to call, the raw-transaction tool can return the full history, and the consent screen's scopes aren't connected to the tools. In production, scope would be enforced at the connector, per question and per consent.
- The Guardrail had no rule against exposing system errors to customers. A human reviewer found that; no automated test would have.
Regulatory context. In Canada, OSFI Guideline E-23 (model risk management, which brings customer-facing AI into scope from 2027) and PIPEDA (consent and data minimization) are the frameworks a real bank would design a product like this against.
Limitations
- The Router sends "Could I be investing more?" to the investment referral, so one test case never reaches the Guardrail (scope decision pending).
- The Router has no memory, so a short follow-up reply may be treated as a new, out-of-scope question.
- A blocked answer ends in a generic "contact support" message, and the customer loses even the safe facts.
- The specialist calculates card utilization itself: the one deliberate exception to "all numbers from code".
- Product-steering (unfairly pushing the bank's own products) can't be tested yet: the specialist has no MyBank product to push.
- No policy yet for what each holder of a joint account may see.
- Prototype infrastructure: runs on my laptop, n8n version not pinned.
Key Takeaways
- Product management comes first; building serves it. The core of this project is product work: the strategy, the value it delivers to customers and the bank, and the competitive edge it's designed around. I built it myself, but not to replace developers or designers. Building let me understand the system's real trade-offs, and it produced an MVP that's close to fully functional. That's the advantage AI brings to a PM: stakeholders can see, use and react to the product early, while changes are still cheap, instead of discovering it late.
- Start evals early, and tie them to user stories. Defining what "correct" means for each user story before building anything, with expected answers worked out in advance, is the right product call. It turned "it seems to work" into a pass/fail check, caught a bug I'd introduced two days earlier on its very first run, and saved days of guesswork.
- Compliance and privacy aren't features; they're foundations. Consent, data minimization, a read-only boundary and an independent compliance check shaped the architecture from day one. Retrofitting them later would have meant rebuilding the system, not adding a module.
Leveraging AI in the Job Hunt — While Still in the Trenches
March 2026
~10 min read
Claude · Notion · Cowork
Before we startI'm writing this while actively job hunting — not from the comfortable distance of a signed offer letter. I haven't "made it" yet. I think that actually makes this more useful: everything here is being tested in real time, in a real market. No polished retrospective, just what's working now.
I recently relocated to Toronto — stepping into what I can only describe as "The perfect storm." Unemployment hit 14.6% last July before easing back to 8.6% in February.
For virtually every role I find interesting, LinkedIn cheerfully reports: “Reposted 20 hours ago · Over 100 applicants.”
I had a choice: play the numbers game and mass-apply with generic materials, or treat this like the product problem it actually is. I went with option two.
To be clear: I'm not talking about mass-generating low-effort spam. The exact opposite. Fewer applications, done dramatically better — each one precisely targeted, genuinely tailored, and backed by real research on the company. Here's the full workflow I've built.
What's covered in this post
- The full 7-step process outline — from benchmarking to interview prep
- The prompts that actually work — including Yfaat Gal's benchmarking prompts
- Setting up the AI workflow — tech stack, context files, and the trigger prompt
Phase 1 — The Process
The Full Process Outline
This isn't a one-click solution. It's a structured process where AI amplifies each step — so the output is genuinely good, not just fast. Here's how it flows:
Compare your LinkedIn profile against professionals in similar roles at similar companies. Look for keywords, skills, measurable outcomes, and prerequisites you're missing or under-emphasizing.
Based on benchmarking insights, decide where you have the clearest competitive edge — role types, company sizes, verticals. Startup vs. corporate, product vs. growth. Deliberate focus beats broad volume every time.
Build one strong "master" version informed by benchmarking. This is the foundation Claude tailors per role — you never start from scratch again. Each application generates a new file version.
Configure Claude Cowork with your Notion context files. 20–30 minutes of setup. Hours saved on every application that follows. Full setup guide below ↓
Find a relevant role, run the workflow. Claude performs a gap analysis against the job description, proposes specific changes, and generates a tailored .docx. You review and approve throughout.
After the resume, Claude researches the company and drafts a cover letter with multiple angles to choose from. You select, refine, approve. The .docx lands in your Cowork folder and the application is logged to Notion automatically.
Once you land an interview, use your tailored resume and the job description to prompt Claude for a targeted prep session: likely questions, strong talking points from your experience, and research on the company's current priorities.
Step 5 in detail: How the tailored resume works
- Claude compares your master resume against the JD to discover gaps, then lists the deltas and proposes specific changes — current vs. proposed, section by section.
- You review each suggestion and provide your own input — e.g., experience that's relevant but wasn't on the resume, or corrections if Claude misread something.
- Accept or decline each suggestion. Claude incorporates your feedback and reworks if needed.
- A new .docx resume is generated for that specific role and dropped into your Cowork folder.
Step 6 in detail: How the cover letter works
- Claude drafts a cover letter drawing on three signals: your experience, the highlighted JD requirements, and research into the company's current priorities — announcements, product launches, blog posts, LinkedIn activity.
- Claude presents a list of possible angles to lead with. You pick the ones that best represent you.
- Claude generates the final letter. You can still edit before sending.
- The .docx is saved to your Cowork folder. Claude logs the full application to your Notion tracker — date, company, role, salary expectations, notes.
💡 The cover letter edge most people missThe real differentiator isn't keyword matching — it's company-specific context. Asking Claude to research recent blog posts, press releases, and LinkedIn activity before writing gives you insight into what the company is focused on right now. Referencing that signals you've done real homework in a way generic letters never can.
Phase 1 — Benchmarking Prompts
The Prompts That Actually Work
Big credit to Yfaat Gal, who shared these at a JVS Toronto event a couple of weeks ago. They've become a regular part of my benchmarking routine.
To identify what you're under-signaling on LinkedIn:
What am I under-signaling?""What outcomes do leaders in this role usually highlight?"
To decode what a job description is really screening for:
"What are the top 5 skills this job description is actually screening for?"
"Which of my experiences best match these requirements?"
🎤 Bonus: Interview prep promptsOnce you've landed the interview: "Based on this job description and my resume, what are the 5 most likely interview questions? What strong answers could I give based on my experience?" and "What should I know about this company's current focus before this interview?"
Phase 2 — Setup
Setting Up the AI Workflow
One-time investment. Once it's in place, every application runs from a single trigger prompt.
The tech stack
Core of the per-application workflow. Generates tailored .docx files into a desktop folder. Slightly slower than Projects, but token limits are less of a bottleneck. Works separately from Projects with no shared memory.
Working well
Best for the benchmarking phase — deep research sessions, LinkedIn profile analysis, strategy work. Maintains context across conversations. Faster, but hits daily limits quicker.
Working well
Beta. Theoretically useful for reading job descriptions in-browser. Still unreliable in practice — worth revisiting once it matures.
Beta — unreliable
Hosts all context documents. Claude reads instructions and resume via MCP integration, and writes application entries back to the tracker. Notion becomes the control center.
Solid
🤖 Honest Cowork reviewCowork has what I've come to affectionately call "selective blindness and amnesia" — it can't see other Claude Projects and has no memory between sessions. You give it full context every time via the Notion files. Once that's built into the workflow it stops being a limitation — and it's still my favourite tool for the job.
What you need in Notion first
- Master resume file — your optimized baseline, also stored in your Cowork desktop folder so Claude can access it directly.
- Instruction file — the full workflow instructions for Claude: what to do, in what order, how to format output.
- Scope & requirements file — your targeting parameters: preferred roles, company types, what to prioritize.
- Job application tracker — a Notion database where Claude logs each application automatically. Useful for follow-up timing and pattern-spotting over time.
The trigger prompt — starts every application
Once your Notion context files are in place and your master resume is in the Cowork folder, every application begins with:
Here's my context: [link to your Notion instructions/scope file]
Please run the full job application workflow for this role:
[paste job description URL — or text if the URL is blocked]
From there: gap analysis → accept or refine suggestions → tailored resume .docx generated → cover letter drafted with selectable angles → final letter approved → everything logged to Notion. Five to ten minutes, start to finish.
⚠️ Practical noteSome company career pages block Claude from reading the URL directly. If that happens, paste the job description text into the prompt manually. The workflow runs identically either way.
Where I'm at — and what's next
Still in the search. But applying with more precision, more confidence, and significantly less 11pm panic-editing. That's a real improvement worth sharing.
Next in this series: The full Cowork setup walkthrough — the instruction file structure, the Notion tracker schema, and exactly how I've wired Claude's memory workaround. If you're building something similar and want to compare notes, reach out — I'd genuinely enjoy the conversation.

