Applied Patterns · Zaliznyak Group

Seven ways AI agents make a difference for teams that need hours back.

What follows is a set of applied patterns for putting AI agents to work on real business problems. These are not delivered case studies. They are the patterns I return to when scoping automation work, with a look at how the architecture holds together and what the return typically looks like in practice.

Pattern 01

The Reservation and Inbound Response Agent

Every business with a customer-facing phone line, chat, or web form is losing revenue to inbound requests that go unanswered outside business hours, sit too long in a queue, or reach the wrong person. This pattern gives the team a reliable way to capture, sort, and respond to inbound demand at any hour of the day.

Inbound demand does not respect business hours. Appointment calls, reservation requests, quote inquiries, and support tickets arrive throughout the day and night. The people who answer them work in shifts. What happens in the gap is predictable. Calls go to voicemail and never get returned. Web form submissions sit overnight and lose to whoever answers first the next morning. A support ticket lands in the wrong queue and takes three days to reach the right person.

The cost is quiet but real. In most businesses nobody owns the metric for missed inbound, so nobody measures it. Every operator recognizes the pattern anyway. A missed reservation at 8pm is often a booking that never gets made. A quote request left overnight loses to a competitor who answered inside the hour. Front desk staff spend the first two hours of every morning digging out from a backlog they did not cause.

An agent sits at the front of the inbound channel, whether that is a phone line, a chat widget, or an email inbox. It answers the first interaction. It captures what the person wants through natural conversation. Then it does one of three things. It handles the request directly when it can. It routes the request to the right queue with full context attached when a human should take it from there. It escalates immediately to a live person when the situation calls for it.

Inbound customerEXTERNALIntake channelPhone · Chat · Email · FormAgent coreIntent · ClassificationRequest type?DECISIONAuto-completeBook, schedule, confirmRoute with contextQueue + transcriptEscalate liveHuman handoff, warmSIMPLESTRUCTUREDURGENTScheduling systemCRM / ticket systemLive coordinatorEXTERNALHUMAN REVIEW LOOP

The key architectural choice is that the agent handles what it handles well and hands off cleanly for everything else. Returning customers booking their usual appointment get an immediate confirmation. Complicated or unfamiliar requests get routed to the right human with the full conversation transcript already attached. Emergencies trigger a live handoff on the spot. This is what separates an agent that gets adopted from one that gets turned off after two weeks of missed handoffs.

How the math typically works. Four separate revenue streams tend to move when a business puts this pattern in place. Missed inbound gets recovered and converted. No-show rates drop because reminders and confirmations happen without human intervention. Downstream administrative tasks like insurance verification or claim work get automated. And post-visit or post-purchase follow-ups get sent consistently instead of when someone remembers. The numbers below reflect a primary care clinic with 2 to 3 physicians, 800 to 1,200 monthly inbound calls, and $235 average revenue per visit. The methodology scales up or down to any team with an inbound funnel.
Time Recovered
80+ hrs
per month, freed from inbound triage and follow-up
Net Monthly Gain
$15K
after all subscription and operating costs

For a mid-size clinic, that is roughly the equivalent of a second full-time front desk hire, without adding a second full-time front desk hire.

Stack
Twilio for the phone line and SMS. Whisper for turning speech into text the agent can work with. LangChain for orchestration and intent routing. Anthropic Claude for the conversation itself. Direct integrations to whichever scheduling system the team already runs, whether that is Athena Health, Epic, Cerner, or something lighter. A small Flask review interface for human sign-off on the small percentage of interactions that are not clear-cut.
Pattern 02

The Reporting and Update Agent

Every leadership team runs on regular updates: the weekly sales pipeline snapshot, the monthly financial roll-up, the quarterly commercial scorecard. Someone spends hours pulling data from three or four systems, reconciling small inconsistencies, and writing the narrative around the numbers. This pattern gives that time back.

