We use Google Analytics to see which pages are useful and keep improving the site. It is set up to respect your privacy, so it runs no ads and never tracks you across other sites. Privacy & cookies.

We use Google Analytics to see which pages are useful and keep improving the site. We also advertise on Google, so accepting lets us see which ads bring people here. Decline and you get the site with neither. Privacy & cookies.

Free Mini AI Assessment

Choose the Mini AI Assessment when you book the free 30-minute Discovery Call. We’ll identify one time sink and show you the tool or next step most likely to fix it. No pitch, no obligation.

Ask the AI Advisor
Cork AI Consulting Cork AI Consulting
Cork AI Consulting
Home About Services Blog Meetup Book a free Discovery Call Book a free call
All services How we work AI Assessment Knowledge Base AI Agents AI Concierge
Home About Services AI Assessment Knowledge Base AI Agents AI Concierge Blog AI by sector AI meetup Products Contact
  1. Home
  2. Privacy & cookies

Privacy & cookies

Last updated 29 September 2026

I've kept this short and plain. It explains what happens to your information when you use corkaiconsulting.ie or get in touch.

Who I am

This site belongs to Douglas Woollam, trading as Cork AI Consulting, based in Cork, Ireland. I'm the data controller for anything you share here, and you can reach me at corkaiconsulting@gmail.com.

What I collect, and why

When you send an enquiry: the contact forms ask for your name, email and message; the services and AI forms also ask about your role, budget and timeline. I use this only to reply and to talk about working together. The lawful basis is taking steps at your request before a possible contract, plus my legitimate interest in answering enquiries. Submissions reach my inbox through FormSubmit.

When you browse: Google Analytics 4 measures how the site is used, such as pages viewed, rough location (from your IP, which isn't stored) and device or browser type. Google Analytics doesn't load at all until you accept analytics cookies. Only if you accept does it set cookies to recognise return visits, and the lawful basis for that is your consent.

When you send an enquiry, join my email list or book a call, I record how you reached the site along with it: the campaign tags on the link you followed (such as utm_source), the website that sent you, the page you landed on, and your answer if you tell me how you heard about us. I keep this with your enquiry in my lead records in Notion, in Kit for email sign-ups, and in Cal.com for bookings, so I can see which of my work actually brings people to me. The lawful basis is my legitimate interest in knowing that. If you accept analytics cookies, the same details are also kept in your browser for up to 90 days, so a later visit is credited to how you first found the site. Decline, or withdraw from Cookie settings, and they are cleared.

I also advertise on Google. If you accept the cookie banner, Google Ads records that a visit which began with one of my ads led to something useful, such as booking a call, so I can tell which ads are worth paying for. That involves Google setting its own cookies and receiving your ad interaction, and the lawful basis is your consent. Decline and no ad cookies are set and no ad measurement happens. I don't upload customer lists to Google, and nothing you send me through a form is used to target advertising.

When you join my email list (for example by taking the "Is your business ready for AI?" check, or asking to be told when BlarneyKey runs on your machine): I collect your email address to send your result, a short action plan, product updates you've asked for, and occasional tips on using AI in your business. Nothing is sent until you confirm by clicking a link (double opt-in), so the lawful basis is your consent, and every email has a one-click unsubscribe. My email tool, Kit (ConvertKit), stores the list and sends these emails on my behalf.

BlarneyKey, the free Mac app on this site, collects nothing at all. It transcribes on your own machine, has no account and makes no network calls, so nothing you say with it reaches me or anyone else. Installing it is a download from GitHub, whose own privacy terms apply to that request.

Your free 90-day roadmap

When you request a roadmap, we collect your first name, business name, email and nine selected answers. Your browser assembles the plan from prewritten content; no AI model processes your answers, and no documents or business systems are inspected. The lawful basis is taking steps at your request before a possible contract.

FormSubmit delivers your request to our inbox, and Kit (ConvertKit) emails you a link to your plan. Kit keeps your first name, business name, email and plan link as an unconfirmed contact; you only join our email list if you click the confirmation button in that email. Nothing is stored on this website. The request email follows the enquiry-email retention described below. These services may process information outside the EU, under their data processing agreements and transfer safeguards. We do not send names, emails or plan links to analytics, and the plan page itself loads no analytics or booking embeds.

The link to your plan contains your first name, business name and answers, so that it rebuilds the same plan whenever you open it. Anyone with the link can read the plan, so share it only if you intend to. The questionnaire also keeps your selected answers in session storage on this device so you can go back and edit them. If you confirm, you join the email list described above, with an unsubscribe link in every email. Not confirming does not affect your roadmap.

Cookies and similar storage

No analytics cookies are set until you click Accept on the cookie banner. If you accept, Google Analytics sets these:

CookiePurposeExpires
_gaTells returning visitors apart2 years
_ga_3BEP340JJYKeeps the Google Analytics session state2 years

Accepting also lets Google Ads set _gcl_au (about 90 days), which links a click on one of my ads to what you did here afterwards. Google may set further cookies of its own on google.com and doubleclick.net when it measures that click; those are Google's, described in its own privacy policy, and none of them are set if you decline.

The site also stores a few things in your browser so it works properly: your cookie decision, a daily message count, whether you’ve already seen our promotion notice, and, once you accept analytics, how you first reached the site, for up to 90 days. These stay on your device, aren’t cookies, and don’t track you. You can change or withdraw your choice any time from “Cookie settings” in the footer.

Who else processes your data

Google (Google Analytics) handles analytics, only with your consent. FormSubmit delivers your enquiry or roadmap request to my inbox. Notion holds my lead records: your enquiry and how you reached the site. Kit (ConvertKit) stores my email list and sends the updates you've asked for. If you book a call, Cal.com collects your name, email and scheduling details to set it up, and if that booking is a paid one, Stripe takes the payment — Stripe holds your card details, which never reach me. Some pages embed third-party content (the portfolio's Tableau dashboards, a LinkedIn post, a Loom video, and a Google Map of the meetup venue); Tableau, LinkedIn, Loom and Google serve that content and can set their own cookies when the embed loads. These providers may process data outside the EU, including in the US, under Standard Contractual Clauses and the EU-US Data Privacy Framework.

