{"id":1825,"date":"2026-03-16T04:53:10","date_gmt":"2026-03-16T04:53:10","guid":{"rendered":"https:\/\/www.aidataconsulting.com.au\/?page_id=1825"},"modified":"2026-03-18T06:53:03","modified_gmt":"2026-03-18T06:53:03","slug":"projects","status":"publish","type":"page","link":"https:\/\/www.aidataconsulting.com.au\/?page_id=1825","title":{"rendered":"Projects"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1825\" class=\"elementor elementor-1825\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5cf7559 e-flex e-con-boxed e-con e-parent\" data-id=\"5cf7559\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-36c0d4d elementor-widget elementor-widget-html\" data-id=\"36c0d4d\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- AI Data Consulting \u2014 Projects Showcase v2 | Paste into Elementor HTML Widget -->\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&family=Sora:wght@600;700&display=swap\" rel=\"stylesheet\">\r\n\r\n<style>\r\n  #adc2 *{box-sizing:border-box;margin:0;padding:0}\r\n  #adc2{font-family:'Inter',sans-serif;padding:60px 0 80px;color:#1a2332;background:transparent}\r\n\r\n  \/* Header *\/\r\n  .adc2-header{text-align:center;margin-bottom:56px}\r\n  .adc2-eyebrow{display:inline-flex;align-items:center;gap:8px;background:#f0f7ff;border:1px solid #c7e0ff;border-radius:20px;padding:6px 16px;font-size:12px;font-weight:600;color:#1d6fce;letter-spacing:.06em;text-transform:uppercase;margin-bottom:18px}\r\n  .adc2-eyebrow span{width:6px;height:6px;border-radius:50%;background:#1d6fce;display:inline-block}\r\n  .adc2-header h2{font-family:'Sora',sans-serif;font-size:40px;font-weight:700;color:#0F2A4A;line-height:1.15}\r\n\r\n  \/* Stats bar *\/\r\n  .adc2-stats{display:flex;justify-content:center;gap:56px;margin-bottom:56px;flex-wrap:wrap}\r\n  .adc2-stat{text-align:center}\r\n  .adc2-stat-num{font-family:'Sora',sans-serif;font-size:28px;font-weight:700;color:#0F2A4A;display:block}\r\n  .adc2-stat-label{font-size:12px;color:#94a3b8;text-transform:uppercase;letter-spacing:.06em;margin-top:2px}\r\n\r\n  \/* Controls *\/\r\n  .adc2-controls{display:flex;flex-direction:column;gap:16px;margin-bottom:40px}\r\n  .adc2-tabs{display:flex;gap:8px;flex-wrap:wrap}\r\n  .adc2-tab{padding:10px 22px;border-radius:28px;border:1.5px solid #e2e8f0;background:#fff;font-size:13px;font-weight:600;cursor:pointer;color:#64748b;transition:all .2s;font-family:'Inter',sans-serif;display:flex;align-items:center;gap:7px}\r\n  .adc2-tab .dot{width:8px;height:8px;border-radius:50%;background:#cbd5e1;transition:background .2s}\r\n  .adc2-tab.active{background:#0F2A4A;color:#fff;border-color:#0F2A4A}\r\n  .adc2-tab.active .dot{background:#4ade80}\r\n  .adc2-tab:not(.active):hover{border-color:#94a3b8;color:#334155}\r\n  .adc2-tab-delivered.active .dot{background:#60a5fa}\r\n  .adc2-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap}\r\n  .adc2-filter-label{font-size:12px;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.06em;margin-right:4px}\r\n  .adc2-fp{padding:7px 16px;border-radius:20px;border:1.5px solid #e2e8f0;background:#fff;font-size:13px;cursor:pointer;color:#64748b;transition:all .18s;font-family:'Inter',sans-serif;font-weight:500}\r\n  .adc2-fp.on{background:#0F2A4A;color:#fff;border-color:#0F2A4A}\r\n  .adc2-fp:not(.on):hover{border-color:#94a3b8;color:#334155}\r\n\r\n  \/* Count *\/\r\n  .adc2-count{font-size:13px;color:#94a3b8;margin-bottom:20px;font-weight:500}\r\n\r\n  \/* Grid *\/\r\n  .adc2-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:22px}\r\n\r\n  \/* Card *\/\r\n  .adc2-card{background:#fff;border-radius:18px;border:1.5px solid #e8edf5;overflow:hidden;display:flex;flex-direction:column;cursor:pointer;transition:all .22s;position:relative}\r\n  .adc2-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#1d6fce,#0ea5e9);opacity:0;transition:opacity .22s}\r\n  .adc2-card:hover{border-color:#c7d8f0;transform:translateY(-4px);box-shadow:0 16px 40px rgba(15,42,74,0.10)}\r\n  .adc2-card:hover::before{opacity:1}\r\n  .adc2-card-accent{height:3px;background:linear-gradient(90deg,#1d6fce,#0ea5e9)}\r\n  .adc2-card-accent.green{background:linear-gradient(90deg,#059669,#10b981)}\r\n  .adc2-card-top{padding:22px 22px 16px;flex:1}\r\n  .adc2-tag-row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}\r\n  .adc2-tag{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;padding:4px 10px;border-radius:8px;letter-spacing:.04em;text-transform:uppercase}\r\n  .adc2-tag-dot{width:5px;height:5px;border-radius:50%}\r\n  .t-current{background:#dcfce7;color:#15803d}.t-current .adc2-tag-dot{background:#15803d}\r\n  .t-delivered{background:#dbeafe;color:#1e40af}.t-delivered .adc2-tag-dot{background:#1e40af}\r\n  .t-de{background:#ede9fe;color:#6d28d9}.t-de .adc2-tag-dot{background:#6d28d9}\r\n  .t-ai{background:#ffedd5;color:#c2410c}.t-ai .adc2-tag-dot{background:#c2410c}\r\n  .t-viz{background:#d1fae5;color:#065f46}.t-viz .adc2-tag-dot{background:#065f46}\r\n  .t-mig{background:#fef9c3;color:#92400e}.t-mig .adc2-tag-dot{background:#92400e}\r\n  .t-sec{background:#fee2e2;color:#b91c1c}.t-sec .adc2-tag-dot{background:#b91c1c}\r\n  .adc2-card-title{font-family:'Sora',sans-serif;font-size:16px;font-weight:700;color:#0F2A4A;margin-bottom:5px;line-height:1.3}\r\n  .adc2-card-ind{font-size:12px;color:#94a3b8;margin-bottom:12px;font-weight:500;text-transform:uppercase;letter-spacing:.05em}\r\n  .adc2-card-tagline{font-size:13.5px;color:#475569;line-height:1.65}\r\n  .adc2-stack-row{display:flex;flex-wrap:wrap;gap:6px;padding:14px 22px;border-top:1px solid #f1f5f9}\r\n  .adc2-sp{font-size:11px;padding:4px 10px;border-radius:7px;background:#f8fafc;color:#64748b;border:1px solid #e8edf5;font-weight:500}\r\n  .adc2-card-footer{padding:14px 22px;border-top:1px solid #f1f5f9;display:flex;justify-content:space-between;align-items:center;background:#fafbfd}\r\n  .adc2-view-more{font-size:13px;color:#1d6fce;font-weight:600;display:flex;align-items:center;gap:5px;transition:gap .15s}\r\n  .adc2-card:hover .adc2-view-more{gap:9px}\r\n  .adc2-res-badge{font-size:11px;font-weight:600;background:#f0f7ff;color:#1d6fce;border:1px solid #c7e0ff;border-radius:12px;padding:3px 10px}\r\n\r\n  \/* Empty *\/\r\n  .adc2-empty{font-size:15px;color:#94a3b8;padding:48px 0;text-align:center;grid-column:1\/-1}\r\n\r\n  \/* Overlay *\/\r\n  .adc2-overlay{position:fixed;inset:0;background:rgba(10,20,40,0.55);z-index:99998;opacity:0;pointer-events:none;transition:opacity .25s;backdrop-filter:blur(2px)}\r\n  .adc2-overlay.open{opacity:1;pointer-events:all}\r\n\r\n  \/* Panel *\/\r\n  .adc2-panel{position:fixed;top:0;right:0;bottom:0;width:min(580px,100vw);background:#fff;z-index:99999;transform:translateX(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);overflow-y:auto;display:flex;flex-direction:column;box-shadow:-20px 0 60px rgba(15,42,74,0.15)}\r\n  .adc2-panel.open{transform:translateX(0)}\r\n  .adc2-panel-top-bar{height:4px;background:linear-gradient(90deg,#0F2A4A,#1d6fce,#0ea5e9)}\r\n  .adc2-panel-header{padding:24px 28px 20px;border-bottom:1px solid #f1f5f9;position:sticky;top:0;background:#fff;z-index:2}\r\n  .adc2-panel-header-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}\r\n  .adc2-panel-tags{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}\r\n  .adc2-panel-title{font-family:'Sora',sans-serif;font-size:20px;font-weight:700;color:#0F2A4A;line-height:1.25;margin-bottom:5px}\r\n  .adc2-panel-ind{font-size:13px;color:#94a3b8;font-weight:500;text-transform:uppercase;letter-spacing:.05em}\r\n  .adc2-close{background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:10px;font-size:16px;cursor:pointer;padding:7px 13px;color:#64748b;flex-shrink:0;font-family:'Inter',sans-serif;transition:all .15s;line-height:1}\r\n  .adc2-close:hover{background:#fee2e2;border-color:#fca5a5;color:#b91c1c}\r\n  .adc2-panel-body{padding:28px;flex:1}\r\n  .adc2-sh{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;color:#94a3b8;text-transform:uppercase;letter-spacing:.08em;margin:0 0 12px}\r\n  .adc2-sh::after{content:'';flex:1;height:1px;background:#f1f5f9}\r\n  .adc2-section{margin-bottom:28px}\r\n  .adc2-bg-text{font-size:14.5px;color:#334155;line-height:1.8}\r\n  .adc2-list{padding-left:0;list-style:none}\r\n  .adc2-list li{font-size:14px;color:#334155;line-height:1.75;margin-bottom:8px;padding-left:20px;position:relative}\r\n  .adc2-list li::before{content:'';position:absolute;left:0;top:9px;width:6px;height:6px;border-radius:50%;background:#1d6fce;flex-shrink:0}\r\n  .adc2-result-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px}\r\n  .adc2-rc{background:linear-gradient(135deg,#f0f7ff 0%,#e8f4fd 100%);border:1px solid #c7e0ff;border-radius:12px;padding:16px 10px;text-align:center}\r\n  .adc2-rnum{font-family:'Sora',sans-serif;font-size:15px;font-weight:700;color:#0F2A4A;display:block;margin-bottom:4px;line-height:1.2}\r\n  .adc2-rlabel{font-size:11px;color:#64748b;line-height:1.4}\r\n  .adc2-panel-stack{display:flex;flex-wrap:wrap;gap:8px}\r\n  .adc2-psp{font-size:12px;padding:6px 12px;border-radius:9px;background:#f8fafc;color:#475569;border:1.5px solid #e2e8f0;font-weight:500}\r\n\r\n  @media(max-width:640px){\r\n    .adc2-header h2{font-size:28px}\r\n    .adc2-grid{grid-template-columns:1fr}\r\n    .adc2-panel{width:100vw}\r\n    .adc2-stats{gap:24px}\r\n    .adc2-stat-num{font-size:22px}\r\n  }\r\n<\/style>\r\n\r\n<div id=\"adc2\">\r\n  <div class=\"adc2-header\">\r\n    <div class=\"adc2-eyebrow\"><span><\/span>Portfolio<\/div>\r\n    <h2>Our Projects<\/h2>\r\n  <\/div>\r\n\r\n  <div class=\"adc2-stats\">\r\n    <div class=\"adc2-stat\"><span class=\"adc2-stat-num\">15+<\/span><span class=\"adc2-stat-label\">Projects<\/span><\/div>\r\n    <div class=\"adc2-stat\"><span class=\"adc2-stat-num\">8+<\/span><span class=\"adc2-stat-label\">Industries<\/span><\/div>\r\n    <div class=\"adc2-stat\"><span class=\"adc2-stat-num\">3<\/span><span class=\"adc2-stat-label\">In progress<\/span><\/div>\r\n    <div class=\"adc2-stat\"><span class=\"adc2-stat-num\">12+<\/span><span class=\"adc2-stat-label\">Delivered<\/span><\/div>\r\n  <\/div>\r\n\r\n  <div class=\"adc2-controls\">\r\n    <div class=\"adc2-tabs\">\r\n      <button class=\"adc2-tab active\" onclick=\"adcSetTab('all',this)\"><span class=\"dot\"><\/span>All projects<\/button>\r\n      <button class=\"adc2-tab\" onclick=\"adcSetTab('current',this)\"><span class=\"dot\"><\/span>In progress<\/button>\r\n      <button class=\"adc2-tab adc2-tab-delivered\" onclick=\"adcSetTab('delivered',this)\"><span class=\"dot\"><\/span>Delivered<\/button>\r\n    <\/div>\r\n    <div class=\"adc2-filters\">\r\n      <span class=\"adc2-filter-label\">Industry<\/span>\r\n      <button class=\"adc2-fp on\" onclick=\"adcSetInd('all',this)\">All<\/button>\r\n      <button class=\"adc2-fp\" onclick=\"adcSetInd('Construction',this)\">Construction<\/button>\r\n      <button class=\"adc2-fp\" onclick=\"adcSetInd('Finance',this)\">Finance<\/button>\r\n      <button class=\"adc2-fp\" onclick=\"adcSetInd('Tourism',this)\">Tourism<\/button>\r\n      <button class=\"adc2-fp\" onclick=\"adcSetInd('Technology',this)\">Technology<\/button>\r\n      <button class=\"adc2-fp\" onclick=\"adcSetInd('Healthcare',this)\">Healthcare<\/button>\r\n      <button class=\"adc2-fp\" onclick=\"adcSetInd('Other',this)\">Other<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"adc2-count\" id=\"adc2-count\"><\/div>\r\n  <div class=\"adc2-grid\" id=\"adc2-grid\"><\/div>\r\n<\/div>\r\n\r\n<div class=\"adc2-overlay\" id=\"adc2-overlay\" onclick=\"adc2Close()\"><\/div>\r\n\r\n<div class=\"adc2-panel\" id=\"adc2-panel\">\r\n  <div class=\"adc2-panel-top-bar\"><\/div>\r\n  <div class=\"adc2-panel-header\">\r\n    <div class=\"adc2-panel-tags\" id=\"adc2-p-tags\"><\/div>\r\n    <div class=\"adc2-panel-header-row\">\r\n      <div>\r\n        <p class=\"adc2-panel-title\" id=\"adc2-p-title\"><\/p>\r\n        <p class=\"adc2-panel-ind\" id=\"adc2-p-ind\"><\/p>\r\n      <\/div>\r\n      <button class=\"adc2-close\" onclick=\"adc2Close()\">\u2715<\/button>\r\n    <\/div>\r\n  <\/div>\r\n  <div class=\"adc2-panel-body\">\r\n    <div class=\"adc2-section\">\r\n      <p class=\"adc2-sh\">Background<\/p>\r\n      <p class=\"adc2-bg-text\" id=\"adc2-p-bg\"><\/p>\r\n    <\/div>\r\n    <div class=\"adc2-section\">\r\n      <p class=\"adc2-sh\">Challenges<\/p>\r\n      <ul class=\"adc2-list\" id=\"adc2-p-challenges\"><\/ul>\r\n    <\/div>\r\n    <div class=\"adc2-section\">\r\n      <p class=\"adc2-sh\">Our solution<\/p>\r\n      <ul class=\"adc2-list\" id=\"adc2-p-solutions\"><\/ul>\r\n    <\/div>\r\n    <div class=\"adc2-section\" id=\"adc2-p-res-sec\">\r\n      <p class=\"adc2-sh\">Results<\/p>\r\n      <div class=\"adc2-result-grid\" id=\"adc2-p-results\"><\/div>\r\n    <\/div>\r\n    <div class=\"adc2-section\">\r\n      <p class=\"adc2-sh\">Tech stack<\/p>\r\n      <div class=\"adc2-panel-stack\" id=\"adc2-p-stack\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function(){\r\nvar P=[\r\n  {status:\"current\",ind:\"Technology\",title:\"AI Wildlife Detection \u2014 Road Hazard Prevention\",\r\n   tagline:\"End-to-end hardware and software system detecting kangaroos, wallabies, and other Australian animals on regional, rural, and urban roads.\",\r\n   tags:[\"t-current\",\"t-ai\"],tagLabels:[\"In progress\",\"AI \/ Hardware\"],accent:\"green\",\r\n   stack:[\"YOLOv8\",\"AWS SageMaker\",\"AWS S3\",\"Label Studio\",\"Jetson Nano\",\"Ubuntu\",\"Python\",\"PyTorch\"],\r\n   bg:\"Wildlife collisions are a serious and ongoing hazard on Australia's regional, rural, and urban roads and highways. Kangaroos, wallabies, and other native animals frequently cross roads at dawn and dusk, giving drivers little time to react. This project delivers an end-to-end hardware and software solution \u2014 from data labelling and model training through to edge deployment \u2014 to detect, alert, and monitor animal presence in real time, keeping drivers informed before a collision can occur.\",\r\n   challenges:[\"No production-ready system existed for detecting Australian native wildlife on roads in real time\",\"Building a large, high-quality labelled image dataset of kangaroos, wallabies, wombats, and other hazard animals across varied lighting, terrain, and road conditions\",\"Deploying a compute-efficient model on edge hardware capable of running in remote, low-connectivity environments\",\"Ensuring low-latency inference suitable for real-time driver alerting on fast-moving roads and highways\"],\r\n   solutions:[\"Collected and labelled tens of thousands of images using Label Studio, stored and managed in AWS S3\",\"Trained a YOLOv8 object detection model on AWS SageMaker, optimised for Australian wildlife classes including kangaroos, wallabies, wombats, and other road hazard animals\",\"Deployed the trained model onto Jetson Nano edge hardware running Ubuntu for on-device, real-time inference\",\"Built an alerting and monitoring layer to notify drivers of detected animals \u2014 designed for regional highways, rural roads, and urban fringe environments\",\"System operates independently of cloud connectivity once deployed, making it viable for remote Australian road conditions\"],\r\n   results:[{num:\"10s of 1000s\",label:\"Training images labelled\"},{num:\"Edge\",label:\"Jetson Nano deployment\"},{num:\"Real-time\",label:\"Driver alerting\"},{num:\"Offline-ready\",label:\"Remote road capable\"}]},\r\n\r\n  {status:\"current\",ind:\"Tourism\",title:\"RD Tours \u2014 Analytics & Marketing Automation\",\r\n   tagline:\"Full digital setup for a Maldives tourism operator: CRM, automation, analytics, and secure AWS infrastructure.\",\r\n   tags:[\"t-current\"],tagLabels:[\"In progress\"],accent:\"green\",\r\n   stack:[\"GHL\",\"WordPress\",\"MonsterInsights\",\"Google Analytics\",\"AWS\"],\r\n   bg:\"End-to-end digital transformation for a Maldives-focused tour operator. The project covers marketing automation, lead nurturing, web analytics integration, and secure AWS infrastructure to drive bookings and improve visibility into campaign performance.\",\r\n   challenges:[\"No CRM or lead tracking system in place \u2014 enquiries were being lost\",\"Marketing spend with no visibility into which channels were generating quality leads\",\"Website lacked analytics, conversion tracking, and security hardening\"],\r\n   solutions:[\"Implemented GHL (GoHighLevel) for CRM, lead capture forms, and automated email nurturing sequences\",\"Integrated MonsterInsights and Google Analytics for full-funnel visibility from first visit to booking\",\"Set up and secured AWS infrastructure with SSL, access controls, and monitoring\"],\r\n   results:[]},\r\n\r\n  {status:\"current\",ind:\"Tourism\",title:\"Maldives Islamic Tourism \u2014 Halal Discovery Platform\",\r\n   tagline:\"Dedicated platform surfacing halal-certified hotels, beaches, and events for Muslim travellers.\",\r\n   tags:[\"t-current\"],tagLabels:[\"In progress\"],accent:\"green\",\r\n   stack:[\"GHL\",\"WordPress\",\"MonsterInsights\",\"AWS\"],\r\n   bg:\"A niche tourism platform helping Muslim travellers discover halal-certified accommodations, beaches, and events across the Maldives. The project combines structured content, marketing automation, and lead capture to connect travellers with relevant offerings.\",\r\n   challenges:[\"No existing dedicated platform for halal-certified tourism discovery in the Maldives\",\"Manual curation of listings with no structured data or filtering capability\",\"No marketing automation to nurture leads from initial enquiry through to booking\"],\r\n   solutions:[\"Built a WordPress site with structured halal venue and event listings with category filtering\",\"Integrated GHL for automated lead nurturing, email campaigns, and booking follow-ups\",\"Deployed on AWS with security configuration, SSL, and uptime monitoring\"],\r\n   results:[]},\r\n\r\n  {status:\"delivered\",ind:\"Construction\",title:\"Revenue & Costing Dashboards \u2014 Major Melbourne Constructor\",\r\n   tagline:\"SQL Server integration, Excel pipeline automation, and executive dashboards for CFO and CTO.\",\r\n   tags:[\"t-delivered\",\"t-viz\"],tagLabels:[\"Delivered\",\"Data Viz\"],accent:\"blue\",\r\n   stack:[\"Tableau Cloud\",\"Tableau Prep\",\"Tableau Bridge\",\"SQL Server\",\"Python\",\"SQL\"],\r\n   bg:\"A large Melbourne-based construction company was relying on manual Excel exports and disconnected on-premise reporting, causing reconciliation errors, delays, and limited visibility for senior leadership. The CFO and CTO had no real-time view of revenue or project costs.\",\r\n   challenges:[\"Manual Excel dumps causing data inconsistencies and time-consuming reconciliation processes\",\"No real-time visibility into revenue performance or project costing across the business\",\"On-premise SQL Server not connected to any BI or reporting platform\"],\r\n   solutions:[\"Connected SQL Server to Tableau Cloud via Tableau Bridge for live, automated data refresh\",\"Automated Excel export pipelines using Python and Tableau Prep, eliminating manual data handling\",\"Built dedicated executive dashboards \u2014 revenue reporting for the CFO, cost and delivery tracking for the CTO\"],\r\n   results:[{num:\"Automated\",label:\"Reconciliation process\"},{num:\"2\",label:\"Executive dashboards\"},{num:\"Real-time\",label:\"Live data refresh\"},{num:\"Eliminated\",label:\"Manual Excel exports\"}]},\r\n\r\n  {status:\"delivered\",ind:\"Construction\",title:\"Databricks Lakehouse Platform \u2014 Construction Enterprise\",\r\n   tagline:\"Medallion architecture consolidating finance, MPR, and health & safety data with full CI\/CD.\",\r\n   tags:[\"t-delivered\",\"t-de\"],tagLabels:[\"Delivered\",\"Data Engineering\"],accent:\"blue\",\r\n   stack:[\"Databricks\",\"GitHub\",\"Python\",\"Medallion Architecture\",\"CI\/CD\"],\r\n   bg:\"A major construction enterprise needed to consolidate data from disparate health & safety, finance, and project management reporting systems into a single governed and scalable platform to support operational and executive decision-making.\",\r\n   challenges:[\"Data siloed across multiple disconnected health & safety, finance, and MPR systems\",\"No CI\/CD, versioning, or deployment standards for data pipelines \u2014 changes were risky and undocumented\",\"Inconsistent data quality with no medallion structure, governance, or audit capability\"],\r\n   solutions:[\"Built a Databricks lakehouse with Bronze, Silver, and Gold medallion architecture layers\",\"Implemented an ingestion framework to consolidate all source systems into a unified platform\",\"Established CI\/CD pipelines and GitHub versioning with deployment standards and code review processes\"],\r\n   results:[{num:\"3+\",label:\"Source systems unified\"},{num:\"Medallion\",label:\"Architecture implemented\"},{num:\"CI\/CD\",label:\"Pipelines deployed\"},{num:\"Gold layer\",label:\"BI-ready data\"}]},\r\n\r\n  {status:\"delivered\",ind:\"Finance\",title:\"Trial Balance Reporting & Account Standardisation\",\r\n   tagline:\"Python API ingestion into Databricks with medallion transformation and Power BI reporting.\",\r\n   tags:[\"t-delivered\",\"t-de\"],tagLabels:[\"Delivered\",\"Data Engineering\"],accent:\"blue\",\r\n   stack:[\"Databricks\",\"Python\",\"Power BI\",\"REST API\",\"Medallion Architecture\"],\r\n   bg:\"A finance team needed reliable, standardised trial balance reporting from internal accounting systems that were difficult to query, prone to manual error, and lacking any automated pipeline to their reporting layer.\",\r\n   challenges:[\"Internal accounting systems had no direct BI connectors or structured export capability\",\"Account naming inconsistencies across entities made consolidation unreliable and time-consuming\",\"No automated pipeline from source accounting systems to a reporting-ready layer\"],\r\n   solutions:[\"Built a Python API ingestion layer to reliably extract data from internal accounting systems\",\"Designed a medallion architecture in Databricks for data transformation and account standardisation\",\"Delivered Power BI dashboards for trial balance reporting and consolidated financial analysis\"],\r\n   results:[{num:\"Automated\",label:\"Trial balance pipeline\"},{num:\"Standardised\",label:\"Chart of accounts\"},{num:\"Power BI\",label:\"Live reporting\"},{num:\"Eliminated\",label:\"Manual reconciliation\"}]},\r\n\r\n  {status:\"delivered\",ind:\"Other\",title:\"Sydney Port \u2014 Revenue Analysis & Data Governance\",\r\n   tagline:\"Data engineering and Tableau analytics for port revenue and coal throughput, with security governance.\",\r\n   tags:[\"t-delivered\",\"t-viz\",\"t-sec\"],tagLabels:[\"Delivered\",\"Data Viz\",\"Security\"],accent:\"blue\",\r\n   stack:[\"Tableau\",\"Data Engineering\",\"Governance\",\"Security\"],\r\n   bg:\"A major Sydney port needed better visibility into revenue streams, an understanding of throughput bottlenecks \u2014 particularly around coal operations \u2014 and a governance and security framework to underpin their data platform.\",\r\n   challenges:[\"No unified view of port revenue across commodity types and operational areas\",\"Coal throughput bottlenecks not quantified, tracked, or reported in any systematic way\",\"Data platform lacked governance policies, access controls, and security standards\"],\r\n   solutions:[\"Built a data engineering framework to consolidate port operations data from multiple sources\",\"Delivered Tableau dashboards for revenue analysis, throughput tracking, and bottleneck identification\",\"Implemented a governance and security framework including access controls and data classification\"],\r\n   results:[{num:\"Bottlenecks\",label:\"Identified & quantified\"},{num:\"Unified\",label:\"Revenue reporting\"},{num:\"Governance\",label:\"Framework live\"},{num:\"Secured\",label:\"Platform access\"}]},\r\n\r\n  {status:\"delivered\",ind:\"Technology\",title:\"Finance Dashboards \u2014 Digital Creative App Company\",\r\n   tagline:\"Budget tracking, reimbursements, and financial reporting via Snowflake, dbt, and Tableau.\",\r\n   tags:[\"t-delivered\",\"t-viz\"],tagLabels:[\"Delivered\",\"Data Viz\"],accent:\"blue\",\r\n   stack:[\"Tableau Cloud\",\"Snowflake\",\"dbt\",\"Fivetran\"],\r\n   bg:\"A fast-growing mobile video creation app company needed finance data engineering and dashboards to manage budget tracking, reimbursements, and financial reporting at scale as the business grew rapidly.\",\r\n   challenges:[\"Finance data scattered across multiple source systems with no consolidated view\",\"No single source of truth for budget versus actuals comparison\",\"Manual reimbursement tracking was error-prone and not scalable\"],\r\n   solutions:[\"Ingested financial data from source systems into Snowflake using Fivetran\",\"Built dbt transformation models for budget, actuals, and reimbursement reporting layers\",\"Delivered Tableau Cloud dashboards providing the finance team with live visibility\"],\r\n   results:[{num:\"Automated\",label:\"Budget vs actuals\"},{num:\"dbt\",label:\"Transformation layer\"},{num:\"Snowflake\",label:\"Single source of truth\"},{num:\"Tableau Cloud\",label:\"Live dashboards\"}]},\r\n\r\n  {status:\"delivered\",ind:\"Other\",title:\"Route Deviation Detection \u2014 Courier & Logistics\",\r\n   tagline:\"GPS-based driver irregularity detection saving 5 hours per day with 100% reporting accuracy.\",\r\n   tags:[\"t-delivered\",\"t-de\"],tagLabels:[\"Delivered\",\"Data Engineering\"],accent:\"blue\",\r\n   stack:[\"dbt\",\"PostgreSQL\",\"Dagster\",\"Python\"],\r\n   bg:\"A courier company's operations executive was spending over five hours every day manually reviewing driver routes and flagging delivery irregularities \u2014 a process that was still producing less than 100% accurate results due to the volume of data involved.\",\r\n   challenges:[\"Route deviation detection done entirely by hand, consuming 5+ hours of executive time daily\",\"Pickup and delivery latitude\/longitude data was being collected but never analysed\",\"No automated alerting for irregular driver behaviour or route deviations\"],\r\n   solutions:[\"Built a data pipeline using Dagster and dbt on PostgreSQL to process GPS coordinate data\",\"Automated deviation detection by comparing actual driver routes against expected paths\",\"Delivered a dashboard replacing the entire manual reporting process with real-time anomaly flagging\"],\r\n   results:[{num:\"5 hrs\",label:\"Saved per day\"},{num:\"100%\",label:\"Reporting accuracy\"},{num:\"Automated\",label:\"Deviation detection\"},{num:\"Real-time\",label:\"Anomaly alerts\"}]},\r\n\r\n  {status:\"delivered\",ind:\"Healthcare\",title:\"Rostering & Occupancy Analytics \u2014 Australia's Largest Childcare Group\",\r\n   tagline:\"Snowflake warehouse, labour models, and KPI dashboards across hundreds of Australian centres.\",\r\n   tags:[\"t-delivered\",\"t-viz\",\"t-de\"],tagLabels:[\"Delivered\",\"Data Viz\",\"Data Engineering\"],accent:\"blue\",\r\n   stack:[\"Snowflake\",\"Fivetran\",\"AWS Lambda\",\"AWS SAM\",\"Power BI\",\"Tableau Cloud\"],\r\n   bg:\"Australia's largest childcare services provider needed a modern data warehousing and analytics platform to manage timesheets, rostering, and occupancy KPIs across hundreds of centres nationwide \u2014 replacing a fragmented system landscape with no consolidated reporting.\",\r\n   challenges:[\"Timesheet and rostering data siloed across multiple systems with no consolidated reporting view\",\"No KPI framework for occupancy rates, labour cost modelling, or centre performance\",\"Existing infrastructure not suited to the scale and geographic spread of the organisation\"],\r\n   solutions:[\"Designed a Snowflake data warehouse with Fivetran ingestion from multiple source systems\",\"Built AWS Lambda and SAM infrastructure for event-driven, scalable data pipelines\",\"Delivered Power BI and Tableau Cloud dashboards with labour cost models and occupancy KPIs\"],\r\n   results:[{num:\"Nationwide\",label:\"Multi-centre rollout\"},{num:\"Labour model\",label:\"Built & deployed\"},{num:\"Occupancy KPIs\",label:\"Live dashboards\"},{num:\"Cloud-native\",label:\"Infrastructure\"}]},\r\n\r\n  {status:\"delivered\",ind:\"Other\",title:\"Platform Migrations \u2014 Cloud & BI Modernisation\",\r\n   tagline:\"Six major migrations: Power BI \u2192 Tableau, Tableau Server \u2192 Cloud, Azure \u2192 AWS, on-prem \u2192 Snowflake\/Databricks.\",\r\n   tags:[\"t-delivered\",\"t-mig\"],tagLabels:[\"Delivered\",\"Migration\"],accent:\"blue\",\r\n   stack:[\"Tableau\",\"Power BI\",\"Snowflake\",\"Databricks\",\"AWS\",\"Azure\",\"PostgreSQL\"],\r\n   bg:\"Multiple clients needed to modernise their data and BI stacks by migrating off legacy platforms. Projects ranged from BI tool migrations through to full cloud infrastructure transitions \u2014 each requiring careful data parity validation and team enablement.\",\r\n   challenges:[\"Dashboards and data pipelines tightly coupled to legacy platforms, making migration complex\",\"Risk of data loss, broken reports, or business disruption during live migrations\",\"Teams unfamiliar with target platforms requiring structured onboarding and documentation\"],\r\n   solutions:[\"Migrated Power BI environments to Tableau with full report parity validation\",\"Migrated Tableau Server deployments to Tableau Cloud with governance and permission mapping\",\"Migrated Azure workloads to AWS and on-prem\/PostgreSQL databases to Snowflake and Databricks\"],\r\n   results:[{num:\"6\",label:\"Migrations completed\"},{num:\"Zero\",label:\"Data loss\"},{num:\"Cloud-native\",label:\"Architecture\"},{num:\"Full parity\",label:\"Dashboard validation\"}]},\r\n\r\n  {status:\"delivered\",ind:\"Healthcare\",title:\"Data Engineering Modernisation \u2014 GP Medical Group\",\r\n   tagline:\"Modern data architecture replacing legacy on-prem systems with full auditability and accuracy.\",\r\n   tags:[\"t-delivered\",\"t-de\"],tagLabels:[\"Delivered\",\"Data Engineering\"],accent:\"blue\",\r\n   stack:[\"Python\",\"SQL\",\"Data Architecture\",\"ETL\"],\r\n   bg:\"A GP medical group was operating on legacy on-premise software causing slow processing, inaccurate and incomplete reporting, and no audit trail \u2014 putting clinical and operational decision-making at risk and consuming excessive analyst time.\",\r\n   challenges:[\"Legacy on-prem systems causing significant latency and slow data processing\",\"Inaccurate and incomplete data with no auditability or lineage tracking\",\"Analysts spending the majority of their time on manual data preparation rather than analysis\"],\r\n   solutions:[\"Implemented a modern data engineering architecture to replace legacy on-prem pipelines\",\"Built audit logging, data quality checks, and lineage tracking throughout the pipeline\",\"Automated data preparation workflows, significantly reducing analyst manual workload\"],\r\n   results:[{num:\"Resolved\",label:\"Latency issues\"},{num:\"Full\",label:\"Auditability\"},{num:\"Improved\",label:\"Data accuracy\"},{num:\"Reduced\",label:\"Manual workload\"}]},\r\n\r\n  {status:\"delivered\",ind:\"Other\",title:\"Horse Racing Analysis Tool\",\r\n   tagline:\"Barrier, price range, and track condition filtering with visualised performance outputs.\",\r\n   tags:[\"t-delivered\",\"t-viz\"],tagLabels:[\"Delivered\",\"Data Viz\"],accent:\"blue\",\r\n   stack:[\"Python\",\"Excel\",\"Matplotlib\",\"Pandas\"],\r\n   bg:\"Built a racing data analysis platform that allows users to upload race files and apply layered filters \u2014 barrier position, price range, track conditions \u2014 to surface top-performing horses with visual and exportable outputs.\",\r\n   challenges:[\"Manual analysis of race data was time-consuming and produced inconsistent results\",\"No separation between good track and heavy track performance when evaluating horses\",\"Results were not visualised or exportable in a format useful for decision-making\"],\r\n   solutions:[\"Built a Python-based analysis engine with configurable filter rules for barrier, PR range, and advanced metrics\",\"Implemented good track and heavy track performance splits with bar chart visualisations\",\"Added exportable results tables with per-horse statistics across all filter dimensions\"],\r\n   results:[{num:\"Good\/Heavy\",label:\"Track split\"},{num:\"Configurable\",label:\"Filter engine\"},{num:\"Exportable\",label:\"Results\"},{num:\"Visual\",label:\"Charts\"}]},\r\n\r\n  {status:\"delivered\",ind:\"Healthcare\",title:\"Data Integration POC \u2014 Skin Treatment Clinic\",\r\n   tagline:\"Fresha migration proof-of-concept with full data pipeline and Tableau dashboards.\",\r\n   tags:[\"t-delivered\",\"t-de\"],tagLabels:[\"Delivered\",\"Data Engineering\"],accent:\"blue\",\r\n   stack:[\"Fresha\",\"Python\",\"PostgreSQL\",\"Tableau\",\"SQL\",\"pandas\"],\r\n   bg:\"A multi-location skin treatment clinic was managing appointments across two disconnected systems \u2014 Phorest for in-clinic bookings and Timely for online bookings \u2014 causing double-booking risks and significant manual reconciliation overhead with no analytics capability.\",\r\n   challenges:[\"Appointments from Phorest not syncing to Timely, creating double-booking risk across locations\",\"Timely offered no public API to programmatically update or manage calendar entries\",\"Fragmented data across two systems with no ability to analyse clinic performance or revenue\"],\r\n   solutions:[\"Designed a POC to migrate the clinic to Fresha as a unified appointment, CRM, and analytics platform\",\"Built a full Python data pipeline from Fresha into PostgreSQL for analysis and reporting\",\"Delivered Tableau dashboards for clinic performance metrics \u2014 also used as a training asset for data analytics interns\"],\r\n   results:[{num:\"POC\",label:\"Delivered\"},{num:\"Eliminated\",label:\"Double-booking\"},{num:\"Unified\",label:\"Platform\"},{num:\"Training\",label:\"Asset created\"}]},\r\n\r\n  {status:\"delivered\",ind:\"Technology\",title:\"Roget's Thesaurus Analyser\",\r\n   tagline:\"Bulk verb classification tool against Roget's Thesaurus taxonomy with file upload and download.\",\r\n   tags:[\"t-delivered\"],tagLabels:[\"Delivered\"],accent:\"blue\",\r\n   stack:[\"Python\",\"NLP\",\"Flask\",\"Web App\"],\r\n   bg:\"Built a web-based tool that accepts a plain text file of verbs \u2014 one per line \u2014 and classifies each against Roget's Thesaurus categories, returning structured results that can be downloaded. Designed for researchers and linguists needing to analyse large verb sets efficiently.\",\r\n   challenges:[\"No existing tool for bulk verb-to-thesaurus classification at scale\",\"Manual lookup process was slow and impractical for research-scale verb datasets\"],\r\n   solutions:[\"Built a Python NLP pipeline to match and classify verbs against Roget's Thesaurus taxonomy\",\"Wrapped the pipeline in a clean web interface with file upload, processing, and downloadable results\",\"Designed for non-technical users with clear instructions and example file formats\"],\r\n   results:[{num:\"Bulk\",label:\"File upload\"},{num:\"Structured\",label:\"Classification\"},{num:\"Downloadable\",label:\"Results\"},{num:\"Simple\",label:\"User interface\"}]}\r\n];\r\n\r\nvar activeTab='all', activeInd='all';\r\n\r\nfunction adcRender(){\r\n  var list=P.slice();\r\n  if(activeTab!=='all') list=list.filter(function(p){return p.status===activeTab});\r\n  if(activeInd!=='all') list=list.filter(function(p){return p.ind===activeInd});\r\n  document.getElementById('adc2-count').textContent=list.length+' project'+(list.length!==1?'s':'');\r\n  var g=document.getElementById('adc2-grid');\r\n  if(!list.length){g.innerHTML='<div class=\"adc2-empty\">No projects match the selected filters.<\/div>';return;}\r\n  g.innerHTML=list.map(function(p){\r\n    var idx=P.indexOf(p);\r\n    var tagHtml=p.tags.map(function(t,j){\r\n      return'<span class=\"adc2-tag '+t+'\"><span class=\"adc2-tag-dot\"><\/span>'+p.tagLabels[j]+'<\/span>'\r\n    }).join('');\r\n    var shown=p.stack.slice(0,4).map(function(s){return'<span class=\"adc2-sp\">'+s+'<\/span>'}).join('');\r\n    var extra=p.stack.length>4?'<span class=\"adc2-sp\">+'+( p.stack.length-4)+' more<\/span>':'';\r\n    return'<div class=\"adc2-card\" onclick=\"adc2Open('+idx+')\">'+\r\n      '<div class=\"adc2-card-accent'+(p.accent==='green'?' green':'')+'\"><\/div>'+\r\n      '<div class=\"adc2-card-top\">'+\r\n        '<div class=\"adc2-tag-row\">'+tagHtml+'<\/div>'+\r\n        '<p class=\"adc2-card-title\">'+p.title+'<\/p>'+\r\n        '<p class=\"adc2-card-ind\">'+p.ind+'<\/p>'+\r\n        '<p class=\"adc2-card-tagline\">'+p.tagline+'<\/p>'+\r\n      '<\/div>'+\r\n      '<div class=\"adc2-stack-row\">'+shown+extra+'<\/div>'+\r\n      '<div class=\"adc2-card-footer\">'+\r\n        '<span class=\"adc2-view-more\">View case study <span>\u2192<\/span><\/span>'+\r\n        (p.results.length?'<span class=\"adc2-res-badge\">'+p.results.length+' outcomes<\/span>':'')+\r\n      '<\/div>'+\r\n    '<\/div>';\r\n  }).join('');\r\n}\r\n\r\nfunction adc2Open(idx){\r\n  var p=P[idx];\r\n  document.getElementById('adc2-p-title').textContent=p.title;\r\n  document.getElementById('adc2-p-ind').textContent=p.ind;\r\n  document.getElementById('adc2-p-tags').innerHTML=p.tags.map(function(t,j){\r\n    return'<span class=\"adc2-tag '+t+'\"><span class=\"adc2-tag-dot\"><\/span>'+p.tagLabels[j]+'<\/span>'\r\n  }).join('');\r\n  document.getElementById('adc2-p-bg').textContent=p.bg;\r\n  document.getElementById('adc2-p-challenges').innerHTML=p.challenges.map(function(c){return'<li>'+c+'<\/li>'}).join('');\r\n  document.getElementById('adc2-p-solutions').innerHTML=p.solutions.map(function(s){return'<li>'+s+'<\/li>'}).join('');\r\n  var rs=document.getElementById('adc2-p-res-sec');\r\n  rs.style.display=p.results.length?'block':'none';\r\n  document.getElementById('adc2-p-results').innerHTML=p.results.map(function(r){\r\n    return'<div class=\"adc2-rc\"><span class=\"adc2-rnum\">'+r.num+'<\/span><span class=\"adc2-rlabel\">'+r.label+'<\/span><\/div>'\r\n  }).join('');\r\n  document.getElementById('adc2-p-stack').innerHTML=p.stack.map(function(s){return'<span class=\"adc2-psp\">'+s+'<\/span>'}).join('');\r\n  document.getElementById('adc2-overlay').classList.add('open');\r\n  document.getElementById('adc2-panel').classList.add('open');\r\n  document.body.style.overflow='hidden';\r\n}\r\n\r\nfunction adc2Close(){\r\n  document.getElementById('adc2-overlay').classList.remove('open');\r\n  document.getElementById('adc2-panel').classList.remove('open');\r\n  document.body.style.overflow='';\r\n}\r\n\r\nwindow.adcSetTab=function(tab,btn){\r\n  activeTab=tab;\r\n  document.querySelectorAll('.adc2-tab').forEach(function(b){b.classList.remove('active')});\r\n  btn.classList.add('active');\r\n  adcRender();\r\n};\r\nwindow.adcSetInd=function(ind,btn){\r\n  activeInd=ind;\r\n  document.querySelectorAll('.adc2-fp').forEach(function(b){b.classList.remove('on')});\r\n  btn.classList.add('on');\r\n  adcRender();\r\n};\r\nwindow.adc2Open=adc2Open;\r\nwindow.adc2Close=adc2Close;\r\n\r\nadcRender();\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c63770e elementor-widget elementor-widget-html\" data-id=\"c63770e\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- AI Data Consulting \u2014 Projects Page: Below-fold sections | Paste into Elementor HTML Widget BELOW the projects grid -->\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&family=Sora:wght@600;700&display=swap\" rel=\"stylesheet\">\r\n\r\n<style>\r\n  .blw *{box-sizing:border-box;margin:0;padding:0;font-family:'Inter',sans-serif}\r\n  .blw{color:#1a2332}\r\n\r\n  .blw-section{padding:72px 0}\r\n  .blw-eyebrow{display:inline-flex;align-items:center;gap:8px;background:#f0f7ff;border:1px solid #c7e0ff;border-radius:20px;padding:5px 14px;font-size:11px;font-weight:700;color:#1d6fce;letter-spacing:.07em;text-transform:uppercase;margin-bottom:14px}\r\n  .blw-eyebrow-dot{width:6px;height:6px;border-radius:50%;background:#1d6fce}\r\n  .blw-section-title{font-family:'Sora',sans-serif;font-size:32px;font-weight:700;color:#0F2A4A;margin-bottom:10px;line-height:1.2}\r\n  .blw-section-sub{font-size:16px;color:#64748b;line-height:1.6;max-width:520px}\r\n  .blw-section-head{margin-bottom:44px}\r\n  .blw-divider{height:1px;background:linear-gradient(90deg,transparent,#e2e8f0 20%,#e2e8f0 80%,transparent);margin:0}\r\n\r\n  \/* Tech Stack *\/\r\n  .blw-stack-categories{display:flex;flex-direction:column;gap:28px}\r\n  .blw-cat-row{display:flex;align-items:flex-start;gap:20px}\r\n  .blw-cat-label{font-size:11px;font-weight:700;color:#94a3b8;text-transform:uppercase;letter-spacing:.08em;width:150px;flex-shrink:0;padding-top:8px}\r\n  .blw-pills{display:flex;flex-wrap:wrap;gap:8px;flex:1}\r\n  .blw-pill{padding:7px 16px;border-radius:10px;font-size:13px;font-weight:500;border:1.5px solid;transition:transform .15s}\r\n  .blw-pill:hover{transform:translateY(-2px)}\r\n  .blw-pill-cloud{background:#f0f7ff;color:#1e40af;border-color:#bfdbfe}\r\n  .blw-pill-bi{background:#f5f3ff;color:#5b21b6;border-color:#ddd6fe}\r\n  .blw-pill-de{background:#ecfdf5;color:#065f46;border-color:#a7f3d0}\r\n  .blw-pill-ai{background:#fff7ed;color:#9a3412;border-color:#fed7aa}\r\n  .blw-pill-crm{background:#fdf4ff;color:#7e22ce;border-color:#e9d5ff}\r\n  .blw-pill-lang{background:#f8fafc;color:#334155;border-color:#cbd5e1}\r\n\r\n  \/* Process *\/\r\n  .blw-process-wrap{background:#f8fafc;border-radius:20px;border:1.5px solid #e8edf5;overflow:hidden}\r\n  .blw-process{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}\r\n  .blw-process-step{padding:32px 28px;position:relative}\r\n  .blw-process-step:not(:last-child)::after{content:'';position:absolute;top:44px;right:0;width:1px;height:48px;background:#e2e8f0}\r\n  .blw-step-num{font-family:'Sora',sans-serif;font-size:38px;font-weight:700;color:#e8edf5;line-height:1;margin-bottom:18px}\r\n  .blw-step-icon{width:46px;height:46px;border-radius:13px;display:flex;align-items:center;justify-content:center;margin-bottom:18px}\r\n  .blw-step-title{font-family:'Sora',sans-serif;font-size:16px;font-weight:700;color:#0F2A4A;margin-bottom:9px}\r\n  .blw-step-desc{font-size:13.5px;color:#64748b;line-height:1.7}\r\n  .blw-step-1 .blw-step-icon{background:#dbeafe}\r\n  .blw-step-2 .blw-step-icon{background:#dcfce7}\r\n  .blw-step-3 .blw-step-icon{background:#ede9fe}\r\n  .blw-step-4 .blw-step-icon{background:#fff7ed}\r\n\r\n  \/* CTA *\/\r\n  .blw-cta{background:#0F2A4A;border-radius:24px;padding:64px 56px}\r\n  .blw-cta-eyebrow{display:inline-flex;align-items:center;gap:7px;background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.18);border-radius:20px;padding:5px 14px;font-size:11px;font-weight:700;color:rgba(255,255,255,0.75);letter-spacing:.07em;text-transform:uppercase;margin-bottom:18px}\r\n  .blw-cta-dot{width:5px;height:5px;border-radius:50%;background:#4ade80}\r\n  .blw-cta h3{font-family:'Sora',sans-serif;font-size:34px;font-weight:700;color:#fff;line-height:1.2;margin-bottom:12px;max-width:540px}\r\n  .blw-cta-sub{font-size:16px;color:rgba(255,255,255,0.6);line-height:1.7;max-width:500px;margin-bottom:36px}\r\n  .blw-cta-trust{display:flex;align-items:center;gap:24px;flex-wrap:wrap;margin-bottom:48px}\r\n  .blw-trust-item{display:flex;align-items:center;gap:8px;font-size:13px;color:rgba(255,255,255,0.55)}\r\n  .blw-trust-check{width:18px;height:18px;border-radius:50%;background:rgba(74,222,128,0.15);border:1px solid rgba(74,222,128,0.5);display:flex;align-items:center;justify-content:center;flex-shrink:0}\r\n  .blw-trust-check svg{width:9px;height:9px;stroke:#4ade80;fill:none;stroke-width:2.5}\r\n  .blw-cta-contact{display:flex;gap:16px;flex-wrap:wrap}\r\n  .blw-contact-item{display:flex;align-items:center;gap:12px;background:rgba(255,255,255,0.07);border:1px solid rgba(255,255,255,0.12);border-radius:14px;padding:16px 22px}\r\n  .blw-contact-icon{width:38px;height:38px;border-radius:10px;background:rgba(255,255,255,0.1);display:flex;align-items:center;justify-content:center;flex-shrink:0}\r\n  .blw-contact-icon svg{width:18px;height:18px;stroke:rgba(255,255,255,0.8);fill:none;stroke-width:1.8}\r\n  .blw-contact-label{font-size:11px;font-weight:600;color:rgba(255,255,255,0.4);text-transform:uppercase;letter-spacing:.06em;margin-bottom:3px}\r\n  .blw-contact-value{font-size:14px;font-weight:600;color:#fff}\r\n  .blw-form-placeholder{background:rgba(255,255,255,0.05);border:1.5px dashed rgba(255,255,255,0.15);border-radius:16px;padding:28px;text-align:center;color:rgba(255,255,255,0.3);font-size:13px;margin-top:36px}\r\n\r\n  @media(max-width:640px){\r\n    .blw-section{padding:48px 0}\r\n    .blw-cta{padding:36px 24px}\r\n    .blw-cta h3{font-size:24px}\r\n    .blw-cat-row{flex-direction:column;gap:10px}\r\n    .blw-cat-label{width:auto}\r\n    .blw-process-step:not(:last-child)::after{display:none}\r\n    .blw-cta-trust{gap:14px}\r\n  }\r\n<\/style>\r\n\r\n<div class=\"blw\">\r\n\r\n  <div class=\"blw-divider\"><\/div>\r\n\r\n  <!-- \u2500\u2500 TECH STACK \u2500\u2500 -->\r\n  <div class=\"blw-section\">\r\n    <div class=\"blw-section-head\">\r\n      <div class=\"blw-eyebrow\"><span class=\"blw-eyebrow-dot\"><\/span>Technologies<\/div>\r\n      <h2 class=\"blw-section-title\">Our tech stack<\/h2>\r\n      <p class=\"blw-section-sub\">The platforms and tools we use to deliver production-grade data and AI solutions.<\/p>\r\n    <\/div>\r\n    <div class=\"blw-stack-categories\">\r\n      <div class=\"blw-cat-row\">\r\n        <span class=\"blw-cat-label\">Cloud & Infra<\/span>\r\n        <div class=\"blw-pills\">\r\n          <span class=\"blw-pill blw-pill-cloud\">AWS<\/span>\r\n          <span class=\"blw-pill blw-pill-cloud\">AWS SageMaker<\/span>\r\n          <span class=\"blw-pill blw-pill-cloud\">AWS Lambda<\/span>\r\n          <span class=\"blw-pill blw-pill-cloud\">AWS S3<\/span>\r\n          <span class=\"blw-pill blw-pill-cloud\">Azure<\/span>\r\n          <span class=\"blw-pill blw-pill-cloud\">Snowflake<\/span>\r\n          <span class=\"blw-pill blw-pill-cloud\">Databricks<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"blw-cat-row\">\r\n        <span class=\"blw-cat-label\">BI & Visualisation<\/span>\r\n        <div class=\"blw-pills\">\r\n          <span class=\"blw-pill blw-pill-bi\">Tableau Cloud<\/span>\r\n          <span class=\"blw-pill blw-pill-bi\">Tableau Server<\/span>\r\n          <span class=\"blw-pill blw-pill-bi\">Tableau Prep<\/span>\r\n          <span class=\"blw-pill blw-pill-bi\">Power BI<\/span>\r\n          <span class=\"blw-pill blw-pill-bi\">Matplotlib<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"blw-cat-row\">\r\n        <span class=\"blw-cat-label\">Data Engineering<\/span>\r\n        <div class=\"blw-pills\">\r\n          <span class=\"blw-pill blw-pill-de\">dbt<\/span>\r\n          <span class=\"blw-pill blw-pill-de\">Fivetran<\/span>\r\n          <span class=\"blw-pill blw-pill-de\">Dagster<\/span>\r\n          <span class=\"blw-pill blw-pill-de\">PostgreSQL<\/span>\r\n          <span class=\"blw-pill blw-pill-de\">SQL Server<\/span>\r\n          <span class=\"blw-pill blw-pill-de\">Medallion Architecture<\/span>\r\n          <span class=\"blw-pill blw-pill-de\">CI\/CD<\/span>\r\n          <span class=\"blw-pill blw-pill-de\">GitHub<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"blw-cat-row\">\r\n        <span class=\"blw-cat-label\">AI & ML<\/span>\r\n        <div class=\"blw-pills\">\r\n          <span class=\"blw-pill blw-pill-ai\">YOLOv8<\/span>\r\n          <span class=\"blw-pill blw-pill-ai\">PyTorch<\/span>\r\n          <span class=\"blw-pill blw-pill-ai\">Label Studio<\/span>\r\n          <span class=\"blw-pill blw-pill-ai\">Jetson Nano<\/span>\r\n          <span class=\"blw-pill blw-pill-ai\">Agentic AI<\/span>\r\n          <span class=\"blw-pill blw-pill-ai\">NLP<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"blw-cat-row\">\r\n        <span class=\"blw-cat-label\">CRM & Marketing<\/span>\r\n        <div class=\"blw-pills\">\r\n          <span class=\"blw-pill blw-pill-crm\">GoHighLevel (GHL)<\/span>\r\n          <span class=\"blw-pill blw-pill-crm\">WordPress<\/span>\r\n          <span class=\"blw-pill blw-pill-crm\">MonsterInsights<\/span>\r\n          <span class=\"blw-pill blw-pill-crm\">Google Analytics<\/span>\r\n          <span class=\"blw-pill blw-pill-crm\">Fresha<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"blw-cat-row\">\r\n        <span class=\"blw-cat-label\">Languages<\/span>\r\n        <div class=\"blw-pills\">\r\n          <span class=\"blw-pill blw-pill-lang\">Python<\/span>\r\n          <span class=\"blw-pill blw-pill-lang\">SQL<\/span>\r\n          <span class=\"blw-pill blw-pill-lang\">pandas<\/span>\r\n          <span class=\"blw-pill blw-pill-lang\">Flask<\/span>\r\n          <span class=\"blw-pill blw-pill-lang\">SQLAlchemy<\/span>\r\n          <span class=\"blw-pill blw-pill-lang\">Ubuntu<\/span>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"blw-divider\"><\/div>\r\n\r\n  <!-- \u2500\u2500 HOW WE WORK \u2500\u2500 -->\r\n  <div class=\"blw-section\">\r\n    <div class=\"blw-section-head\">\r\n      <div class=\"blw-eyebrow\"><span class=\"blw-eyebrow-dot\"><\/span>Process<\/div>\r\n      <h2 class=\"blw-section-title\">How we work with you<\/h2>\r\n      <p class=\"blw-section-sub\">Every engagement follows a proven process \u2014 from understanding your business to delivering outcomes that last.<\/p>\r\n    <\/div>\r\n    <div class=\"blw-process-wrap\">\r\n      <div class=\"blw-process\">\r\n        <div class=\"blw-process-step blw-step-1\">\r\n          <div class=\"blw-step-num\">01<\/div>\r\n          <div class=\"blw-step-icon\">\r\n            <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#1e40af\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"\/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"\/><\/svg>\r\n          <\/div>\r\n          <div class=\"blw-step-title\">Discover<\/div>\r\n          <div class=\"blw-step-desc\">We start by deeply understanding your business, data landscape, and goals \u2014 before writing a single line of code.<\/div>\r\n        <\/div>\r\n        <div class=\"blw-process-step blw-step-2\">\r\n          <div class=\"blw-step-num\">02<\/div>\r\n          <div class=\"blw-step-icon\">\r\n            <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#15803d\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"\/><path d=\"M3 9h18M9 21V9\"\/><\/svg>\r\n          <\/div>\r\n          <div class=\"blw-step-title\">Design<\/div>\r\n          <div class=\"blw-step-desc\">We design a solution that's right-sized for your budget and scale \u2014 practical, not over-engineered.<\/div>\r\n        <\/div>\r\n        <div class=\"blw-process-step blw-step-3\">\r\n          <div class=\"blw-step-num\">03<\/div>\r\n          <div class=\"blw-step-icon\">\r\n            <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#6d28d9\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"16 18 22 12 16 6\"\/><polyline points=\"8 6 2 12 8 18\"\/><\/svg>\r\n          <\/div>\r\n          <div class=\"blw-step-title\">Deliver<\/div>\r\n          <div class=\"blw-step-desc\">We build, test, and launch with clear milestones and open communication throughout the project.<\/div>\r\n        <\/div>\r\n        <div class=\"blw-process-step blw-step-4\">\r\n          <div class=\"blw-step-num\">04<\/div>\r\n          <div class=\"blw-step-icon\">\r\n            <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#c2410c\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 20h9\"\/><path d=\"M16.5 3.5a2.121 2.121 0 013 3L7 19l-4 1 1-4L16.5 3.5z\"\/><\/svg>\r\n          <\/div>\r\n          <div class=\"blw-step-title\">Support<\/div>\r\n          <div class=\"blw-step-desc\">After launch we stay involved \u2014 providing optimisation, training, and ongoing guidance as your needs evolve.<\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"blw-divider\"><\/div>\r\n\r\n  <!-- \u2500\u2500 CTA \u2500\u2500 -->\r\n  <div class=\"blw-section\">\r\n    <div class=\"blw-cta\">\r\n      <div class=\"blw-cta-eyebrow\"><span class=\"blw-cta-dot\"><\/span>Let's talk<\/div>\r\n      <h3>Have a project in mind?<\/h3>\r\n      <p class=\"blw-cta-sub\">Book a free discovery call and let's explore how data and AI can move your business forward. No lock-in, no jargon \u2014 just a straightforward conversation about what's possible.<\/p>\r\n      <div class=\"blw-cta-trust\">\r\n        <div class=\"blw-trust-item\">\r\n          <div class=\"blw-trust-check\"><svg viewBox=\"0 0 10 10\"><polyline points=\"2,5 4,7.5 8,3\"\/><\/svg><\/div>\r\n          Free discovery call\r\n        <\/div>\r\n        <div class=\"blw-trust-item\">\r\n          <div class=\"blw-trust-check\"><svg viewBox=\"0 0 10 10\"><polyline points=\"2,5 4,7.5 8,3\"\/><\/svg><\/div>\r\n          No lock-in contracts\r\n        <\/div>\r\n        <div class=\"blw-trust-item\">\r\n          <div class=\"blw-trust-check\"><svg viewBox=\"0 0 10 10\"><polyline points=\"2,5 4,7.5 8,3\"\/><\/svg><\/div>\r\n          Melbourne-based team\r\n        <\/div>\r\n        <div class=\"blw-trust-item\">\r\n          <div class=\"blw-trust-check\"><svg viewBox=\"0 0 10 10\"><polyline points=\"2,5 4,7.5 8,3\"\/><\/svg><\/div>\r\n          Australia-wide delivery\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"blw-cta-contact\">\r\n        <div class=\"blw-contact-item\">\r\n          <div class=\"blw-contact-icon\">\r\n            <svg viewBox=\"0 0 24 24\"><path d=\"M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07A19.5 19.5 0 013.07 9.81 19.79 19.79 0 01.06 1.18 2 2 0 012.03 0h3a2 2 0 012 1.72c.13 1 .39 1.97.74 2.91a2 2 0 01-.45 2.11L6.09 7.91a16 16 0 006 6l1.17-1.17a2 2 0 012.11-.45c.94.35 1.91.61 2.91.74A2 2 0 0122 16.92z\"\/><\/svg>\r\n          <\/div>\r\n          <div>\r\n            <div class=\"blw-contact-label\">Phone<\/div>\r\n            <div class=\"blw-contact-value\">+61 403 287 411<\/div>\r\n          <\/div>\r\n        <\/div>\r\n        <div class=\"blw-contact-item\">\r\n          <div class=\"blw-contact-icon\">\r\n            <svg viewBox=\"0 0 24 24\"><path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\"\/><polyline points=\"22,6 12,13 2,6\"\/><\/svg>\r\n          <\/div>\r\n          <div>\r\n            <div class=\"blw-contact-label\">Email<\/div>\r\n            <div class=\"blw-contact-value\">info@aidataconsulting.com.au<\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n      <!-- GHL FORM GOES HERE \u2014 paste your GHL embed code below this comment -->\r\n      <div class=\"blw-form-placeholder\">\r\n          <iframe\r\n    src=\"https:\/\/link.malex.au\/widget\/form\/z2pnzTbS9vAZvlsj00ni\"\r\n    style=\"width:100%;height:100%;border:none;border-radius:3px\"\r\n    id=\"inline-z2pnzTbS9vAZvlsj00ni\" \r\n    data-layout=\"{'id':'INLINE'}\"\r\n    data-trigger-type=\"alwaysShow\"\r\n    data-trigger-value=\"\"\r\n    data-activation-type=\"alwaysActivated\"\r\n    data-activation-value=\"\"\r\n    data-deactivation-type=\"neverDeactivate\"\r\n    data-deactivation-value=\"\"\r\n    data-form-name=\"Website Leads - Consulting\"\r\n    data-height=\"819\"\r\n    data-layout-iframe-id=\"inline-z2pnzTbS9vAZvlsj00ni\"\r\n    data-form-id=\"z2pnzTbS9vAZvlsj00ni\"\r\n    title=\"Website Leads - Consulting\"\r\n        >\r\n<\/iframe>\r\n<script src=\"https:\/\/link.malex.au\/js\/form_embed.js\"><\/script>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n<\/div>\r\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-16b8e6f e-con-full e-flex e-con e-child\" data-id=\"16b8e6f\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-968600f elementor-widget elementor-widget-image\" data-id=\"968600f\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.aidataconsulting.com.au\/wp-content\/uploads\/2026\/03\/1-1024x576.jpg\" class=\"attachment-large size-large wp-image-1840\" alt=\"\" srcset=\"https:\/\/www.aidataconsulting.com.au\/wp-content\/uploads\/2026\/03\/1-1024x576.jpg 1024w, https:\/\/www.aidataconsulting.com.au\/wp-content\/uploads\/2026\/03\/1-300x169.jpg 300w, https:\/\/www.aidataconsulting.com.au\/wp-content\/uploads\/2026\/03\/1-768x432.jpg 768w, https:\/\/www.aidataconsulting.com.au\/wp-content\/uploads\/2026\/03\/1-1536x864.jpg 1536w, https:\/\/www.aidataconsulting.com.au\/wp-content\/uploads\/2026\/03\/1.jpg 1600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-89a27ea elementor-widget elementor-widget-image\" data-id=\"89a27ea\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.aidataconsulting.com.au\/wp-content\/uploads\/2026\/03\/2-1024x576.jpg\" class=\"attachment-large size-large wp-image-1841\" alt=\"\" srcset=\"https:\/\/www.aidataconsulting.com.au\/wp-content\/uploads\/2026\/03\/2-1024x576.jpg 1024w, https:\/\/www.aidataconsulting.com.au\/wp-content\/uploads\/2026\/03\/2-300x169.jpg 300w, https:\/\/www.aidataconsulting.com.au\/wp-content\/uploads\/2026\/03\/2-768x432.jpg 768w, https:\/\/www.aidataconsulting.com.au\/wp-content\/uploads\/2026\/03\/2-1536x864.jpg 1536w, https:\/\/www.aidataconsulting.com.au\/wp-content\/uploads\/2026\/03\/2.jpg 1600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Portfolio Our Projects 15+Projects 8+Industries 3In progress 12+Delivered All projects In progress Delivered Industry All Construction Finance Tourism Technology Healthcare Other \u2715 Background Challenges Our solution Results Tech stack Technologies Our tech stack The platforms and tools we use to deliver production-grade data and AI solutions. Cloud &#038; Infra AWS AWS SageMaker AWS Lambda AWS [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1825","page","type-page","status-publish","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/www.aidataconsulting.com.au\/index.php?rest_route=\/wp\/v2\/pages\/1825","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.aidataconsulting.com.au\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.aidataconsulting.com.au\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.aidataconsulting.com.au\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.aidataconsulting.com.au\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1825"}],"version-history":[{"count":12,"href":"https:\/\/www.aidataconsulting.com.au\/index.php?rest_route=\/wp\/v2\/pages\/1825\/revisions"}],"predecessor-version":[{"id":1844,"href":"https:\/\/www.aidataconsulting.com.au\/index.php?rest_route=\/wp\/v2\/pages\/1825\/revisions\/1844"}],"wp:attachment":[{"href":"https:\/\/www.aidataconsulting.com.au\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1825"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}