Leadership updates are a tax on the smartest people in the organization. The analyst or ops manager who owns the weekly commercial report typically spends four to six hours every Monday pulling from the CRM, exporting to the BI tool, cross-checking against last week, formatting the deck, and writing the narrative summary. By the time the update lands in front of leadership on Tuesday, the data is already three days old and the analyst has spent a fifth of their week on report production instead of analysis.

The report gets built, the meeting happens, and the cycle starts again the next week. Nobody questions the workflow because everyone accepts it as the cost of running a data-driven business. What is actually being lost is the analytical thinking that a senior analyst could be doing if they were not producing the same report every week.

An agent runs on a scheduled cadence, weekly or monthly, and pulls structured data through APIs from the source systems the team already runs. It applies a defined set of transformations and comparisons against the prior period. A language model layer generates a narrative summary in the organization's normal voice, highlighting movement worth noting and framing the numbers with context. The draft update lands in a Slack channel or an email inbox where the owner reviews it, adjusts the framing where needed, and sends it to leadership.

CRMBI / WarehouseFinanceTicketing / OpsSchedulerWeekly · MonthlyAgent coreTransform · NarrateDraft updateNarrative + chartsOwner reviewSIGN-OFFLeadershipREADER

The key architectural choice is that the agent produces a draft, not a final. Human review before distribution catches hallucinations, adds context the systems do not have, and preserves the accountability that makes leadership trust the report. This is what separates an agent that gets adopted from one that gets turned off after a bad Monday morning.

How the math typically works. Two analysts each spending four hours per week compiling and formatting the weekly commercial update, at a fully loaded rate of $90 per hour. Reports become faster to produce and are therefore produced more often. The real value is not just the hours saved. It is the shift in what those analysts do with their week when they are not building the same deck every Monday.
Time Recovered
32 hrs
per month, freed from report production
Annual Value
$35K+
in analyst capacity redirected to analysis

For a typical commercial ops team, that is roughly one senior analyst who stops producing reports and starts producing the insights leadership actually wants from them.

Stack
Python for orchestration, or a low-code layer like n8n if the team prefers visual pipelines. Anthropic Claude for the narrative writing. Direct API connections to whichever CRM, BI tool, and finance system the team runs. Airflow, Prefect, or a simple cron for the scheduling layer. Slack, Teams, or email as the distribution channel.
Pattern 03

The Research and Monitoring Agent

Every team needs to stay on top of something external. Competitor moves, industry news, regulatory changes, key customer signals, mentions of the brand. Doing this manually means someone spends a chunk of their week reading, filtering, and forwarding. This pattern turns that into a scheduled digest.

Someone on every team has an unofficial job that is not in their job description. They watch the competitor sites, read the industry newsletters, monitor the LinkedIn feed for key customer announcements, and forward anything worth knowing to the group. It is the kind of task that never quite makes it onto a to-do list because it is always in the background, always half-done, and always subject to being dropped the moment anything urgent comes up.

The cost of doing this poorly is not visible day-to-day. It shows up quarters later, when a competitor launches something the team should have seen coming, or when a regulatory change catches the compliance team off guard, or when a key account signals distress on LinkedIn three weeks before they churn.

An agent monitors a defined set of sources on a scheduled cadence, whether that is hourly for high-signal feeds or daily for lower-priority ones. It fetches new content, filters against relevance criteria the team has defined, and summarizes the material that made it through the filter. The output is a digest posted to a channel or emailed to the team, structured so that a busy reader can skim the headlines and dive deep only on the items that matter to them.

Competitor sitesNews feedsLinkedInSEC filingsPodcastsFetch on scheduleHourly · DailyRelevance?DECISIONAgent coreSummarize · RankDigestStructuredRELEVANTDISCARDTeam membersREADERS

The key architectural choice is what the agent chooses not to include. A digest that surfaces everything becomes noise the reader learns to skip. A digest that surfaces only what the team defined as relevant, and does so consistently, becomes the first thing they read on Monday morning. The relevance filter is where the pattern earns its keep.

