Every system I build is designed to detect|catch|catch something before it becomes a problem.
Seven projects in decision logic, experience analytics, data quality, team enablement, SaaS implementation, and AI-assisted operations — each one built so the safeguard catches the failure, not the person relying on it.
Complexity → Clarity → AdoptionOpen to roles in systems design, data & CX analytics, and AI-assisted operations
I design decision systems, data-quality pipelines, and AI-assisted workflows that make complex work faster, clearer, and easier to trust.
My projects usually start with a familiar problem: a manual process is eating up time, creating avoidable errors, or making good decisions harder than they need to be.
The case studies below include:
Decision support
Cut case resolution time from 30 minutes to 5
CX analytics
Turned 3 years of user feedback into insights that helped shape a shipped product feature
Operational enablement
Built a five-phase onboarding program that got 20+ remote hires to full competency in 30 days, down from 60–90+
AI workflow design
Created and tested an AI-assisted workflow that surfaced a critical failure before reaching the user
Risk monitoring
Built an AI workflow that cross-checks email against project boards to catch delivery risk before the weekly review
Data quality
Built an automated validation pipeline protecting 30+ programs from downstream errors
SaaS implementation
Built an AI-assisted onboarding system that takes a client from Closed Won to a reviewed kickoff plan
On track
swipe
Four projects were built inside organizations and are presented with identifying details removed.
Three are self-directed AI portfolio projects shown in full — including the workflows, design decisions, testing, and where they broke.
“
It's not possible to overstate what a game-changer this has been for us. Saves frustration, reduces wasted time, and reduces errors.Direct manager, on awarding a 2025 Spot Award for Innovation
Not collecting tools. Using them to solve something real — and knowing what has to happen before the solution becomes real for a business.
If you want the full, non-anonymized versions of the decision intelligence, CX analytics, data quality, or onboarding case studies, or want to talk through how any of this would apply to your team, I'm easiest to reach on LinkedIn.
Most operational pain is a system design problem — not a people problem.
I'm a Senior Project Manager who builds the decision tools, data pipelines, and AI-assisted workflows that make complex work faster, clearer, and easier to trust — and the onboarding and training that get teams to actually use them.
ToolsExcel & Power Query, Asana, n8n, Gemini, Notion
Based inMaryland · open to remote & hybrid
Open toImplementation, enablement & operations roles in digital health, AI, and consumer tech
My story
I start with who has to live with the result.
I stumbled into project management, but it turned out to be a natural fit for how I think. As a systems thinker, I enjoy connecting the dots, understanding how all the pieces fit together, and helping turn the bigger picture into a clear path forward.
My projects usually start the same way: a team is losing time to a process nobody designed. Twelve specialists cross-referencing three systems by hand. New hires spending two to three months learning a 224-task project from a task list. Volunteer reviewers hunting for their own files. A quality check that only worked if the person running it never got tired.
I don't start with the tool. I start with the people who have to use it — then I build the smallest thing that removes the guesswork, test it where it's most likely to fail, and train the team until they don't need me in the room.
Outside of work, I love exploring trails, kayaking, and taking walks with my golden retriever, Charlie. Spending time outdoors is one of my favorite ways to recharge.
Five things I believe about building systems people trust.
I design for the person who has to live with it.
A tool nobody adopts is a failed tool. My decision matrix looked like a form, not a spreadsheet — and 12 people were self-sufficient after two training sessions.
The #1 complaint in years of survey feedback had never been tallied. Counting it — 179 people asking for the same thing — is what got the feature shipped.
My pipelines flag every mismatch automatically, but a person makes the correction. My AI workflows draft and propose; they never send or confirm on their own.
The most useful test is the one that tries to break the thing. It's how a draft-only safeguard caught an identity error before it ever reached a client.
Instructions tabs, documented logic, and train-the-trainer handoffs — the onboarding program I built is still how new hires learn today, and managers run it without me.
“It's not possible to overstate what a game-changer this has been for us. Saves frustration, reduces wasted time, and reduces errors! It cut case resolution time from 30 minutes to 5 minutes.”
Program Manager, PMPManaged Abitha directly
“In the three years we've worked together, she's been a go-to source of guidance for me, and her mentorship helped me grow into an effective program lead. Abitha is exactly the kind of leader who raises the bar for everyone around her.”
Technology that solves practical problems — and teams ready to adopt it.
I'm particularly excited about digital health, AI and automation, and consumer technology. I'm drawn to organizations that use technology to solve practical problems and make everyday life easier. With my background in enterprise implementation and change management, I enjoy helping teams turn new ideas and systems into services people can successfully adopt and use.
Based in Maryland, open to remote and hybrid roles.
Digital healthAI & automationConsumer technologyEnterprise implementationClient onboarding & enablementChange management
Let's talk.
If your team is losing time to a process nobody designed, I'd love to hear about it.
Turning a 224-task project into a two-week, five-phase onboarding program that got 20+ remote hires to full competency in 30 days — down from 60–90+.
224Tasks per project, from kickoff to client handoff
600+Productive days gained across 20+ hires (estimate)
20+Remote hires trained through the program
30 daysTo full competency — down from 60–90+
The 30-second version: new hires were spending 60–90+ days learning a 224-task project from lectures and a task list. I turned it into a two-week, five-phase program — lecture, real system, hands-on practice, feedback — that got 20+ remote hires to full competency in 30 days, then handed it to managers to run. It's still the standard, and the team went on to earn very high customer satisfaction scores.
New hires faced 224 tasks — and didn't touch real work for a month.
Every project on our team was a peer review cycle, and running one took 224 tasks from kickoff to the final handoff to the client. Those tasks were split by role: some belonged to Team Leads, others to Project Support Specialists.
New hires learned all of it through lectures and the project task list in Asana. They wouldn't see their first real work task until about a month in — and when they did, it felt like starting from scratch. Reaching full competency took 60 to 90+ days, with heavy errors along the way. On a remote team, that stretch was also isolating.
The knowledge existed. The path through it didn't.
What was broken
Onboarding was a lecture and a task list — no phases, no practice, no one checking in.
No structure. 224 tasks were presented as one long list, not broken into the phases people actually work in.
No practice. Hires listened to lectures but never used the systems until real work arrived weeks later.
No personalized help. Nobody reviewed a new hire's work until it was live — which is where the errors surfaced.
No connection. Remote hires learned alone and didn't get to know the wider team.
What I built
Five phases, each ending in the real system.
I architected a two-week onboarding program that split the 224 tasks into the five phases of a peer review project. Every phase followed the same loop: an interactive lecture deck, then the system used in that phase, then a hands-on assignment built on practice data, then personal feedback. Hires worked with real project work during the program, so by day 30 they could simply build a project.
Click a phase to see how it was taught.
Built for the role, paced for retention
Tasks were assigned by role level, so the program followed the same split: Team Leads and Project Support Specialists each practiced the tasks they would own. Practice data covered the work people found hardest — reviewer onboarding, stakeholder communication, reports, and data analysis.
How I built it
01Map the work
Broke the 224 tasks into the five phases of a peer review project, split by role.
02Build the materials
Interactive lecture decks, practice data, and a hands-on assignment for every phase.
03Plan with Operations
Co-developed the two-week schedule and which teammate would lead each session.
04Run and adjust
Delivered the first cohort, then rebuilt the dry lectures into two-way sessions.
05Hand it off
Trained managers to run it through mini train-the-trainer sessions.
I deliberately held the program at two weeks. Not an accelerated sprint, and not a drawn-out course: two focused weeks, then time to keep working through the materials, so people felt genuinely confident by the end of the first month. I co-developed the schedule and trainer assignments with the Operations team.
The real schedule
Every lecture was followed by practice — and every practice was reviewed.
This is the program's actual two-week structure, recreated with every name, system, and organization detail removed. Three tiers built on each other — basics, then tools, then the phase-by-phase modules — and sessions were led by more than a dozen different teammates, so new hires met the whole team.
Recreated from the program's real schedule; condensed, with all names, internal system names, and organization details removed.
Inside the lecture decks
Built to be interacted with, not read.
The original lectures were dry. These recreations show how I rebuilt them as enterprise-system training: animated walkthroughs of the live systems, then a slide that asks the new hire to do something — answer a question, spot what's missing, or stop and practice.
Internal checklist15 sections
Opportunity postedKickoff
Project kickoffKickoff
Reviewer approval & outreachKickoff
Application window closesKickoff
Applications screenedScreening
Reviewer panels set upAssignments
Orientation callAssignments
First contact email to reviewersPeer Review
+ 7 more sections through Final Reports
The template every project ran onThe Asana project every hire would learn to run: 15 sections, each tagged to its phase, with the subtasks nested inside.
Animated walkthroughs of the live systemsInstead of static screenshots, lectures showed the real systems in motion: moving from one section to the next and assigning reviewers to panels, with the cursor tracing every click — the way you’d walk a client through a new platform.
Coding applications in two systemsLecture
Going to review“Move forward”
Eliminated at screening“Do not move forward”
Coding applications in two systemsKnowledge check
Going to review
Eliminated at screening
Applications are coded in what two designations?
The same slide, turned into a quizLecture slides came back as knowledge checks: the title struck out, the answer hidden, and the question on screen.
First contact email attachments
Identify the missing documents.
First contact emailFunding announcement??COI / NDA formStep-by-step instructions
Fill in what's missingKnowledge checks asked hires to identify what was missing — not just repeat what they'd heard.
First contact email to reviewersPeer Review
1Create conflict-of-interest / NDA forms
2Draft the panel lead’s first contact email
✓Circulate with the team lead for quality control
4Send the first contact email to reviewers, by panel
Quality control, built into the stepsEvery process slide showed where a team lead reviews the work before it goes out — so checking became a habit, not an afterthought.
Paneling exercise!
Assignments
Exercise breaks, with a phase trackerLectures paused for hands-on exercises, and every slide showed where you were in the five phases.
Recreated from the original training decks — logos, slide template, client, organization, and internal system names removed.
Why it's implementation work
Onboarding a team onto a system is the same job as onboarding a client.
The audience was internal, but every design choice maps directly to how a client gets implemented onto a new platform:
What I built for new hires
The client implementation equivalent
Five phases from kickoff to client handoff
A phased implementation plan with clear milestones
Animated walkthroughs of the live systems
Guided product demos and click-path training for client users
Practice data inside the real systems
A sandbox / UAT environment before go-live
Separate tracks for Team Leads and Specialists
Role-based training for admins and end users
Train-the-trainer handoff to managers
Enabling the client's own champions to train their teams
Manager sign-off and fewer errors caught in review
Adoption and quality metrics after go-live
Very high customer satisfaction evaluation scores
The outcome clients actually judge you on
Testing & real-world validation
The lectures were dry, so I made them two-way.
The first version of the lectures carried the same problem as the old onboarding: people were listening, not doing. I rebuilt them around interaction between trainees and trainers, so every lecture led straight into questions, the system, and an assignment.
The real test was each new hire's first unassisted task. It went through without a hitch or with only minimal feedback, and my manager confirmed that hires had reached full competency within 30 days. Fewer errors were caught in review, and fewer questions came up once people were live.
Before & after
Metric
Before
After
Time to full competency
60–90+ days
30 days
Productive time per hire
Lost to a long ramp-up
30–60+ days gained (est.)
First real work task
About a month in, from scratch
During the two-week program
Errors
Heavy
Fewer caught in review
Structure
Lectures + a 224-task list
5 phases: lecture, system, hands-on, feedback
Support
No personalized help
Feedback on every assignment
Delivery
Depended on individuals
Managers trained to deliver it
What I did not do
✕Deliver every session myself
A remote team needed attention from more than one person
✓Team leads taught different portions, so hires met the whole team
✕An accelerated bootcamp
Speed without retention just moves the errors later
✓Two focused weeks, then time to keep practicing
✕Lecture-only training
Listening isn't the same as doing
✓Interactive lectures followed by hands-on assignments on practice data
✕Owning the program indefinitely
A program that needs its builder doesn't scale
✓Handed off to managers through mini train-the-trainer sessions
Result
Still the standard today — and it runs without me.
I built the lectures and the program, then handed delivery to the operations managers through mini train-the-trainer sessions, and kept giving feedback using the same lectures and practice data. More than 20 hires have come through it, it is still how new team members are onboarded today, and the framework was adopted across the organization.
The effect reached our clients too: the team went on to earn very high customer satisfaction evaluation scores.
In capacity terms, each hire became productive roughly 30–60+ days sooner than before. Across 20+ hires, that's an estimated 600–1,200+ days of productive work the team got back — without adding headcount.
What I'd measure next
Manager sign-off and fewer review errors proved the program worked, but I'd build a fuller scorecard for the next rollout: days to first unassisted task, errors per cohort in each phase, 90-day retention, and a short confidence survey at the end of weeks one and two — the same adoption metrics I'd use for a client go-live.
She also has played a lead role in our new staff training programs and overall led her team to perform at a high level resulting in very high customer satisfaction evaluation scores and very high level of quality based on our quality key performance indicators.Program Manager, PMP · managed Abitha directly
Guided clarity for complex decisions: turning 480 cross-system status combinations into a single answer per case.
83%Case resolution time cut, from 30 to 5 minutes
480Cross-system status combinations translated into guidance
340 invalid states flagged · 140 valid states guided
12Staff trained to full adoption in two sessions
2025Spot Award for Innovation
The 30-second version: A team of 12 was cross-referencing three systems by hand to interpret 480 possible status combinations — about 30 minutes a case and roughly 20 interruptions a day. I mapped every combination (340 were invalid) and built an Excel tool that works like a form: pick the statuses, get the answer and the next steps. Case time dropped to 5 minutes, the whole team was self-sufficient after two training sessions, and it earned a 2025 Spot Award for Innovation.
Builder: Abitha William, Senior Project Manager (sole architect) · Primary users: 12 Project Support Specialists · Downstream impact: 10+ programs, 500+ end users receiving consistent, accurate outreach.
~6 hours/day returned to the team — 30 minutes saved per case × 12 staff × daily use. ~10 hours/week returned to leadership capacity — 20 interruptions eliminated per day × 30 minutes each.
Who was affected
A team of 12 was losing 30 minutes per case to logic no document could hold
As the senior project manager overseeing a team of 12 project support specialists, I watched them navigate a three-system enrollment process every day across 10+ programs. A new security decision created 480 possible status combinations across those systems, and nobody had built anything to help staff interpret them.
Staff had to open three systems, read each status, mentally calculate how they interacted, decide what the user needed, and send the right email in the right order — every single case, every single day. I was fielding roughly 20 interruptions a day. Staff were frustrated, users were waiting, and the work wasn't getting done.
It was not a knowledge problem. It was a system design problem that nobody had built a solution for yet.
What was broken
340 of 480 combinations were invalid — and staff couldn't tell which.
Staff were being asked to interpret logic instead of being guided through it, and the order of operations changed with every combination — for example, one status pairing meant work System 1 first, while a different pairing meant work System 2 first and leave System 1 alone. A static reference document couldn't hold that kind of hierarchy.
340 of the 480 combinations were invalid states where the systems didn't harmonize and the helpdesk had to intervene. Staff had no way to know which was which, which meant constant interruptions, inconsistent guidance, and avoidable escalations.
340 invalid combinations140 valid combinations
What I built
A form, not a table
I proposed the solution to my manager before building anything, got approval, and researched every status in every system row by row. Manually checking all 480 combinations by hand would have taken weeks on its own, so I used ChatGPT to help reason through the logic and narrow down which combinations were actually valid, and to draft the Excel formulas that powered the matrix — without exposing confidential data. I built and verified the full 480-combination master matrix myself over a few weeks.
Then I designed the interface like a form instead of a spreadsheet: staff select statuses from dropdowns, and the tool instantly shows what the combination means, what staff need to do, and what the user needs to do — color-coded by urgency. For invalid combinations, it returns a clear error: invalid, contact helpdesk. No more guessing.
One deliberate choice: the tool tells staff which email template to use but doesn't auto-fill or send it. I wanted staff to read and understand what they were sending — a staff member who understands the email is a better advocate than one who just clicks send.
Try a simplified version of the tool
Set a status for each system and see the kind of guidance the real tool returns — color-coded by urgency, the same pattern described above.
All systems active — no action needed.
No action neededWork one system firstInvalid — contact helpdesk
Illustrative recreation of the interaction pattern described above — not the original 480-row matrix, which contains confidential system names and logic.
Session 1Tool walkthrough + guided practice
Session 2Live cases, open questions
Full adoptionAll 12 staff self-sufficient
Testing & real-world validation
Two moments proved the safeguard, not just the build
What happened
What the team saw
What it confirmed
Staff-reported "unrecognized" combinations
During early use, several of the 12 staff flagged combinations the tool didn't recognize at all
Investigated and confirmed as genuine glitches in the underlying systems, not gaps in the matrix — correctly routed to the helpdesk exactly as designed
A downstream security update
A later system change made one previously invalid combination valid
The tool still flagged it as invalid until the matrix was updated — caught and corrected, and confirmed why the tool needed active maintenance, not a one-time build
Both moments came back to the same principle: an automated "invalid" flag is only trustworthy if someone keeps the underlying logic current. The tool doesn't maintain itself — I do.
Before & after
Metric
Before
After
Time per case
30 minutes
5 minutes
Questions to me daily
~20
1–2
Training required
Hours of self-guided learning
Two sessions to full adoption
Consistency across team
Varied
100% consistent
Invalid-state visibility
None
Instant error flag
What I did not do
✕Flowchart
Can't show hierarchy across 3 simultaneous variables
✓Decision matrix with dropdown interface
✕Reference document
Relocates cognitive load, doesn't remove it
✓Automated output that removes interpretation entirely
✕Lengthy training program
12 people would internalize it 12 different ways
✓Two focused sessions + consistent tool output
✕A heavier workflow platform
Requires a new platform learning curve
✓Excel — immediately familiar, zero adoption friction
Result
Still in use today, and it runs without its builder in the room.
The tool is still in active use today, updated as systems change, and remains the single source of truth for every status combination in the organization. A built-in instructions tab, the dropdown structure, and documented logic mean any team member can operate it without the original builder present — a deliberate architectural choice.
It's not possible to overstate what a game-changer this has been for us. Saves frustration, reduces wasted time, and reduces errors.Direct manager, on awarding a 2025 Spot Award for Innovation
What I'm most proud of isn't the award or the adoption rate. It's that 12 people came to work and did their jobs more happily — that was the business need that mattered, and everything else followed from it.
Evidence that shaped product direction: turning a word document full of unread feedback into a shipped feature.
8,400Data points from 900+ users across 7 program offices
3×Increase in positive sentiment, 2021–2024
3 yrsConsistent methodology, run end to end by me
1Feature shipped in 2024 — a one-click Download All button
The 30-second version: Volunteer reviewers were losing time to a hard-to-use review system, and leadership only ever saw raw ticket counts. On my own initiative, I read and categorized years of survey feedback into a framework I held constant from 2021 to 2024 — and found that the #1 request, a faster way to get assigned files, had been asked for by 179 people and never counted. I took it to leadership; in 2024 the client shipped a one-click Download All button, and positive sentiment tripled.
Led by: Abitha William, Senior Project Manager — read and categorized the large majority of the survey data herself across the initiative · Reviewers: 900+ volunteer peer reviewers, reading applications in whatever free time they could find around full-time jobs and families · Client: needed confidence that awards were going to the applicants who earned them · Downstream: every organization that applied, whether or not it deserved funding.
A frustrating system didn't just waste volunteers' evenings. It pushed tired reviewers toward rushed reviews instead of the quality review each application deserved — and a rushed review is how the wrong application gets an award instead of the right one.
One file, one click — every single time
→
One click — every file, straight to desktop
Who was affected
Volunteers were losing their own time to a system nobody had measured
The users in this story weren't employees. They were volunteer peer reviewers, reading applications in whatever free time they could find around full-time jobs and families. When the review system launched, it wasn't intuitive — files were hard to find, navigation was clunky, and every minute spent fighting the system was a minute stolen from actually reading the application in front of them. That mattered beyond convenience: a tired reviewer with less time is a reviewer more likely to rush, and a rushed review is how the wrong application gets funded instead of the right one.
Their time was precious. The system was wasting it. And nobody had measured how much.
The organization was already collecting survey data after every review cycle, and users left detailed comments — but the report sent to leadership was a raw list of helpdesk ticket counts and an unprocessed dump of feedback. No categories, no patterns, no recommendations.
What was broken
The #1 complaint sat uncounted for years — 179 people asked for the same thing.
The gap wasn't a data gap — the data existed. The gap was analytical. In one fiscal year alone, 900+ responses came in across program offices: roughly 300 navigation issues, 200 troubleshooting issues, 100 system accessibility issues, and 250+ with no criticism at all. The single most common complaint across all offices — a faster, simpler way to retrieve assigned files — was flagged by 179 respondents, but it had sat in a raw comment list, uncounted, for years.
Leadership was making system-improvement decisions without knowing what was actually broken or how many people were experiencing it.
Click a category to see what it meant.
What I built
A categorization framework held constant for four years
I proposed the initiative to my manager on my own initiative, then put every survey response into a single spreadsheet column and read each one manually, tagging it by hand into a small set of recurring findings. I tested multiple categorization structures before landing on three that held across all the data — navigation, troubleshooting, and system accessibility — and built individual pie charts per program office plus a combined totals analysis, with a recommendations list drawn directly from the highest-volume comments.
“I can never find my assigned files — I have to click through four different tabs every single review cycle just to see what's mine.”
↓
Navigation
Illustrative example, written to match the tone of real feedback — not an actual reviewer quote.
I kept the exact same framework from 2021 through 2024 so the data stayed comparable year over year, then documented and handed the template to my direct reports to maintain going forward. I also tracked something most analysts wouldn't think to measure: positive sentiment. In 2021, roughly 10% of comments held no criticism at all; by 2024 that had grown to 30%.
Only 2021 and 2024 are measured data points — the line shows overall direction, not a claimed year-by-year trend.
I had built a longitudinal proof of impact without anyone asking me to.
Before & after
Metric
Before
After
Leadership reporting
Raw helpdesk ticket counts
Categorized analysis with charts
User pain visibility
Anecdotal, unstructured
Tallied, trended, visualized
Recommendations
None
Evidence-based, top 3 per cycle
Positive sentiment
~10% (2021)
~30% (2024)
Feature shipped
0
1 — one-click Download All button
What I did not do
Option considered
Why rejected or adapted
What I chose instead
Complex weighted scoring model
Adds explanation burden before insight can be used
Simple tally and pie chart — zero explanation needed
User interviews
Stakeholders weren't in a position to act on qualitative depth
Enriched survey data with specific comment categorization
Elevating a security-driven pain point
Real, but technically unfixable by the client
Included in findings, not elevated to top recommendation
The top request shipped in 2024 as a one-click Download All button.
I presented the findings directly to leadership as evidence: this was end users' top request, and it was costing reviewers real time every cycle. In 2024, the client shipped a one-click Download All button — replacing the one-file-at-a-time downloads reviewers had been stuck with since launch.
The categorization template I built in 2021 is still in use today, maintained by my direct reports. It was designed to be replicable — documented clearly enough that anyone could run it, and consistent enough that four years of data remain comparable. That initiative made the organization look good in front of its stakeholders, and gave volunteer reviewers something they'd never had before: proof that someone was measuring what the system was costing them.
What I'd measure next
Positive sentiment climbing from 10% to 30% is real evidence something improved — but sentiment isn't the same as time. I never directly studied whether reviewers actually got more time back to review each application carefully, which was the outcome that mattered most to award quality. That's the metric I'd build next.
I don't wait to be handed a problem. I find the gap. I build the solution. And I make sure the people who have to live with the results are better off than they were before.
Reliable systems for high-stakes work: replacing an hour of manual comparison with a pipeline that flags every mismatch, every cycle.
74%Projected cut in processing time, ~1 hour to 16 minutes
100%Application status accuracy in screening
30+Grant programs protected every screening cycle
0Helpdesk escalations from data mismatches since deployment
Who was affected
A miscategorized application could mean an organization went unfunded
My team ran application screening cycles across 30 or more programs. After each cycle, two reports had to match: one showing statuses before screening, one after. When they didn't match, an application had been miscategorized — and a miscategorized application could go unfunded entirely.
Pre-screening report
Application
Category
Program A · App 014
Category 1
Program A · App 015
Category 2
Program B · App 022
Category 1
Post-screening report
Application
Category
Program A · App 014
Category 1
Program A · App 015
Category 3
Program B · App 022
Category 1
Hover the mismatched row — that's what the pipeline flags automatically, every cycle. (Program and application names are illustrative.)
The human cost of bad data in grant management is not abstract. It is an organization that does not receive funding it deserved.
When a mismatch reached a stakeholder uncaught, the helpdesk had to manually fix the coding — days of correction work, during which the application sat in the wrong place and the applying organization had no idea.
What was broken
Detection depended on a busy person being perfectly consistent.
Before the pipeline, every comparison was done manually: copy-paste, conditional formatting by hand, thousands of cells scanned visually — about an hour per program, per cycle, across 30 programs. The process was broken at the detection stage, because it depended on the person reviewing being thorough, unrushed, and consistent. Those are human qualities that vary.
Before any build began, I authored detailed multi-page validation procedures with screenshots, specifying exactly which columns to compare, which reports to match, and what a flagged mismatch should look like. I designed and directed a Power Query dashboard — I owned the architecture, and a direct report with stronger Power Query execution skills built it.
The structure has three parts: a pre-screening report, a post-screening report, and a comparative reference tab. When the query runs, it flags every mismatch as a red cell, and a separate tab shows exactly which application, which field, and which value changed — telling me precisely what to correct manually in the source system.
I kept the paste step deliberately manual, so the person running validation engages with the data before the tool processes it.
Comprehension was more important to me than full automation.
Before & after
Metric
Before
After
Validation method
Manual copy-paste + conditional formatting
Automated Power Query pipeline
Time per program, per cycle
~1 hour
~16 minutes
Mismatch detection
Dependent on human consistency
Systematic, every cycle
Errors reaching stakeholders
Possible
Zero since deployment
Knowledge transfer
Single point of failure
Multi-page documented procedure
What I did not do
Option considered
Why rejected or adapted
What I chose instead
Fully automated end-to-end pipeline
The source system only allows manual updates
Automated detection, manual correction — right tool for the right step
Build it myself entirely
My direct report had stronger Power Query execution skills
Directed the architecture, delegated the build
Skip the documentation
Tool becomes a single point of failure when the builder leaves
Multi-page procedure with screenshots before build began
Automate the data paste step
Wanted the analyst to engage with the data before processing
Deliberate manual paste — comprehension over convenience
Result
The first real catch was an application in the wrong funding category.
The first real mismatch the dashboard caught was an application that had moved from one funding category to another incorrectly. Without the flag, it may not have been funded at all. The pipeline caught it; the correction was made; the application went to the right place.
The tool is mission-critical enough that rebuilding it, if ever needed, is on my own task list — and because I wrote the procedure document before the build began, I can rebuild it from scratch without starting over, and any future team member could too.
Delegation is not the absence of skill. It is the presence of judgment.
A self-directed n8n workflow prototype that converts structured call recaps into addressed Gmail drafts for human review — and the draft-only safeguard that stopped|caught|caught its own failure.
Self-directed portfolio project inspired by a publicly posted freelance brief. Not commissioned client work.
2Test scenarios, chosen by risk: a success case and a stress case
1Identity inconsistency caught before send
Draft-onlyHuman-in-the-loop safeguard, by design
The short version: a self-directed n8n + Gemini workflow drafts tone-matched Gmail follow-ups from call recaps — and during testing, its human-review safeguard caught an identity mix-up before it could reach a client.
Serves: the BD/account team member sending the follow-up, and the client on the other end of the call · Why it matters: every minute not spent drafting from scratch is a minute the BD team gets back to focus on the relationship itself, not paperwork.
A generic, unreviewed follow-up right after a phone call reads as impersonal — clients who just spoke with someone want a reply with the right tone and a personal touch, not a template. That's exactly why the workflow stops at a draft: a human still checks it before anything reaches the client.
01 · Context
Follow-ups were manual, inconsistent, and easy to send unreviewed.
I found a public freelance brief describing a familiar workflow problem: turning sales calls into follow-up emails was repetitive, manual, and inconsistent.
Each team member was:
Copying call transcripts into an AI tool
Writing prompts from scratch
Creating recaps in different formats
Drafting emails in their own tone and structure
The opportunity: turn that fragmented process into a repeatable workflow that could produce a consistent, voice-aligned draft for human review.
I didn't build everything. I chose the part worth testing.
Without access to the client, its systems, or real customer data, recreating the entire proposed solution would have added complexity without proving much more.
So I scoped the prototype around one high-value question:
Can a structured call recap reliably become a useful, voice-aligned email draft without giving AI the final say?
The prototype
The workflow:
Standardizes the drafting process
Reduces repetitive manual work
Applies defined voice and writing rules
Grounds the email in the supplied recap
Stops at Gmail Drafts rather than auto-sending
Call recapAI draftingGmail draftHuman review
Why that last decision matters
The goal wasn't maximum automation. It was finding the right boundary between automation and human judgment.
For customer-facing communication, AI could do the repetitive first-pass work. A person still owned the final decision.
That was the system I wanted to test.
02 · Solution
The short version: a four-node pipeline that drafts the email and stops — a human decides what sends.
AI drafts the email. A human decides what sends.
I built the four-node pipeline below in a single afternoon, then spent the following days testing it against real and fictional scenarios.
try it
Click a step above to see an illustrative example of its input or output.
The AI drafting step
The recap is converted into an email using defined voice and style rules. Click the five highlighted phrases below to see which rule shaped each one:
Hi Morgan, thanks for the time today. Per our call, the team needs API access by end of month, so I'll get a technical contact looped in this week. We can start the setup once the contract is signed, and I'm happy to hop on a quick call if anything above needs adjusting.
Best, Jordan
Reconstructed example.
Model choice
Gemini powered the prototype, but I did not treat that choice as final.
For a real implementation, I would compare multiple models against the same test set for:
Voice consistencyAccuracyHallucination riskDraft qualityCost and speed
The goal would be to select the model based on evidence, not preference.
Human stays in control
The Gmail integration creates an:
Addressed email + subject line + completed draft
But it never sends automatically.
The workflow ends in Drafts, keeping a human responsible for reviewing and approving every customer-facing message.
Intentional boundary: draft, not send
The automation removes repetitive setup. It does not remove the reviewer's responsibility to verify identity, recipients, facts, commitments, action items, and tone before sending.
For testing inputs, I used my own Wispr Flow call recaps, because the meeting recorder produces the structured overview, key points, action items, and next steps this workflow needs.
Adjust the assumptions to see how the estimate moves.
try it
That's roughly 6 hours a week returned to relationship-building instead of drafting.
Multiply by team size for organization-wide impact.
What I did not do
ChatGPT (for drafting)
Why rejected: Ongoing API cost for a workflow meant to run on every call, not a one-off.
Chose instead: Gemini — lower cost for a prototype run repeatedly.
Zapier (for the automation itself)
Why rejected: Subscription cost scales with usage — expensive to run this on every call.
Chose instead: n8n — self-hostable, no per-task cost.
Fireflies (meeting recorder)
Why rejected: A human needs to review the recap right after the call, not after a processing delay.
Chose instead: Wispr Flow — the structured recap is ready immediately.
Before & after
Metric
Before
After
Path to a follow-up
Have the call → AI drafts a transcript → prompt ChatGPT to draft the email → copy the draft into Gmail → address and send
Wispr Flow captures the call → review and paste into n8n → draft comes out → human reviews and sends
Tools touched per email
3–4, switching by hand
1 workflow, start to finish
Voice & tone
Whatever each person wrote that day
Defined voice rules, applied consistently
Human review before send
Inconsistent, easy to skip under time pressure
Required by design — draft-only
03 · Testing
The short version: the safeguard did its job — a flawed draft never reached a client inbox.
The output failed an identity check. The safeguard worked.
Test
Purpose
Observed result
Recruiter screening recap (success case)
Confirm form submission, model drafting, and Gmail creation worked end to end
Addressed Gmail draft produced — plumbing confirmed
Fictional sales discovery recap (stress case)
Test the same workflow against the brief's actual target scenario
Draft completed, but contained an identity inconsistency
Input — call recap from the successful test runOutput — Gmail draft from the successful test run
The prompt assumed one sender, while the fictional recap named a different BD lead: the draft described that lead's actions in third person, then signed off in their name. It didn't pass the identity check — but because the workflow stops in Gmail Drafts, the inconsistency was caught before it could become client-facing communication.
Had it sent, the cost wasn't just an awkward typo — it was content confusion and damaged trust. A client who just got off the phone doesn't want a generic, mismatched follow-up; they want a reply with a personal touch and the right tone, checked by a person before it lands in their inbox.
Hi Morgan, following up on today's call — Jordan discussed pricing options and next steps with your team, and wanted to confirm we're aligned before the proposal goes out. Happy to jump on a quick call if anything needs clarifying.
Best, Jordan
Click the two highlighted spans to see the inconsistency — reconstructed for illustration.
The prototype was built around a single known sender. A team-ready version needs sender identity, approved voice rules, and signature details as structured inputs — not assumptions hidden inside one prompt.
What the fix would look like
A structured sender profile, selected before drafting — instead of an assumption buried in the prompt.
Sender: Jordan Lee, BD Lead · Voice: warm, concise, no em dashes · Signs as: Jordan Lee
A hypothesis, not yet tested — not a built feature.
04 · From prototype to team-ready
The short version: six workstreams — from discovery to measurement — separate this prototype from a team-ready rollout.
Sender identity has to become a structured input before this goes team-wide.
Rollout roadmapScroll to see all 7 workstreams →
01Discover
Discover
Interview BD, account, and operations leads; map call types, ownership, and approval steps.
Planned
02Design
Design
Define sender profiles, voice rules, required sections, and the human approval boundary.
Test representative call types and edge cases against a defined accuracy/identity/tone rubric, including a head-to-head comparison of drafting models before locking one in.
Planned
05Govern
Govern
Confirm transcript consent, confidential-data handling, retention, and access control.
Planned
06Pilot & adopt
Pilot & adopt
Small-group rollout with trained reviewers before expanding to the wider team.
Planned
07Measure
Measure
Define KPIs/OKRs before rollout (e.g., minutes saved per rep, time from call to sent email, percentage of drafts sent without edits), then track them against the estimated impact above once live.
Planned
If I had to prioritize two of these first, it would be Discover and Evaluate: you can't design real guardrails without understanding actual call patterns, and the one failure this prototype surfaced was an evaluation gap. Govern would run alongside Discover, not wait until later, given this touches real client communications.
What would remain human-owned regardless: final factual verification, commitments made to the client, recipient selection, sensitive content, relationship judgment, and the decision to send.
1
A safeguard caught a real identity error — before it reached a client.
2
The workflow stops at Drafts. A human decides what sends.
3
Six clear workstreams separate this prototype from a team-ready rollout.
Reflection
The hardest part wasn't building the automation. It was defining the right boundary between AI and human judgment.
This prototype shows how I:
Scope ambiguous problems
Test responsibly
Catch failures
Turn experimentation into a clear next step
This is exactly the kind of work I want to keep doing: finding the deliberate boundary between automation and human judgment, and building systems people can actually trust. Solo, this is how I think. With a team, it's what I've already led — see the case studies above for what that looks like at scale.
A self-directed n8n + Gemini workflow that checks Gmail against Notion project status every week — so a delivery risk gets confirmed|surfaced|surfaced while the status board still says everything's on track.
Self-directed portfolio project built from a publicly posted AI-workflow brief. Not commissioned client work.
4Test inputs validated before this touches a real inbox
3Fallback triggers for exactly what the model shouldn't decide
Confirm-requiredNo proposed risk becomes official without the owner's review
The short version: a self-directed n8n + Gemini workflow reads designated Gmail threads, cross-checks them against Notion project status, and drafts a weekly risk digest — but nothing counts as a real risk until the project owner confirms it.
Serves: the project owner running the weekly delivery review, and everyone whose work depends on that project staying on schedule · Why it matters: the brief's own framing is the whole problem — a project can look on track in Notion while an email already contains evidence of a delay, and the owner won't know until the next status meeting.
That's why the workflow never decides a risk is real on its own. It surfaces evidence and a source; a person still confirms, dismisses, or asks for clarification before anything becomes an official update.
01 · Context
A status board that can look fine while an inbox already knows otherwise.
I found a public brief describing a familiar operations problem: one project owner, overseeing about 10 concurrent projects, spending roughly 30 minutes per project before every weekly delivery review.
Each review meant:
Searching Gmail for updates about dependencies, approvals, and deadlines
Comparing email commitments against the project plan
Contacting task owners to clarify conflicting information
Writing a status summary and highlighting risks for the team
At 30 minutes × 10 projects, that's 5 hours a week spent re-reading the same threads and boards — before the owner could even start resolving what those emails actually said.
I didn't build everything. I chose the part worth testing.
Without access to a real Notion workspace, a real inbox, or real project data, recreating the entire proposed system would have added complexity without proving much more.
So I scoped the prototype around one high-value question:
Can a workflow reliably surface delivery risk from unstructured email evidence — without ever getting to decide what counts as an official risk?
The prototype
The workflow:
Reads only Gmail threads explicitly tied to a project
Extracts blockers, changed commitments, and unresolved approvals as evidence, not conclusions
Compares that evidence against recorded deadlines and dependencies with rules, not AI judgment
Leaves ambiguous dates unresolved instead of guessing
Stops at a review queue rather than auto-confirming anything
CollectExtractEvaluateReviewDigest
Why that last decision matters
The goal wasn't to automate the owner's judgment about what's actually urgent. It was to remove the repetitive first pass — reading every thread, every week — so that judgment lands on real evidence instead of scattered notes.
For something touching deadlines and dependencies across 10 live projects, AI could do the reading. A person still owned the decision.
That was the system I wanted to test.
02 · Solution
The short version: a five-step pipeline that reads, extracts, and proposes — and stops the moment a finding needs a person's judgment.
AI reads the email. A rule decides the risk. The owner makes it official.
I designed the five-step pipeline below around the prerequisites the brief called out: structured Notion tasks with an owner and due date, Gmail threads explicitly tied to a project, and an owner who actually reviews what gets proposed.
try it
Click a step above to see an illustrative example of its input or output.
The signal-extraction prompt
Step 2 is the only place a full email gets handed to a model, so it's also where the prompt has to be the most disciplined about what it's allowed to claim.
System prompt
You are analyzing project emails for a delivery risk monitoring system. Given an email associated with a specific project, identify any explicit blockers, changed commitments, or unresolved approvals. For each finding, output the finding type, a supporting excerpt (verbatim or close paraphrase, under 25 words), and the source (sender and date). If a date is relative or unclear, mark it as unresolved rather than calculating a specific date. Output ONLY a JSON array of findings, no preamble or closing commentary.
Error handling, added to the same prompt: if the email contains no blockers, changed commitments, or unresolved approvals, return an empty array. If a date is vague (“early next week,” “soon,” “hard to say”), set date_status to “unresolved” and don't invent a specific date.
Sample run
Input — email from Priya Patel, Sept 8: “Heads up, the new mockups won't be ready until next Friday, not Monday like we said last week.”
[
{
"type": "changed_commitment",
"excerpt": "the new mockups won't be ready until next Friday, not Monday like we said",
"source": "Priya Patel, 2026-09-08",
"date_status": "resolved"
}
]
Output — one structured finding, grounded in a direct excerpt rather than a rewritten summary.
Why rules decide, not AI
Step 3 could have asked Gemini to judge whether a delay is a real risk. Instead, a rule compares the extracted date against the recorded deadline and dependency chain, and the rule decides the dates are inconsistent — Gemini's only job is explaining that conflict in plain language.
The owner confirms it, dismisses it, or asks for clarification. Only confirmed risks and outstanding review items make it into the weekly digest — and the workflow never changes an approved deadline on its own.
Intentional boundary: propose, never confirm
Automation removes the repetitive search-and-compare pass. It does not remove the owner's responsibility to decide what actually counts as a risk, or to catch a rule that's misfiring.
For testing inputs, I used the sample emails and edge cases the brief itself specified, because they were written to probe exactly the judgment calls this kind of prompt tends to get wrong.
Estimated impact (illustrative, pending pilot validation)
Adjust the assumptions to see how the estimate moves.
try it
That's roughly 3 hours a week returned to resolving risks instead of re-reading the same threads.
10 projects is one owner's current load — the same math scales with however many run through this pattern.
What I did not do
Full inbox scanning
Why rejected: broader coverage, but more unrelated information and a higher chance of matching a message to the wrong project.
Chose instead: designated Gmail threads explicitly tied to a project.
AI-judged risk severity
Why rejected: an LLM's opinion on how urgent something is, with no consistent standard across projects.
Chose instead: a rule compares signals to recorded deadlines; Gemini only explains the conflict.
Auto-updating the plan
Why rejected: a workflow finding a conflict isn't the same as that conflict being an approved decision.
Chose instead: proposed risks sit in a review queue until the owner confirms them.
Before & after
Metric
Before
After (Est.)
Avg. review time per project
30 min
12 min (−60%)
Weekly review time (10 projects)
5 hrs (300 min)
2 hrs (120 min)
Blocker visibility
Scattered across individual emails
Cross-checked against Notion automatically
Escalation consistency
Varies by owner judgment
Standardized review queue
10 × (30 − 12) = 180 minutes (~3 hours) recovered weekly. This estimate covers review time only and excludes setup and maintenance — a pilot would measure both, alongside missed risks, false alerts, and the time between a risk appearing in an email and reaching the owner.
03 · Testing
The short version: before this ever touches a real inbox, four scripted inputs check whether the model knows when to stay quiet.
The hardest test isn't catching a blocker. It's not inventing one.
It's easy to write a prompt that finds a blocker in an email that obviously contains one. The harder, more important question for something running unattended across 10 projects is whether it can tell the difference between “explicit” and “sounds like it could be a problem.”
Four test inputs — specified in the original brief — check exactly that, from a clean pass to a case designed to tempt the model into manufacturing a finding:
Click a test above to see its input and expected outcome.
The riskiest failure mode here isn't missing a real blocker. It's Test 4 — manufacturing a finding out of an email that says nothing has changed. A prompt that can't stay quiet isn't ready for an unattended inbox.
What happens when a finding doesn't clear the bar
Human fallback triggers
Ambiguous or unresolved dates in an email → the risk stays “unconfirmed” rather than being scored, flagged for owner review
A risk touches more than one project's dependency chain → routed to both owners before being marked confirmed
The owner dismisses the same type of finding 3+ times → flagged as a noisy rule, not a real risk, for the owner to review
None of these four tests have been run against a live Gemini endpoint yet — this is the validation protocol I'd run before connecting this to any real inbox, using the exact inputs and expected outcomes from the original brief.
04 · From prototype to team-ready
The short version: six workstreams — from a small pilot to full-scale rollout — separate this prototype from a monitor running across all 10 projects.
A 2–3 project pilot comes first — dismissal patterns show which rules to tune.
Rollout roadmapScroll to see all 6 workstreams →
01Pilot
Pilot
Run the workflow against 2–3 real projects with an engaged owner; confirm the collect → extract → evaluate → review loop holds up on real threads.
Planned
02Tune rules
Tune rules
Adjust the due-date and dependency comparison logic based on what the pilot surfaces, and address any finding type the owner dismisses repeatedly.
Planned
03Govern
Govern
Confirm handling for email content ingested into the extraction step, retention of proposed risks, and who can see review-queue entries across projects.
Planned
04Expand coverage
Expand coverage
Add designated Gmail threads for the remaining projects once the pilot's false-positive and false-negative rate is acceptable.
Planned
05Measure
Measure
Track review time per project, dismissal rate per rule, and the time between a risk appearing in an email and reaching the owner, against the 3-hour weekly estimate above.
Planned
06Scale
Scale
Reuse the same workflow configuration across all 10 concurrent projects; batch-test processing cost, delay, and failure rate before calling that volume supported.
Planned
If I had to prioritize two of these first, it'd be Pilot and Tune rules: dismissal patterns are the fastest signal for whether a rule is well-calibrated or just noisy, and there's nothing to tune without real threads to tune it against. Govern would run alongside Pilot, not wait until later, since this touches real project communications from the start.
What would remain human-owned regardless: confirming or dismissing every proposed risk, editing and sending the digest, any change to an approved deadline, and the judgment call on which of 10 projects needs attention first.
1
Evidence and owner review catch a misread before it becomes an official update.
2
The workflow proposes; it never confirms a risk or changes a deadline on its own.
3
Six workstreams separate this prototype from a monitor running across all 10 projects.
Reflection
The hardest part wasn't extracting signals from an email. It was deciding exactly where the rule stops and a person has to weigh in.
This prototype shows how I:
Draw a deliberate line between rule-based logic and AI judgment
Design fallback paths for the cases a prompt shouldn't guess at
Test for restraint, not just accuracy
Turn a manual weekly habit into a system built for a real rollout
This is exactly the kind of work I want to keep doing: finding where automation should stop and a person should decide, then building the review step that makes that boundary real. Solo, this is how I think. With a team, it's what I've already led — see the case studies above for what that looks like at scale.
A self-directed lab: two n8n workflows connecting HubSpot, Claude, Asana and Gmail that take a new SaaS client from a Closed Won deal to a reviewed kickoff plan — with a human approving every client message.
38n8n nodes across two connected workflows
5 of 5Test clients routed to the right outcome
10Real build problems traced to a root cause and fixed
0Client messages sent without a human pressing Send
The 30-second version: I turned the discovery-first approach from a real Asana rollout into an AI-assisted client onboarding system. A Closed Won deal in HubSpot triggers a welcome email and intake form. The client's answers get a green, yellow or red readiness rating from Claude, then a five-phase Asana plan built through the API and a drafted kickoff email. Nothing reaches a client until I review it and press Send. I tested it with five fictional clients and fixed 10 real build problems along the way.
When my organization replaced Microsoft Access with Asana, I worked directly with the Asana team to fit the tool into our project cycle. They didn't start by configuring anything. They started by asking how we ran projects — and through that discovery, we could see clearly how Asana would fit the company.
This lab rebuilds that experience from the other side of the table. I play the implementation consultant, rolling out Asana while running the rollout inside Asana.
What I learned in the real rollout
How the lab mirrors it
Discovery came before any configuration
The intake form is the discovery conversation, turned into a structured form
Each project became a checklist of tasks across 5 phases
Every plan uses the 5 PMBOK phases, with tasks that hold subtasks
The project description sat at the top, so everyone saw the purpose first
An AI-written project overview sits at the top of every Asana project
Timeline (Gantt) view showed the schedule
Due dates count back from the client's go-live date, ready for Timeline view
Discovery comes first. The tool comes second.
The problem
Handoffs lose details, and plans get built on guesses.
The handoff leaks. The move from sales to implementation is a common pain point where details get lost.
Onboarding starts with unknowns. It happens after the sale, so many intake answers are still “not sure.” A plan built on those gaps looks finished but isn't.
Speed can cost trust. AI can draft a plan and an email in seconds, but one wrong message to a brand-new client damages the relationship.
The goal: take a client from Closed Won to a kickoff-ready plan quickly, without losing the human judgment.
What I built
Two workflows, one hidden form field, two human reviews.
Both workflows run in n8n every 15 minutes. Step 1 starts when a deal reaches Closed Won and ends when the welcome email is sent. Step 2 starts when the client submits the intake form and ends when the kickoff or discovery email is sent. Status fields on the deal and the contact make sure each client is handled exactly once.
Step 1Closed Won handoff to intake invite
Deal moves to Closed WonSales updates the deal in HubSpot
Claude drafts a welcome emailPersonal intake form link, email prefilled
I review and sendSaved as a Gmail draft until I press Send
Deal marked as handledNext step: “Intake form sent,” plus the date
→
Client submits the intake formA hidden field sets Intake status to Submitted
→
Step 2Intake to plan and kickoff draft
Find the submitted intakeBuilds a clean client brief from HubSpot
Claude rates readinessGreen, yellow or red, with a reason
GreenYellow Full five-phase plan
Red Discovery call first
Asana project built through the APIAgenda and every open question in the kickoff task
Claude drafts the kickoff emailPlan link, a real date, 3 priority questions
I review and sendHubSpot first, then Asana, then the email
Human decision point — nothing reaches a client without it
The real workflows in n8n
Step 1: Closed Won handoff to intake inviteThree groups — find new Closed Won deals, get the client, then draft and human review — with a sticky note documenting purpose, steps, the human-in-the-loop rule and the handoff.Step 2: Intake to implementation plan and kickoff draftOne run built 1 Asana project, 5 phase sections, 20 tasks and 73 subtasks through the API — then stopped at a Gmail draft and a review packet.
Click any screenshot to enlarge it.
The stack
Tool
Role in the system
What I set up
HubSpot CRM
Source of truth for contacts and deals
10 custom contact properties, test contacts, Closed Won deals
HubSpot Forms
Client intake form
14-question form with a hidden Intake status field
n8n
Automation engine for both workflows
2 workflows, 38 nodes, scheduled every 15 minutes
Claude (Anthropic API)
AI engine for ratings, plans and emails
3 AI nodes with system prompts and structured output parsers
Asana
Implementation project tracker
Projects with phase sections, tasks, subtasks and due dates
Gmail
Client emails and internal review packets
Drafts for clients; review packets to me
Every tool ran on a free plan or an existing account; each test run cost a few cents of Claude API usage. I started on Gemini and swapped to Claude without changing any business logic.
How I built it
01Design the process
Discovery form, PMBOK plan shape, train-the-trainer model, and a draft-only email rule.
02Build the planning flow
Wired HubSpot, Claude and Asana, then fixed each error until the first full plan came through.
03Improve the outputs
Capped emails at 3 questions, added a real kickoff date, and moved every question into Asana.
04Build the sales handoff
Closed Won trigger, intake form with a hidden field, and an automatic handoff to Step 2.
05Test and document
Four more clients across all three paths, clear workflow names, and notes inside each workflow.
I went step by step on purpose, learning each piece before moving on and testing one client at a time, with Claude as my build partner.
What the client sees
Three touchpoints, each one reviewed first.
From the client's side, onboarding is a warm welcome, a 10-minute form where “not sure” is a good answer, and a kickoff email built from their own words. Here's that journey for Brightpath Youth Alliance, the yellow client.
1 · The welcome emailDrafted by Claude the moment the deal hit Closed Won, with a personal intake link. Saved as a draft until I sent it.2 · The intake form14 questions, consolidated to fit the free plan. The email is prefilled, and a hidden field hands the client to Step 2 on submit.3 · The kickoff emailTheir goal in their words, two early priorities, a real kickoff date and three questions — including that go-live falls on Presidents' Day.
Test addresses in the form are redacted. Brightpath's draft still shows a robot-style date (2027-02-15) — the repeat catch that's next on the rules list.
The readiness check
Green gets a plan. Red gets a conversation.
Claude rates every intake before planning anything, and gives a reason. The rating decides what the client receives, so the system never builds a full plan on guesses.
GreenIntake is complete
A full five-phase plan and a kickoff email with a real meeting date.
YellowSome answers unknown
A full plan with every guess clearly labeled as an assumption.
RedMostly “not sure”
The Initiating phase only, and a discovery call within 5 to 10 days.
Inside a green client's plan
What Lumen Creative Agency got in Asana.
Lumen rated green: a complete intake for moving 30 users from Trello and spreadsheets into Asana. Without anyone touching Asana, the workflow built the whole project — and the kickoff task carries every open question, so nothing lives only in email.
The overview comes firstClaude's project description sits at the top: 30 users, the brief-to-launch lifecycle, and a 90-day success measure of no missed client deadlines.The kickoff task holds every questionThe agenda, the three questions sent ahead, and what's still to cover at kickoff — answered questions can become checked-off subtasks.Five PMBOK phases, ready to run21 tasks with 3–4 subtasks each, from a workflow workshop and Trello migration to train-the-trainer and a 90-day success review.Dates counted back from go-liveEvery task has a due date worked back from the client's go-live, so the plan opens straight into Timeline view.
Inside a red client's path
What Oakline Logistics got instead.
Oakline's intake came back almost entirely “not sure,” so the system didn't pretend to plan an implementation. It built only the Initiating phase, scheduled a discovery call, and drafted a warm invitation with three questions to think about first.
Initiating only — five discovery tasksIdentify the sponsor, document how work is tracked today, and define success and a go-live date. The discovery-call task holds the agenda and every open question.A discovery call, not a planThe draft quotes Jordan's own words (“more organized”), invites the owner to join, and says “not sure yet” is completely fine. It waits in Gmail until I press Send.
What this run taught the system
This is the run my review flagged: with no go-live date, a 90-day fallback put the discovery call on November 24 — seven weeks out. I re-anchored plans to today when go-live is missing and added a rule for a first meeting within 5 to 10 days. The next red client's call landed 6 days out.
Test clients
Five fictional clients, five fitting outcomes.
I wrote five realistic clients and ran each one end to end, playing sales, the client and the reviewer. Pick a client to see what the system produced and what my review caught.
Riverstone Property Services
Dana Morales, Operations Director
Scenario
Moving from Microsoft Access to Asana, 45 users, and the database expert retires in March.
What the system produced
A full five-phase plan and a Tuesday-morning kickoff.
Star moment
Moved knowledge capture early, because the Access expert retires in March.
What my review caught
Nine questions was too many for a welcome email, there was no specific kickoff date, and a pilot landed on Christmas Day.
All clients, contacts and companies are fictional. Test emails were routed to my own inbox.
Human in the loop
Nothing reaches a client until a person presses Send.
The AI prepares and a human decides. These design choices are what make the speed safe to use with real clients:
Draft only
Both workflows save client emails as Gmail drafts and never send them.
Review in order
HubSpot first (the facts), then Asana (the plan), then the email (the message), so errors are caught at the source.
Internal until reviewed
The Asana project stays internal until I invite the client as a guest.
No invented facts
Claude may use only the client's answers and must label every guess as an assumption.
Honest gaps
Missing information becomes open questions, never filler.
Handled once
Each deal and intake is marked after processing, so no client gets duplicate emails or projects.
The review packet
Every run emails me a review packet before anything goes to the client: a client snapshot, the readiness rating with its reason, flags to check, the questions sent and still open, the assumptions the AI made, and my review steps in order — HubSpot, then Asana, then the email.
Oakline's review packetRed, with a reason: users, lifecycle, approvals, go-live and stakeholders were all unknown. It flagged that Jordan may lack decision authority and listed every assumption — including that later phases wait for discovery.
How review made the AI better
Review→Spot a pattern→Update the rule↺
What my review caught
The rule I added
A pilot scheduled on Christmas Day
Avoid weekends and major holidays — later runs avoided a US holiday on their own
Nine questions in one welcome email
Cap client emails at 3 priority questions, chosen during planning so Asana, the email and the review packet match
No specific kickoff date or start time
Always propose a real meeting date
A red client's discovery call 7 weeks out
Anchor to today when go-live is missing; first meeting within 5 to 10 days
Robot-style dates (2027-02-15), twice
Next rule to add: write dates in words. A repeat catch means fix the rules, not the draft
Problems solved
Ten real build problems, each traced to a root cause.
01HubSpot blocked new fields at “11 out of 10”The free plan allows 10 custom properties and HubSpot had auto-created 2. I archived those and consolidated 20 intake fields into 10.Working within platform limits
02Claude node failed: “API key is invalid”The stored credential was out of date. I created a fresh key and updated it in n8n.Credential management
03Asana rejected tasksThe task API needs the workspace even when a section is given. I added the workspace ID to every request.Reading API errors
04Asana returned “too many requests”Ten tasks sent at once hit the rate limit. I sent one request every 0.7 seconds with 3 automatic retries.Rate limits and throttling
05Phases appeared out of orderSections were created in parallel. I created them one at a time.Order of operations
06Plans cut off mid-answerClaude hit its output limit. I raised it to 16,000 tokens and tightened the plan rules.Token limits and prompt design
07HubSpot sign-in blocked in HTTP nodesn8n's managed HubSpot sign-in only works in native nodes. I swapped 3 raw API calls for native HubSpot nodes.Connector versus direct API
08The form showed the last client's detailsA HubSpot tracking cookie remembered the last visitor. I tested each client in a fresh incognito window.QA and browser behavior
09A discovery call landed 7 weeks outA 90-day fallback pushed every date late. Plans now anchor to today when go-live is missing.Logic review from test results
10A pilot scheduled on Christmas DayThe AI's date planning ignored holidays. I added a rule to avoid weekends and major holidays.Human review improving the AI
Under the hood
Direct API calls where they fit, native connectors where they didn't.
I built the Asana project through its REST API with HTTP Request nodes, throttled with retries. For HubSpot, I first configured raw calls, then switched to native nodes when n8n's managed sign-in required it.
Method
Endpoint
Purpose
GET
/api/1.0/workspaces
Find the Asana workspace ID, by hand in the browser
POST
/api/1.0/projects
Create each client's project with its overview
POST
/api/1.0/projects/{id}/sections
Create the 5 phase sections, in order
POST
/api/1.0/tasks
Create tasks with due dates, notes and section placement
POST
/api/1.0/tasks/{id}/subtasks
Create subtasks under each task
PATCH
/crm/v3/objects/deals/{id}
Write “Intake form sent” to the deal, later via a native node
Every POST sent a JSON body — for example, {"data": {"name": "Planning"}} to create a section. Credentials live only in n8n's credential manager.
What I did not do
✕Let the AI send emails
One wrong message damages a new client relationship
✓Draft-only emails and a review packet before every send
✕A full plan for every client
A plan built on “not sure” only looks finished
✓A readiness check: red clients get a discovery call first
✕Let the AI fill in the blanks
Invented details become the client's problem later
✓Labeled assumptions and open questions in the kickoff task
✕Lock the logic to one AI model
Models change faster than onboarding processes
✓Swapped Gemini for Claude without changing the business logic
Result
It works end to end, and it keeps getting better.
The system runs today from a Closed Won deal to a reviewed kickoff plan. Each of the five test clients received a different, fitting outcome: green clients got full plans, the yellow client got a plan with six labeled assumptions, and red clients got a discovery call within a week. HubSpot's timeline shows the whole journey for each client — contact created, deal won, form viewed, form submitted, plan drafted.
Every repeated review edit became a rule, so the next client's draft needs fewer of them.
What I'd measure next
Before using this with real clients, I'd track first-draft approval rate, edits per client and time saved per client — and add an error workflow that emails me if any step fails, automatic Asana guest invites after my approval, and a Slack or Teams approval option alongside email.
Mapped to the PMI-CPMAI methodology
I–IIBusiness & data
Defined the problem, success criteria and the human review requirement, and what client data HubSpot holds.
IIIData preparation
Consolidated 20 fields into 10 properties and built clean client briefs.
IVModel development
Wrote the prompts, rules and structured JSON outputs for Claude.
VEvaluation
Tested 5 clients across green, yellow and red paths and reviewed every output.
VIOperationalization
Scheduled workflows, handled-once markers, and a feedback loop from review to rules.
03 · 224 Tasks, Learned in 30 DaysOperational Enablement
04 · Call Recap to Tone-Guided Follow-Up EmailAI Automation
05 · Email Threads to a Weekly Risk DigestRisk Monitoring
06 · The Pipeline That Protected 30+ Grant ProgramsProgram Delivery
07 · Closed Won Deal to Reviewed Kickoff PlanSaaS Implementation
Connect on LinkedIn ↗Opens in a new tab
01 · Change Enablement
Decision Intelligence Tool
A 480-combination decision matrix that turned a three-system enrollment process from a 30-minute manual calculation into a 5-minute guided form — with 12 staff trained to full adoption in two sessions.
83%faster case resolution
02 · UX Insights
3-Year CX Analytics Initiative
Turned raw survey comments from 900+ volunteer reviewers into a categorization framework held constant for four years — surfacing the pain point that became a one-click Download All button in 2024.
1recommended feature shipped
06 · Program Delivery
The Pipeline That Protected 30+ Grant Programs
Replaced an hour of manual, error-prone comparison with an automated Power Query pipeline that flags every mismatch — zero helpdesk escalations from data errors since deployment.
74%cut in processing time
04 · AI Automation
Call Recap to Tone-Guided Follow-Up Email
A self-directed n8n + Gemini workflow that drafts Gmail follow-ups from call recaps. During testing, its draft-only safeguard caught an identity inconsistency before it could reach a client.
Draft-onlyhuman-in-the-loop safeguard
05 · Risk Monitoring (In Progress)
Email Threads to a Weekly Risk Digest
A self-directed n8n + Gemini workflow that cross-checks Gmail against Notion project boards to catch delivery risks before the weekly review — and knows when to leave a date unresolved rather than guess.
3 hrsrecovered weekly across 10 projects
03 · Operational Enablement
224 Tasks, Learned in 30 Days
Split a 224-task peer review project into a two-week, five-phase onboarding program — lecture, system, hands-on practice, feedback — then handed delivery to managers through train-the-trainer sessions.
30 daysto full competency, down from 60–90+
07 · SaaS Implementation
Closed Won Deal to Reviewed Kickoff Plan
Two n8n workflows connect HubSpot, Claude, Asana and Gmail: a Closed Won deal triggers an intake form, Claude rates the client's readiness, and a five-phase Asana plan and kickoff email wait as drafts for human review.
5 of 5test clients routed to the right path
This one's shared privately
Decision Intelligence, CX Analytics, and Data Quality are shared with organization-identifying details removed, so I walk people through them directly rather than posting them publicly. Reach out and I'm happy to share.
“I can never find my assigned files — I have to click through four different tabs every single review cycle just to see what's mine.”
Illustrative example, written to match the tone of real feedback — not an actual reviewer quote.