Google Ads measures my advertising, again only with your consent.

How long I keep it

Enquiry emails stay as long as I need them to help you and follow up, then I delete them. Analytics data is kept for up to 14 months in Google Analytics, then removed automatically.

Your rights

You can ask to see, correct, delete, or limit how I use your data, object to how I use it, or get a copy to take elsewhere. Email me and I'll sort it. You can withdraw analytics consent whenever you like from Cookie settings.

Questions or complaints

Email corkaiconsulting@gmail.com first. I'd rather put things right directly. You also have the right to complain to the Irish Data Protection Commission at dataprotection.ie.

Change your cookie choice

Cork AI Consulting

Making AI usable for the people who run real businesses.

Navigation
Home Services How we work AI Assessment Knowledge Base AI Agents AI Concierge About AI meetup Products Blog AI by sector Contact
Connect
LinkedIn Facebook Instagram
Get the AI kit

One email when we publish something worth your time: practical AI for Cork businesses. No spam.

We'll email you to confirm first. Unsubscribe any time.

Contact
Book a Discovery Call corkaiconsulting@gmail.com +353 86 891 2340

© 2026 Cork AI Consulting · Douglas Woollam · AI & Data Consultant

Privacy & cookies Cookie settings
    ↑↓ navigate ↵ select esc close

    Problem

    Approach

    Result

    Tableau · Featured Work 01

    Christmas Sales Analysis Dashboard

    Made for a multinational technology company in my role as a Data Analyst. Created with artificial data.

    Tableau Viz of the Day logo
    Featured as Tableau Viz of the Day

    Awarded to <0.01% of published vizzes by Tableau's editorial team.

    12.5k Tableau Views
    50 Favourites

    Interactive Dashboard

    Hover, filter and switch tabs.

    Tableau Viz of the Day

    Featured by Tableau's official account on LinkedIn.

    Why this project?

    Christmas is a major time for sales around the world, and making the most of the holiday rush can be a bit challenging. In this task, I helped a multinational technology company analyse Christmas data to uncover insights into customer behaviors during the festive season. The dataset provided includes anonymized Christmas sales data across various product categories, customer demographics, and marketing campaigns.

    These are the questions I was interested in answering

    Here are my key takeaways

    Children (ages 1–11) contributed nearly 40% of total Christmas sales, with Smartphones and in-store shopping being their top preferences.

    The top 5 best-selling products, all for children, declined by up to 15% over four years — highlighting changing consumer trends.

    United States led with €6.2M in sales and US Stores leading with €2.5M in sales, while Netherlands grew 14%, and Canada declined by 12% since 2018/2019. Irish Store Select (Compu B) increased sales by 19.3%, which could be targeted for future sales leads.

    Covid caused a -3.2% dip in 2020, followed by a +1.9% recovery in 2021, though sales hadn't fully rebounded.

    Customers tend to buy 1–5 products per transaction, but when making bulk purchases, they preferred 5, 10, 15, or even 30 items. This suggests an opportunity for special pricing on bulk purchases to encourage upselling.

    December accounted for 77% of in-store sales, showing a strong opportunity for seasonal promotions. Shopping timing varied — females preferred Sundays and Mondays, while males leaned towards Thursdays for gift buying.

    The Tableau dashboard

    Two tabs answer the six questions. Slide between them — or tap either dashboard to zoom in.

    Customer Segment dashboard tab — KPIs, segment mix, Covid trend, country performance and best sellers

    Customer Segment tab

    This tab helped answer the questions on Customer Segments, Best Performing Products, Geography, and Covid. It revealed that Children (ages 1–11) contributed nearly 40% of sales, highlighted the decline of top-performing products, mapped regional performance, and showed how sales dipped during the pandemic.

    Pricing and Promotion dashboard tab — unit price scatter, quantity by channel, monthly sales and shopping-time heatmaps

    Pricing & Promotion tab

    This tab helped answer the questions on Pricing and Shopping Timing. It analyzed how price variation affected sales, identified bulk promotion opportunities, and pinpointed December's 77% in-store sales share as the key window for promotions.

    Data Cleaning

    Instead of looking at the data by calendar year, data was grouped into Christmas Seasons to get a better understanding. For example, November 2018, December 2018, and January 2019 are combined into Xmas 2018/2019, considering these three months as one season for retailers and shoppers alike.

    Regrouping calendar months into combined Christmas seasons
    Calendar months regrouped into Christmas seasons.
    • To make things more business-friendly, some fields were given new names. For example, Purchase Type (In-store, Online, Xmas Market) is now Shopping Channel.
    • Since most of the data is from EU countries, I assumed Euro as the currency. In the real scenario, this needs to be clarified with the business.
    • A Calendar Table was added to enhance time-related analysis.

    Analysis

    Customer Segment

    The Children segment (ages 1-11) stood out, contributing nearly 40% of total Christmas sales over the years. Interestingly, there was no significant difference between male and female customers across different age groups.

    Customer segment share by age and gender

    In-store shopping, particularly for the Children segment (74% in stores), was a prevalent choice. This is understandable as kids often prefer the hands-on experience of selecting gifts. Cash was the preferred payment method for Kid purchases, while Teens (ages 12–17) and Adults (ages 18 and over) leaned towards credit card, and cash was their least preferred payment method.

    Where customers shopped and most common payment method by age band
    Best Performing Products

    Overall, Phone and TV took the lead as the top-selling product categories, contributing a significant 27% to total sales among the 11 categories. While Phone stole the spotlight as the most beloved and profitable category with a staggering 77.03%, it's important to note that its sales had seen a notable decline in the past couple of years.

    Best sellers by product category — total sales, growth, price and margin

    Breaking it down to the product level, Phone 13 and Phone SE were the best sellers, making up 8.4% and 8.2% of overall sales, respectively. Interestingly, the top 5 performers were all targeted at the Children segment. However, despite their initial popularity, all of these products saw a decline in sales, ranging from -2% to -15% over the past four seasons. Zooming in on the Teenager segment, Smart speaker Mini emerged as the most cherished Christmas gifts. Meanwhile, in the world of Adults, the Watch Series 5 stole the show, contributing the most to sales and enjoying a substantial sales growth of nearly 50% since the Christmas season of 2018/2019.

    Best-selling products — total sales, growth, price and margin
    Geography

    United States took the crown for the most Christmas sales over the four seasons, reaching €6.2 million. Canada, once the best in Xmas 2018/2019, faced a decline of -12% over the four seasons. The Netherlands showcased the most significant growth of 14%, climbing from the 7th to the 5th spot.

    Revenue by country with year-on-year growth

    Drilling down to the Sales Leads, the three Stores in United States (Stores, Best Buy USA & MacConnection) emerged as the top-selling Stores, each generating over €1.8 million in sales. In Ireland, Store Ireland & Select (Compu B) emerged as the top-selling Stores, each generating over €0.9 million in sales.

    Revenue by store lead within each country
    Christmas sales by season showing the Covid dip and recovery
    Covid

    The Christmas gift market felt the impact of Covid in 2020, experiencing a -3.2% sales decrease. A recovery followed in 2021/2022 with a +1.9% increase, but the sales had not yet reached pre-Covid levels.

    Pricing

    Despite higher prices, children's products lead in sales quantity, with over 12 thousand units sold for each product over the past four Christmas seasons. Among products for adults, unit price variation did not significantly affect the quantity sold (around 6–7 thousand units per product).

    Scatter of unit price against quantity sold by segment

    Customers tend to buy 1–5 products per transaction, but when making bulk purchases, they preferred 5, 10, 15, or even 30 items. This suggests an opportunity for special pricing on bulk purchases to encourage upselling.

    Most common units sold per order
    Shopping Timing

    December was the busiest month for Christmas gift shopping, with sales doubling compared to November and January. In-store shopping dominated December, accounting for 77% of sales, making it an excellent time for in-store promotions.

    Quantity sold by channel each month and monthly in-store share
    Heatmaps of shopping day and hour by gender

    Shopping times varied across different channels. In-store shopping peaked on Monday, followed by Sunday. Sundays at 3 pm became the busiest time for Christmas markets. Online shopping provided flexibility, with peak times at Monday 8 am, Wednesday 11 pm, and Saturday 7 am. Weekday afternoons at 4 pm witnessed the highest online sales. While females preferred Sunday and Monday for Christmas shopping, males leaned towards Thursdays for their festive gift-buying spree.

    Try it live. The full dashboard is interactive on Tableau Public. Open the live dashboard ↗
    SQL & Power BI · Featured Work 03

    Revenue & Target Analysis Dashboard

    Made for Mallow – Liscarroll Landscaping in my role as a Data Analyst. Recreated with artificial data.

    Power BI Summary dashboard for Mallow – Liscarroll Landscaping
    The Power BI report — Summary (Overview) tab.

    Why this project?

    I built the BI stack for a landscaping business I co-founded — an SQL script and Power BI report that replaced manual processes. It increased profit by 20%, identified high-value towns to focus marketing and service checkups on, and saved 1.5 hours of reporting time every week.

    The questions I set out to answer

    Enhanced decision-making with DAX measures that blend distance, fuel price, rental gear and crew size into margin KPIs; visuals let the business slice profit by customer, townland, week or service at will.

    Increased gross profit by 20% by developing DAX-based metrics for cost and profitability in a Power BI dashboard, identifying underpriced jobs, and presenting data-backed pricing recommendations to the business owner that included overlooked costs like fuel, distance and differing equipment.

    Achieved an 85% repeat booking rate by tracking job frequency in Excel, automating maintenance reminders in Python, and optimising schedules to group nearby clients in Power BI, boosting recurring revenue, client satisfaction, and operational efficiency.

    Enabled prioritisation of high-margin, efficiently scheduled jobs and reduced prep time by developing DAX-based KPIs in Power BI that provided cost breakdowns per job by time, location, proximity, and resource costs, improving decision-making and auto-generating daily equipment lists.

    Cut weekly reporting time by 75% from 2 hours to 30 minutes by creating a user-friendly Excel workbook, automating the pipeline to the Power BI dashboard and ensuring smooth adoption with a comprehensive user guide and video walkthrough.

    How I built it

    A single pipeline moves the data from a spreadsheet all the way through to an interactive report.

    Microsoft Excel Python (Excel → CSV) PostgreSQL Power BI

    Python script

    My Python code converted individual Excel pages into individual CSV files, ready to import into the Postgres SQL server.

    excel_to_csv.py
    # execute py file in jupyter_venv
    from pathlib import Path
    import pandas as pd
    
    # path to the workbook
    wb = Path('Mallow - Liscarroll Landscaping/landscaping_schema.xlsx')
    
    # check the file exists before proceeding
    if not wb.exists():
        raise FileNotFoundError(wb)
    
    # iterate through every sheet
    for sheet in pd.ExcelFile(wb).sheet_names:
        df = pd.read_excel(wb, sheet_name=sheet, engine="openpyxl")
        csv_path = wb.parent / f"{sheet.lower()}.csv"
        df.to_csv(csv_path, index=False)
        print("Exported", csv_path)
    View Python script on GitHub ↗

    SQL script

    170-line SQL script used to build tables from the CSV files. Defines keys and data types, NULL / empty value handling. CTE for dashboard metrics.

    View SQL script on GitHub ↗

    Below is the base CTE on fact_work_order, normalises service_charge nulls to 0, rounds to two decimals, and outputs dashboard metrics: operating_cost, total_profit, profit_per_person, total_time, and profit_per_hour

    ml_landscaping.sql
    SQL base CTE on fact_work_order computing dashboard metrics

    The Power BI dashboard

    Two tabs make up the report. Slide between them — or tap either dashboard to zoom in.

    Power BI Overview tab — KPIs, profit by month, profit/hr trend, map and revenue by town

    Overview tab

    Includes slicers for below / on-target jobs, year and job type. The map and revenue-by-town bar chart use a field parameter to toggle between revenue, profit or profit/hr for flagging high-value towns. The column and line charts can be drilled up or down for time-series analysis.

    Power BI Report tab — job-level table with revenue, profit and price status

    Report tab

    Presents a job-level table with key metrics: work date, customer, duration, distance, crew size, revenue, profit, profit per hour, operating costs, target revenue, earnings potential and price status. All slicers are synced with the summary page.

    DAX measures

    18 DAX measures were created across both tabs of the dashboard. Here are three of the core ones.

    Target Revenue
    DAX measure: Target Revenue
    Revenue
    DAX measure: Revenue
    Profit/hr
    DAX measure: Profit per hour
    Power BI measure selection pane listing all 18 DAX measures
    How the measures appear in the selection pane.

    A walkthrough of the dashboard in action

    Conclusion

    Overall, this project demonstrates how a data pipeline built with Microsoft Excel → Python → SQL → Power BI can transform raw operational data into actionable insights that increase profit, identify high-value clients, and support smarter business decisions.

    Tableau · Featured Work 02

    Marketing Performance Dashboard

    Built for Cork AI Consulting to show how we report web and campaign performance. Created with example data.

    Interactive Dashboard

    Hover, filter and switch tabs.

    Why this project?

    Most owners we meet have Google Analytics switched on and never open it. The numbers are there, but nothing in the interface tells them whether last month was good. So we built the report we would hand a client: one screen, four KPIs, every number compared to the month before, and a second tab that ranks the sources sending the traffic. It runs on example web-analytics data, so the figures below describe the demo, not a real client.

    The questions the dashboard answers

    Here are the takeaways from the demo data

    Better on all four headline KPIs: 20,031 sessions (+29.9%), session duration up to 1 min 8 s (+17.2%), time on page +4.4% and unique pageviews per session +10.3%. More visitors and more engaged visitors, not one at the cost of the other.

    Organic search carried 45% of sessions and direct another 24%, while paid search bought 6% and display returned nine sessions in the month. Referral sends the least traffic but the most engaged, at 2.4 pageviews a session.

    No. Desktop is 77.3% of sessions at an 18% bounce rate; mobile is 20.3% and bounces at 27%. Mobile is also the fastest-growing slice, so the gap costs more every month it stays open.

    Six referrers account for 19,885 sessions, and the top two — google.com.br at 44% and indiegogo.com at 24% — account for two-thirds on their own. The sparkline beside each one separates a steady stream from a single spike: cnet.com jumped 118.8% off a small base.

    Traffic and attention do not line up. The busiest page holds a reader 22 seconds; the second-busiest holds them one second and bounces 29% of them. Two quieter pages hold visitors 36–40 seconds — the ones worth sending more traffic to.

    The Tableau dashboard

    Two tabs, built to be read in order. Slide between them — or tap either dashboard to zoom in.

    Tableau Overview tab — four KPI cards with sparklines, device table, referral sites, world map, channel mix and most-visited pages

    Overview tab

    The month on one screen. Four KPI cards across the top, then the five questions underneath: devices, referral sites, geography, channels and pages. Clicking the map filters the whole tab to one country.

    Tableau Top Performers tab — each KPI with a 12-month trend and the top five source mediums ranked against the prior month

    Top Performers tab

    The same four KPIs, each given a row: a 12-month trend with the average marked, and the top five source mediums ranked, with a reference line showing where each sat the month before.

    How it was built

    Every number on the dashboard is a comparison, not a total. The header states the pair in plain English — showing results for Jan 2019 compared to Dec 2018 — and every KPI, bar and table inherits it, so nothing on the page can be read out of context.

    • One comparison date parameter drives the whole workbook. Change the month in the header and both tabs, all sparklines and every reference line move with it.
    • Reference lines instead of a second bar. Where the prior month matters, it is drawn as a thin marker on the current bar rather than a second series — the same information in half the ink.
    • Green and red are reserved for direction, never for category. Blue carries the data; colour only appears on a percentage change, so a glance down the page reads as a list of verdicts.
    • Bounce rate is shown as a rate, with the raw session count beside it, so a small segment with a bad percentage cannot look like a crisis.
    • The tabs and filter panel are custom navigation rather than Tableau's default tab strip, so the report opens the way a client expects a product to.

    Analysis

    Headline KPIs

    Sessions reached 20,031, up 29.9% on the prior month, and the engagement measures rose with them: session duration +17.2%, time on page +4.4% and unique pageviews per session +10.3%. That combination matters. A traffic spike on its own usually means the new visitors are the wrong ones and every engagement metric sags; here they moved together, which points at better-qualified traffic rather than more of it.

    Each KPI with its 12-month trend and top five source mediums
    Top Performers tab — each KPI with its own 12-month trend and source ranking.
    Channels

    Organic search brought 9,078 sessions (45%) and direct another 4,824 (24%) — nearly seven in ten visits arriving without being paid for. Paid search accounted for 6% and display for nine sessions in the whole month, which is the kind of line that ends a spend rather than starts an optimisation. Referral is the interesting one: the smallest of the meaningful channels at 10%, but the highest quality, at 2.4 unique pageviews a session against organic's 1.9 and direct's 1.4.

    Devices

    Desktop holds 77.3% of sessions and bounces at 18%. Mobile holds 20.3% and bounces at 27% — half again as often. Mobile sessions grew 12.3% in the month, so the weaker experience is the one gaining share. On a real site this is the first thing we would act on, because it is a fix to the site rather than a fix to the marketing.

    Overview tab showing device split, referral sites, geography, channel mix and page performance
    Overview tab — devices, referrers, geography, channels and pages on one screen.
    Referral sources

    Six referrers account for 19,885 sessions, and the top two carry two-thirds of them: google.com.br at 8,817 (44%) and indiegogo.com at 4,824 (24%). The sparkline beside each source is there to answer the follow-up question a total cannot — is this a stream or a spike? cnet.com grew 118.8%, but from a base of a few hundred sessions, and its shape says campaign rather than habit. The Brazilian search traffic is the opposite: large, flat and dependable, and worth a look at whether the site actually speaks to those visitors.

    Pages

    Ranking pages by sessions alone hides the problem, so each row carries time on page and bounce rate beside the count. The top page takes 3,441 sessions and holds them 22 seconds at a 16% bounce. The second takes 1,665 and holds them one second, bouncing 29% — a page getting traffic it does nothing with. Further down, two pages hold visitors 36 and 40 seconds on a fraction of the traffic. Those are the pages to point the marketing at.

    Conclusion

    The point of a report like this is not the charts — it is that an owner can open it on a Monday morning and, inside a minute, know whether the month was good, which channel earned the credit and which page is wasting the traffic it gets. That is the standard we build client reporting to, whether it lands in Tableau, Power BI or a weekly email.

    Try it live. The full dashboard is interactive on Tableau Public. Open the live dashboard ↗