How the math typically works. Two team members currently spending three hours per week each on informal monitoring across sources, at a loaded rate of $75 per hour. Most of that time is scanning and filtering rather than reading anything important. The agent absorbs the scanning work and delivers the small percentage that actually matters directly to the team.
Time Recovered
24 hrs
per month, freed from manual monitoring
Annual Value
$22K+
in scanning time redirected to action

Beyond the direct hours, the change is that the team stops missing things. Signals that used to surface a quarter late show up in the Monday digest instead.

Stack
Python for orchestration and source fetching, or Zapier for teams that want a lower-code path. RSS parsers and web scraping libraries for pulling from public sources. Anthropic Claude for summarization and relevance filtering. A vector database like Pinecone or a lighter alternative for deduplication across sources. Slack or email as the delivery channel.
Pattern 04

The Meeting Notes and Action-Item Agent

Meetings generate decisions and commitments. Whether those commitments turn into action depends on whether someone captured them, assigned them, and followed up. This pattern makes that whole loop automatic.

A meeting ends. Someone said they would send the deck by Thursday. Someone else agreed to loop in legal on the contract. A third person committed to opening a JIRA ticket for the design change. If nobody wrote those down, they will not happen. If somebody did write them down, they wrote them in a notebook or a Google Doc that nobody looks at again. Two weeks later the same meeting happens with the same commitments made by the same people.

Every operator has watched this cycle. The meeting notes exist. The action items exist. What does not exist is the connective tissue between the meeting and the tools where work actually happens. That gap is where commitments go to die.

An agent ingests the meeting content, whether that is a live transcript from Zoom or Teams, an uploaded recording processed through Whisper, or a text transcript from a note-taker tool. It extracts the decisions made, the action items committed to, the owners assigned, and the deadlines mentioned. It writes those into the project management system as new tasks with the right owner and due date. It sends a summary to the meeting attendees so everyone sees what got captured and can flag anything that was missed.

Meeting attendeesHUMANSLive transcriptZoom · Teams · MeetRecorded audioVia WhisperNote-taker textOtter · FirefliesAgent coreExtract · Assign ownersSet due datesProject systemDoc / wikiSummary to teamSLACK · EMAIL

The key architectural choice is that the tasks land in the tool where work already happens. A summary emailed to the team is nice. A task appearing in Linear with the owner assigned and the due date set is the thing that actually changes behavior. This is the difference between an agent that produces artifacts and an agent that produces outcomes.

How the math typically works. A team of eight averaging four meetings per week each, with a rough estimate that 15 minutes of post-meeting admin per meeting gets skipped or done poorly. That is two hours of unpaid tax per person per week, plus the harder-to-measure cost of dropped commitments and repeated conversations. This pattern absorbs the admin and preserves the commitments.
Time Recovered
64 hrs
per month across an 8-person team
Annual Value
$60K+
in meeting admin plus recovered follow-through

The harder-to-quantify win is that meetings start ending with real accountability instead of a shared assumption that someone else is writing it down.

Stack
Otter, Fireflies, or Fathom for the meeting capture layer, or Whisper if the team wants to process recordings directly. Anthropic Claude for extraction, decision parsing, and summary writing. Direct API integrations to whichever PM tool the team runs, plus Notion or Confluence for the long-form record. Slack for team summaries.
Pattern 05

The Project Status Agent

Every team wastes time answering "what is the status of X." Standups exist for this. Weekly status decks exist for this. Slack updates exist for this. This pattern replaces most of that overhead by turning the tools where work actually happens into a living status feed.

Status is a paradox in most teams. Everyone wants to know where things stand. Nobody wants to write the status update. The information exists in the project tool, in the code repository, in the ticket queue, in the design file. Assembling it into a coherent picture takes the manager or PM a couple of hours every week, plus another few hours of meeting time to communicate what could have been read in five minutes if it were written down.

