AI idea: automatic weekly overview of leads from CRM to email
Sales teams often work diligently with CRM, but the regular weekly lead overview is paradoxically often a weak spot. The data is in the system, but someone still has to go through it manually, select the important changes, write a summary, and send it to the right people. This is exactly where a small, well-defined AI project makes sense: automatically retrieve relevant leads from the CRM every week, convert them into a readable summary, and send it by email.
This is not about a futuristic platform or a large-scale transformation of the sales department. On the contrary: the goal is a feasible MVP that you can build within a few hours to days, if you already use a CRM with an API and a standard automation tool. We will practically demonstrate a solution built on HubSpot CRM, Make, OpenAI API, and Gmail or Microsoft 365. However, the same principle can also be transferred with minor adjustments to Pipedrive, Salesforce, or other CRMs.
The advantage of this type of project is threefold. First, you reduce the time sales or management spends manually preparing the report. Second, you unify the structure of information: every week, an email arrives with the same sections and the same logic. And third, you add an AI layer where it is truly useful: not for inventing data, but for summarization, prioritization, and converting structured fields into natural language.
If you deal with similar automations more often, the AI workflow topic hub at aivyber.cz may also be useful. For broader context on working with tools, I also recommend thematically related articles and overviews within the AI automation content on aivyber.cz. In this text, however, we will stay exclusively with one specific project that should function as a usable MVP once completed.
Introduction

The typical situation looks like this: new leads are added in the CRM, some move to the next stage, others stagnate, and some have incomplete data. The sales manager wants to quickly know every week what happened, what the priority is, and where the risks are. Instead of exporting to CSV, manually filtering, and writing comments, this flow can be automated.
In this project, AI does not replace the CRM or the salesperson. Its role is precisely defined: it receives a prepared list of leads and creates a brief, consistent, and readable overview from it. The deciding logic of what belongs in the overview remains in the workflow rules. This reduces hallucinations and unwanted model creativity.
The practical approach is simple: first clarify the scope, then prepare filters in the CRM, then create a scenario in Make, generate the text via OpenAI, and finally send the email. Each step below includes a specific input, expected output, and success metric so that it is possible to continuously verify that the project is actually working.
Project goal

The goal is to build an automation that once a week, without manual intervention, performs four activities: loads new or changed leads from the CRM for the last seven days, prepares their structured list, creates a clear text summary from it using AI, and sends the result by email to selected recipients.
A functional MVP should meet these conditions: the email arrives every week at the same time, contains the number of leads, a breakdown by status, a list of the most important items, and a short recommendation on what to focus on. At the same time, it must not add information that is not in the CRM. If some data is missing, this must be explicitly stated in the summary as a limitation.
As a practical goal, set for example this result: “Every Monday at 8:00, an email with the subject Weekly Lead Overview is sent to the sales manager, summarizing all leads created or updated since last Monday, highlighting the five most important ones, and listing leads without a phone number or without an assigned owner.” That is already a sufficiently specific brief for implementation.
Prerequisites