Async status updates in Slack are the current best answer, but they push the writing work onto every individual contributor. What most teams actually want is the assembled picture without anyone having to assemble it.

An agent reads state changes across the tools where work happens: task movement in Linear or JIRA, pull request activity in GitHub, status changes in Asana, comments and mentions in Slack. It rolls that up on a defined cadence (daily standup, weekly team update, monthly leadership roll-up) into a written status that reads like a human wrote it. It highlights what shipped, what is blocked, what is stale, and what needs a decision. The manager reviews and edits the draft before it goes out, or the agent posts it directly for lower-stakes updates.

Project toolCode repoChat / mentionsDesign / specCadence triggerDaily · WeeklyAgent coreRoll up · CategorizeShipped · Blocked · StaleDraft statusStructured updateHighlights + risksManager reviewOPTIONALTeam / leadershipDELIVERY

The key architectural choice is what the agent categorizes. A dump of everything that happened this week is not a status update. A structured breakdown of what shipped, what is blocked, what has gone stale, and what needs a decision is a status update. The categorization is where the pattern becomes useful instead of just informative.

How the math typically works. A team of ten with a PM or engineering manager spending three hours per week compiling status updates and running standups that exist primarily to share status. Individual contributors also spend roughly 20 minutes per week writing async updates. At loaded rates of $95 per hour for the manager and $70 for ICs, this pattern pays back its own build cost in the first quarter.
Time Recovered
27 hrs
per month across the team
Annual Value
$28K+
plus fewer meetings that exist only for status

Standups often survive. But they change from "everyone says what they are working on" to "we all read the update in advance and only talk about what needs discussing."

Stack
Direct API integrations to Linear, JIRA, GitHub, Slack, and Notion. Python for orchestration, or n8n for teams that prefer visual pipelines. Anthropic Claude for the narrative generation and categorization. A simple state store like Postgres or Redis for tracking what has changed since the last update. Slack, email, or a dashboard as the delivery surface.
Pattern 06

The Sales Pipeline and Follow-Up Agent

Every sales team has deals that went cold and never got re-engaged. This is not because the reps do not care. It is because the mechanical work of writing personalized follow-ups at scale is impossible to do well while also selling. This pattern handles the mechanical part and gives reps back their time for the human part.

In any sales team of five or more, look at the CRM. There is a long tail of opportunities that have gone dark. Someone had a good call two months ago, sent a proposal, and never heard back. The rep meant to follow up. Then a bigger deal came in and the follow-up got pushed. Then another one. The lead sits in the pipeline generating a false sense of activity that is really just neglect.

Managers know this happens. Reps know this happens. The fix is not another sales enablement platform. The fix is somebody watching every stalled deal, writing a smart re-engagement touch based on what actually happened in the conversation, and either sending it directly or handing the rep a draft they can send in thirty seconds instead of thirty minutes.

An agent reads the CRM daily and identifies opportunities that have gone stale by the team's own definition. For each stale opportunity, it pulls the conversation history from the CRM notes, email history, and call transcripts. It generates a personalized follow-up draft that references specific things from the last conversation, proposes a specific next step, and matches the rep's voice as closely as possible. Depending on the team's preference, it either sends the touch directly for lower-value opportunities or drops it into the rep's inbox as a one-click send.

CRMEmail historyCall transcriptsStale?Team-definedDECISIONAgent coreDraft re-engagementYESAuto-sendLower-value tierRep reviewOne-click sendProspectRE-ENGAGED

The key architectural choice is the auto-send tier versus the rep-review tier. Auto-sending every touch removes the rep entirely and produces generic outreach that damages the relationship. Requiring rep review on every touch reintroduces the friction that killed follow-up in the first place. The right pattern draws the line by opportunity value: below a threshold, agent sends. Above, agent drafts and rep sends.

How the math typically works. A five-rep sales team where each rep has roughly 40 stalled opportunities in the pipeline at any time. Historical re-engagement conversion runs about 8% when done well, versus 1-2% when the touch is generic or nonexistent. Even a modest recovery lift at typical B2B deal values compounds fast. Time returned to reps for actual selling is the leading edge; recovered revenue is the trailing edge.
Time Recovered
40 hrs
per rep per month, freed for real selling
Pipeline Impact
6-8x
lift on re-engagement conversion vs. generic touch

The strategic change is that stalled opportunities stop being pipeline furniture. Every deal in the CRM either gets moved forward or gets closed out honestly, and the manager finally has a pipeline number they trust.

Stack
Direct API integrations to the CRM and to the email system, whether that is Salesforce plus Outlook or HubSpot plus Gmail. Gong or Chorus for call transcript context if the team uses one. Anthropic Claude for the drafting layer, tuned on prior successful outreach from the rep or team. A lightweight queue and review interface for the rep-facing side, typically a Slack integration or an inbox extension.
Pattern 07

The Onboarding and Knowledge Agent

Every business has the same set of questions asked repeatedly. New hires ramping up. New customers finding their way. Existing team members forgetting where the document is. Someone always answers, but that someone burns hours answering the same thing over and over. This pattern gives that time back.

Institutional knowledge lives in three places. Documents nobody reads, the memory of one senior person on the team, and the muscle memory of processes that were figured out once and never written down. A new hire asks a question in Slack. Three people answer. The answers do not fully agree. The right answer sits in a Notion page from 2023 that nobody remembers exists.

The customer version of this problem looks different. A customer emails support asking something that is documented in the help center. Support answers, copies the link, moves on. The next customer asks the same question the next day. Multiply that by hundreds of interactions and the pattern becomes obvious: the same knowledge is being surfaced repeatedly through the highest-cost channel available.

An agent has read access to the team's or company's documented knowledge: the wiki, the help center, the SOP library, the onboarding materials. When a question arrives through Slack, email, chat, or a portal, the agent retrieves the relevant sources, answers in natural language with a link back to the original document, and logs the interaction. When it does not know the answer, it says so clearly and hands off to a human, then learns from what the human said so the next similar question gets answered correctly.

Question sourceHIRE · CUSTOMER · TEAMIntake channelSlack · Email · PortalAgent coreRetrieval + generationKnowledge baseNotion · Confluence · Help center · SOPsConfident?DECISIONAnswer with sourceCited responseHuman expertESCALATEYESNOHUMAN ANSWER LEARNED · KB UPDATED

The key architectural choice is that the agent is honest about what it does not know. An agent that hallucinates confident answers to questions it cannot actually answer becomes worse than useless: it becomes actively harmful. An agent that says "I do not have a good answer, let me connect you with someone who does" preserves trust. The learning loop, where human answers get folded back into the knowledge base, is what turns this from a static Q&A tool into an actual asset.

How the math typically works. A 50-person company where senior team members collectively field roughly 200 internal questions per week, at an average of 6 minutes per response including context-switching cost, at a loaded rate of $95 per hour. Separately, a customer support team handling 400 inbound tickets per week where 40% are covered by existing documentation. Both flows compound. The agent handles the well-documented cases and hands off the harder ones cleanly.
Time Recovered
80+ hrs
per month across internal + customer flows
Annual Value
$90K+
plus faster onboarding and better customer response times

Beyond the direct hours, the compounding win is that the knowledge base finally gets used. Documentation stops being write-only and starts being the actual source of truth the team runs on.

Stack
A vector database like Pinecone, Weaviate, or a Postgres extension like pgvector for retrieval across the knowledge sources. Direct API integrations to Notion, Confluence, SharePoint, or Zendesk for the source documents. Anthropic Claude for the answer generation with source citations. Slack, Zendesk, or a web widget for the intake interface. A simple review queue for capturing human answers into the KB when the agent escalates.

Have a problem worth solving?

If one of these patterns looks like a problem your team is living with, or if the one you need is not on this list, I would like to hear about it.

Get in touch