Before you start building the workflow itself, verify that you have the technical minimum available. In this guide, we will assume the HubSpot CRM, because it offers clear contact properties, lists, and official modules in Make. If you use another CRM, the process remains similar, but field names, endpoints, and menus may differ.
You will need an account in Make, access to the OpenAI API, and a mailbox in Gmail or Microsoft 365 Outlook. In HubSpot, prepare at least these fields: createdate, hs_lastmodifieddate, lifecyclestage, firstname, lastname, email, phone, hubspot_owner_id, and optionally custom fields such as lead_source or budget_range.
A process prerequisite is also important: you must know who the email is sent to and what structure it should have. Without that, you may create a technically functional automation, but a practically unusable output. So set aside ten to fifteen minutes at the beginning and write down exactly what the recipient should learn within the first minute of reading the email.
Implementation steps
Step 1: Define the exact content of the weekly overview
What and why: Before involving the API and AI, you need to clearly define what the report should contain. Without this phase, you will later have to fix the prompt, filters, and lead selection logic in a complicated way. The goal is to turn the vague request “send a weekly overview” into a measurable structure of data and text.
How exactly: Open a simple document or spreadsheet and create four email sections: Summary, Top leads, Data risks, and Actions for next week. Then add which fields they will be populated from. For example, Summary will be based on createdate and lifecyclestage, Top leads on budget_range and lead_score, Data risks on missing values in phone and hubspot_owner_id.
Specific input: a list of fields in the CRM, for example firstname, lastname, email, phone, lifecyclestage, lead_source, hubspot_owner_id, createdate, hs_lastmodifieddate.
Specific output: a report specification, for example: “Include all leads created or changed in the last 7 days; list top 5 by lead score; list leads without a phone number; conclusion max. 120 words.”
Success metric: once completed, you can explain in one sentence what data the report contains and what questions it answers for the recipient. In practice: a maximum of 6 sections and a maximum of 10 fields used in the MVP.
Once you have a fixed brief, it is natural to follow up by preparing the data in the CRM. This reduces the risk that AI will summarize incomplete or incorrectly selected records.
Step 2: Prepare a filterable view or list of leads in the CRM
What and why: AI should work only with relevant leads. Therefore, it is better to limit the input already in the CRM and not send everything to the model. You get lower costs, more stable output, and clearer control. In HubSpot, you can achieve this using a list or directly through filters in the API query.
How exactly: In HubSpot, go to CRM > Lists and create an active list. Set the conditions for example like this: Create date is less than 7 days ago OR Last modified date is less than 7 days ago. Add another condition if you want only sales leads, for example Lifecycle stage is any of Lead, Marketing Qualified Lead, Sales Qualified Lead.
If you do not want to use a list, you can enter the same logic in Make via the HubSpot Search for CRM Objects module. There you enter properties and filters manually. For a beginner, however, a list in HubSpot is clearer because it can be easily checked visually.
Specific input: filter in HubSpot: createdate >= [today-7 days], lifecyclestage in [lead, marketingqualifiedlead, salesqualifiedlead].
Specific output: a list “Weekly Lead Summary Input” with, for example, 34 contacts.
Success metric: when checked manually, at least 95% of records in the list actually match the intent of the report, and there are no obvious duplicates in the list.
When the lead selection is ready, you can move on to automation. In the next step, you will actually get the data from the CRM into the workflow.
Step 3: In Make, create a scenario with weekly scheduling and data loading
What and why: Now you will build the foundation that regularly triggers the whole process. Make is suitable for this type of task because it combines a scheduler, data transformations, and connections to AI and email in one scenario. For an MVP, this is faster than programming your own integration layer.
How exactly: In Make, click Create a new scenario. Add the module HubSpot CRM > Search for CRM Objects. Choose Contacts as the object. In the Properties field, enter for example: firstname,lastname,email,phone,lifecyclestage,lead_source,hubspot_owner_id,createdate,hs_lastmodifieddate. In the filters, set dates for the last 7 days. Then in the lower left corner of the scenario, set scheduling via Scheduling > Every week > Monday > 08:00.
A practical detail: if you use date filters in Make, verify the scenario time zone. Otherwise, the Monday morning run may include one day more or less of data. So in the scenario settings, check Time zone, ideally set to Europe/Prague.
Specific input: module parameter limit=100, properties firstname,lastname,email,phone,lifecyclestage, filter on hs_lastmodifieddate.
Specific output: a Make bundle with a set of contacts, for example 34 records with populated fields.
Success metric: after clicking Run once, all expected leads are loaded, and the number of records differs from the number in the HubSpot list by at most 1 to 2 items, which can be explained by synchronization time.
Once you have the data in Make, you need to format it into a form that the AI model will process reliably. This is the next logical intermediate step, and it saves the most errors.
Step 4: Clean and normalize the data before sending it to AI
What and why: A language model works better with a compact, consistent structure than with an unedited export. If you send it empty fields, inconsistent status names, and unnecessary clutter, the quality of the summary will worsen. Therefore, create an intermediate step that turns the data into simple JSON or a text list.
How exactly: Add the module Tools > Text aggregator or JSON > Create JSON to the scenario. Convert each lead into the same structure. For example, map an empty phone number to the value “missing”, an unfilled owner to “no owner”, and translate the lifecycle stage into understandable Czech names. This will make orientation easier for the model.
A simple mini-snippet of the resulting structure may look like this:
[
{
"jmeno": "Jana Nováková",
"email": "jana.novakova@example.cz",
"telefon": "chybí",
"faze": "SQL",
"zdroj": "LinkedIn",
"vlastnik": "Petr Svoboda",
"vytvoreno": "2026-03-03",
"zmeneno": "2026-03-07"
}
]
Example input: a contact with fields firstname=Jana, lastname=Nováková, phone=null, lifecyclestage=salesqualifiedlead.
Expected output: a normalized record “Jana Nováková | phone: missing | stage: SQL” or a JSON item according to the chosen variant.
Success metric: 100% of leads in the AI input have all required fields filled, at least with a fallback value such as “missing” or “no owner”.
Only with data adjusted like this does it make sense to build the prompt. Thanks to that, you will know exactly what the model receives and will more easily detect possible output errors.
Step 5: Design a prompt for a readable and verifiable summary
What and why: The prompt determines the form of the resulting email. In this project, the goal is not creative text, but a consistent report. Therefore, the prompt should be specific, restrictive, and built so that the model does not estimate missing information. The more precisely you define the structure, the less you will need to correct later.
How exactly: In Make, add the module OpenAI > Create a Chat Completion or the corresponding official module according to the current offering. As the model, choose for example a model available in your account that is suitable for text summarization. If you are not sure about the specific model variant, treat that as a limitation and verify the current recommendation in the OpenAI documentation. Insert precise rules into the system or user instruction.
Practical prompt template:
You are an analyst for a sales team. Create a weekly email overview of leads in Czech.
Use only information from the input. Do not calculate or invent anything.
Output structure:
1. Summary in 3 bullet points
2. Top 5 leads with reason for priority
3. Data risks
4. Recommended steps for next week
If some data is missing, explicitly state that it is missing.
Be brief, factual, and do not exceed 250 words.
Input data:
{{aggregated_json_or_text}}
Specific input: the prompt above and an aggregated list of 34 leads in JSON format.
Specific output: report text with four sections, for example “Summary”, “Top 5 leads”, “Data risks”, “Recommended steps”.
Success metric: there are no names, numbers, or claims in the output that do not exist in the input; the report length does not exceed the set limit, and the structure matches the brief in at least 9 out of 10 runs.
When the model returns usable text, only delivery remains. Before the email itself, however, I recommend adding a small check so that an empty or obviously incorrect report is not sent.
Step 6: Add control logic and assemble the email
What and why: The automation must be able to safely respond to two common situations: when there is nothing to report, or when AI returns incomplete text. Control logic prevents management from receiving an empty email or output without key sections.
How exactly: In Make, insert a Router module after OpenAI and set up two branches. Use the first branch if the number of leads is 0. In that case, send a short email such as “No new or changed leads were found in the last 7 days.” Use the second branch if the text contains the expected headings, for example “Summary” and “Top 5”. This can be verified using a filter on the text.
Then add the module Gmail > Send an Email or Microsoft 365 Email > Send an Email. Set the subject for example to Weekly lead overview | {{formatDate(now; "D.M.YYYY")}}. In the body, insert an introductory sentence, the generated text, and a brief footer with the number of processed leads.
Example input: number of leads 34, AI output containing the headings “Summary”, “Top 5 leads”, “Data risks”.
Expected output: a sent email to the addresses sales@firma.cz and manager@firma.cz.
Success metric: 100% of runs end either with a delivered report or a correct informational message about zero leads; no run ends in silent failure without notification.
This completes the basic function. For a truly usable MVP, however, you still need an audit trail and a simple way to verify what was sent in each week.
Step 7: Save a report log for audit and quick error tracing
What and why: Without a log, it is difficult to determine why a different number of leads was sent in a given week or why the recipient saw different text. An audit record is not a luxury, but a practical safeguard. For an MVP, a simple entry in Google Sheets is enough.
How exactly: Create a spreadsheet with a sheet weekly_lead_reports and columns run_date, lead_count, recipient, subject, status, report_excerpt. After successful sending, add the module Google Sheets > Add a Row to the scenario and map the relevant values. For the report excerpt, the first 200 characters are sufficient.
Example input: run_date=2026-03-09 08:00, lead_count=34, status=sent.
Expected output: a new row in Google Sheets with data about the run and the sent report.
Success metric: each successful run has exactly one corresponding log record, and from the log it is possible within 2 minutes to trace what was sent and to how many recipients.
After these seven steps, you already have the entire MVP put together. Now it is important to verify that it works stably even in edge cases, not only with ideal input.
Testing
Divide testing into three layers: data, prompt, and delivery. First verify the data. In HubSpot, manually select five to ten contacts that should fall into the weekly overview and compare them with the result loaded in Make. Focus mainly on date fields and lifecycle stage, because that is where the most frequent discrepancies usually occur.
Then test the prompt on a small sample. Take for example 5 leads: two complete, two with a missing phone number, and one without an assigned owner. Check whether the model only describes these limitations and does not start filling them in with assumptions. If it adds nonexistent conclusions, tighten the instruction such as “Use only information from the input” and reduce the number of required interpretations.
Finally, verify delivery. Send the test first only to yourself, ideally to two different mailboxes, for example Gmail and Outlook. Watch the subject formatting, paragraphs, and diacritics. A practical test set should include four scenarios: zero leads, a small number of leads up to 5, a normal weekly volume, and a week with incomplete data.
Consider testing successful when in three consecutive runs the number of leads matches expectations, the email arrives correctly, and the AI report does not add any nonexistent claims. If errors repeat, do not solve them by blindly “improving the prompt”; always return to the data and verify the input.
Deployment
For deployment, I recommend proceeding in two phases. First, run the scenario for one to two weeks in silent mode, meaning only to your internal address or a small test group. During this phase, you will verify the actual data volume, filter stability, and whether the chosen email structure is really sufficient for recipients.
Only then switch recipients to the final distribution list. In Make, activate the scenario with the ON button and check that the scheduling matches the required time. It is also practical to set up an error notification, for example via email to the administrator or via Slack, if the company uses it. Make offers this option in the scenario settings and error handlers.
In production, keep the MVP as simple as possible. Do not immediately add segmentation by regions, multiple language versions, or complex scoring unless it has been verified that people actually use the basic report. A well-deployed simple solution brings higher value than an overcomplicated scenario that fails once a week on an insignificant detail.
As an operational metric, track at least three numbers: run success rate, average number of processed leads, and email open rate. The last figure depends on the email infrastructure used and may not always be precisely available; if it is missing, treat that as a limitation and at least monitor recipient feedback and the regularity of report usage.
Limits
The first limit is the quality of input data. If salespeople do not fill in the owner, lead source, or status, AI will not magically produce a better report from it. The model can make the text clearer, but it cannot replace discipline in the CRM. Therefore, it is reasonable to include a “Data risks” section in the report that regularly points out incomplete fields.
The second limit is interpretation. A language model may formulate conclusions too confidently, even when it works with limited input. You can mitigate this with a precise prompt, a short structure, and by assigning it only summarization and prioritization according to explicit rules. If you need a strictly auditable output, it will be safer to generate only partially stylized text and keep the rest in fixed templates.
The third limit is dependence on external services. An outage of the HubSpot, Make, or OpenAI API may cause the report not to be sent in a given week. For an MVP, this is an acceptable risk, but it is necessary to have at least basic alerting and logging. If the company needs guaranteed availability, a more robust architecture with queues, retry logic, and its own monitoring will be more suitable.
The fourth limit concerns data protection. Do not send more personal data to AI than necessary. For an internal report, a name, status, lead source, owner, and indicators of missing data are usually enough. If you work with more sensitive data, first verify the company’s internal rules and the data processing terms of the given service. Where you are not sure, it is correct to explicitly mark it as a limitation and not as a finished legal certainty.
FAQ
Do I have to use HubSpot and Make specifically?
No. The same principle can also be built on Pipedrive, Salesforce, or Zoho CRM and an automation layer such as Zapier or a custom script. This guide uses HubSpot and Make because it is a quickly implementable and well-documented combination.
Is it necessary to use AI if I could just send a table?
No, but AI adds value where you want a short text summary and prioritization. If recipients only need a purely numerical report, it may be simpler to send a table or dashboard. For a managerial weekly email, however, a brief commentary is usually significantly more useful.
How do I prevent the model from making things up?
The most effective combination is three steps: limit the input only to relevant data, pass it in a clean and consistent structure, and explicitly forbid inference in the prompt. A shorter required output and fixed sections instead of an open question such as “evaluate the leads” also help.
What if there are too many leads, say several hundred per week?
Then split the workflow into two layers. First, create summary statistics in Make and select top leads according to fixed rules. Do not send all 500 items to AI, but rather an aggregation and a representative selection. Otherwise, costs and the risk of inconsistent output will grow.
How often should the report be sent?
For most sales teams, a weekly rhythm makes sense, typically on Monday morning. If the pipeline changes faster, you can switch to a daily overview. For an MVP, however, I recommend staying with a weekly interval because it is easier to test and fine-tune.
Can recommendations for next steps also be added to the email?
Yes, but only carefully. Recommendations should be based on explicit rules, for example “assign a lead without an owner within 24 hours” or “fill in the phone number for a lead without one.” The more the recommendations approach sales strategy, the more important human review becomes.
Recommended AI stack for implementation
| Service | Service description | Offer |
|---|---|---|
| NordVPN | VPN service for privacy protection and secure connections. | Open offer |
| Semrush | SEO and marketing platform for analysis and traffic growth. | Open offer |
| Make | Advanced visual automation for workflows and integrations. | Open offer |
| Hostinger | Web hosting and domains for fast website launch. | Open offer |
| Fiverr | Marketplace for freelancers and external specialists. | Open offer |
| Adobe | Creative tools for graphics, video, and digital content. | Open offer |
| Canva | Online design tool for graphics, presentations, and social media. | Open offer |
| Jasper | AI tool for marketing copy and content campaigns. | Open offer |
Note: We use affiliate links for listed services. If you purchase through them, we may earn a commission at no extra cost to you.
Links in the article
- Make
- OpenAI
- NordVPN
- https://www.hubspot.com/products/crm
- https://developers.hubspot.com/docs/api/crm/contacts
- https://www.microsoft.com/microsoft-365/outlook/email-and-calendar-software-microsoft-outlook
- https://www.hubspot.com/company-newsroom/media-kit
- https://news.microsoft.com/media-downloads/
Sources of illustrative images
The custom illustrative image was created using the OpenAI Images API.




