<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[MiQ Tech and Analytics - Medium]]></title>
        <description><![CDATA[We’re MiQ, a programmatic media partner for brands and agencies - Medium]]></description>
        <link>https://medium.com/miq-tech-and-analytics?source=rss----3ad124eebfe5---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>MiQ Tech and Analytics - Medium</title>
            <link>https://medium.com/miq-tech-and-analytics?source=rss----3ad124eebfe5---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 00:17:57 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/miq-tech-and-analytics" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[The “Why, What, and How” of modern social media targeting]]></title>
            <link>https://medium.com/miq-tech-and-analytics/the-why-what-and-how-of-modern-social-media-targeting-cff892ea748a?source=rss----3ad124eebfe5---4</link>
            <guid isPermaLink="false">https://medium.com/p/cff892ea748a</guid>
            <category><![CDATA[programmatic-advertising]]></category>
            <category><![CDATA[analytics]]></category>
            <category><![CDATA[data-driven-advertising]]></category>
            <category><![CDATA[audience-segmentation]]></category>
            <category><![CDATA[social-media-targeting]]></category>
            <dc:creator><![CDATA[Akshata Ubrani]]></dc:creator>
            <pubDate>Tue, 03 Nov 2026 05:23:09 GMT</pubDate>
            <atom:updated>2026-11-03T05:25:53.055Z</atom:updated>
            <content:encoded><![CDATA[<blockquote><a href="https://medium.com/u/e24c10a019cf"><strong>Akshata Ubrani</strong></a><strong>, Product Analyst, MiQ</strong></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yxykK0E-mC-f_cLT-4vtqw.png" /></figure><h4>Beyond the noise</h4><p>Every day, millions of people scroll through the social media feeds, the recent research from June 2026 in Demandstage suggests “An average individual spends about 2 hours and 21 minutes daily on social media” and our perfect customer is one among them, but <strong>how would we find the “Signal in the Noise”?</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/602/1*4hWBpgVZmrvYpA_tv0WPNA.png" /></figure><p>“Effective Advertising” is to cut through the digital clutter and connect with the right people at the exact right moment and transform a casual scroll to real, measurable results!</p><h4>Effective social media targeting for reaching the right users</h4><p>For an analogy, imagine you’re hosting a party, and you need to make a guest list. Curating the guest list is <strong>targeting</strong> and sending out the invites refers to <strong>activations</strong>.</p><p>Similarly, social media platforms use first-party (1P) data like videos/reels, content interactions, and keywords to track users’ behavior and interests. And this data is used by advertisers to activate ad campaigns to target specific curated audiences.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/602/1*NxaGxw3VeoltcRzlhh9N8Q.png" /></figure><p>Campaigns for effective targeting at MiQ ,use third-party (3P) data which helps us find the relevant audience. This 3P information can be captured by<strong> pixels embedded on their websites or apps </strong>they interact with or from <strong>user-declared data</strong> like their home-city or the IP address that every internet connection is tagged on to<strong>. </strong>For example <strong>Meta Pixel or LinkedIn Insight Tag and Geo-Location </strong>for Snapchat, Instagram and TikTok.</p><p>For effective social advertising, <strong>advanced platforms like MiQ Sigma takes this a step further</strong>. By ingestion and analysis of over 700 trillion multi-dimensional signals across watching, browsing, and buying modes, cross-channel technology removes the guesswork from social activation. This bridges the gap between raw data and fluid, platform-agnostic campaign deployment.</p><h4>Choosing the right social media platform for your business</h4><p>Did you know that each social platform affects the user’s mindset differently?</p><p>And by adapting your ads to those mindsets can drive better results to your business?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/602/1*4w5x54Nd_PUDLbb2H4HJ2A.png" /></figure><p>There are various types of targeting provided by multiple social platforms . <strong>Meta </strong>provides targeting based on behavior, retargeting and lookalike audiences because you’re reaching the audience in a relaxed time. <strong>LinkedIn</strong> provides professional identity and skill-based targeting when they are browsing about their work industry or looking out on career growth. <strong>X</strong> provides keyword targeting and event targeting. <strong>Reddit</strong> provides subreddit and community-based targeting to target people while they are tracking real time news or exploring niche communities. <strong>TikTok and Snapchat</strong> provide engagement and real-world signal and Snap Map (Geo-Location) based targeting.</p><h4>User personalization in social media targeting</h4><p><strong>YES, user personalization is mandatory!</strong> Because what is an advertisement if it doesn’t feel like a mirror of the user’s interests? To engage the user effectively, creative needs a conversational,1:1 tone that directly communicates the value of purchasing the product.</p><p>The research from <a href="https://whitehat-seo.co.uk/blog/boosting-sales-with-personalization#:~:text=companies%20excelling%20at%20personalisation%20generate%2040%25%20more%20revenue%20from%20these%20activities%20than%20average%20performers.">WhiteHat</a> says <strong>“Companies excelling at personalization generate 40 percent more revenue from these activities than average performers”.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/602/1*9E3ge2z4iR2GVd5IWADyTw.png" /></figure><p>To support personalization and keep relevance as a ranking factor, targeting is moved from manual to automatic with advanced social media algorithms.<br><strong>Meta’s Advantage+ or TikTok’s Smart+</strong> algorithms act as strict gatekeepers to decide which ads get seen and when.</p><p>By personalizing at a user level, matching their immediate intent, you unlock a “Relevance Bonus” which means, social media awards highly relevant ads at better placements at lower costs . Which results in lower Cost Per Click (CPC), maximizing Ad budget and fostering brand loyalty. This level of ad personalization is where MiQ excels, turning outreach to high converting 1:1 engagement.</p><h4>The platform playbook: Matching use cases to mindsets of users</h4><p>According to a research blog from MarinSoftware, “Modern marketers must understand how each social media platform differs from its competitors and find the appropriate channel to reach their intended audience.”</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/596/1*jgX9yi0IxE6-jV-KHvVDhw.png" /></figure><p>According to the data from <a href="https://sproutsocial.com/insights/social-media-statistics/">Sprout Social</a>, the social landscape is more crowded than ever, with <strong>Facebook</strong> alone hosting over 3 billion users. This makes <strong>precision targeting a financial necessity</strong>.</p><p><strong>For B2B roles, LinkedIn’s 1 billion professional members offer a high-intent environment </strong>where 80% of users drive business decisions.</p><p>Conversely, when we talk about <strong>B2C roles, Instagram’s high follow rate makes it a premier platform for product discovery.</strong></p><p><strong>Reddit users are more interested in new product information</strong> and 41% of these users are more likely to be early adopters of new tech.</p><p><strong>X serves as “Digital Town Square”</strong> where users spend about 26% more time engaging with ads that align with real-time news.</p><p>In brief, consumers change their mindsets entirely depending on which app they engage with. At MiQ, we align these shifting mindsets with the<strong> interconnected programmatic to social pipeline</strong> divided into watching, browsing and buying.</p><p>These clusters are categorized based on the mind space of users:</p><ul><li><strong>Watching mode</strong> (TikTok/Instagram): Users are in an entertainment-first state of mind.</li><li><strong>Browsing mode </strong>(Reddit/X)<strong>:</strong> Users enter into the active research and news gathering mode.</li><li><strong>Buying mode</strong> (Meta/Commerce Ecosystems): In this space the journey of users is from discovery to purchase mode.</li></ul><p>By targeting specific users within these clusters, rather than treating the platforms as monolithic blocks, advertisers can move from ‘interrupting’ to ‘Integrating’ into their most trusted communities.</p><p><strong>References:</strong></p><ol><li>Mckinsey Official Document:<br><a href="https://whitehat-seo.co.uk/blog/boosting-sales-with-personalization#:~:text=According%20to%20McKinsey&#39;s%20January%202025,fail%20to%20deliver%20personalised%20experiences">https://whitehat-seo.co.uk/blog/boosting-sales-with-personalization#:~:text=According%20to%20McKinsey&#39;s%20January%202025,fail%20to%20deliver%20personalised%20experiences.</a></li><li>Tiktok Official Document: <br><a href="https://posteverywhere.ai/blog/how-the-tiktok-algorithm-works">https://posteverywhere.ai/blog/how-the-tiktok-algorithm-works</a></li><li>SproutSocial Document:<br><a href="https://sproutsocial.com/insights/social-media-statistics/">https://sproutsocial.com/insights/social-media-statistics/</a></li><li>Demandstage Document:<br><a href="https://www.demandsage.com/average-time-spent-on-social-media/">https://www.demandsage.com/average-time-spent-on-social-media/</a></li><li>Research Blog for different social media channels from Marin:<br><a href="https://www.marinsoftware.com/blog/understanding-the-different-social-media-platforms-which-one-fits-your-business">https://www.marinsoftware.com/blog/understanding-the-different-social-media-platforms-which-one-fits-your-business</a></li></ol><blockquote>Akshata Ubrani is a Product Analyst at MiQ by profession and a curious explorer by nature. When she’s not turning data into insights, she enjoys travelling, connecting with people, and bringing colour to life through art, craft, and painting.</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=cff892ea748a" width="1" height="1" alt=""><hr><p><a href="https://medium.com/miq-tech-and-analytics/the-why-what-and-how-of-modern-social-media-targeting-cff892ea748a">The “Why, What, and How” of modern social media targeting</a> was originally published in <a href="https://medium.com/miq-tech-and-analytics">MiQ Tech and Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Beyond RAG: Engineering an Agentic Thinking Layer for Complex Programmatic Media Planning]]></title>
            <link>https://medium.com/miq-tech-and-analytics/beyond-rag-engineering-an-agentic-thinking-layer-for-complex-programmatic-media-planning-112ee8e79e3b?source=rss----3ad124eebfe5---4</link>
            <guid isPermaLink="false">https://medium.com/p/112ee8e79e3b</guid>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[rags]]></category>
            <category><![CDATA[langchain]]></category>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[ai-orchestration]]></category>
            <dc:creator><![CDATA[Bala Saatvik]]></dc:creator>
            <pubDate>Thu, 22 Oct 2026 05:22:17 GMT</pubDate>
            <atom:updated>2026-10-22T05:25:46.382Z</atom:updated>
            <content:encoded><![CDATA[<blockquote><strong>Bala Saatvik T, Data Scientist, MiQ and Prakhar Yadav, Lead Data Scientist, MiQ</strong></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ew6soHJFLQxN3xWUUty--w.png" /></figure><h4>The real problem isn’t a lack of data</h4><p>In programmatic media planning, the hard part is rarely finding data. There is plenty of it. The real bottleneck sits in the workflow, in turning scattered signals into a recommendation someone can act on before the moment passes.</p><p>A lot of planning time still goes into gathering inputs, working out what actually matters, and stitching everything back together into something practical. That is why retrieval-augmented generation, or RAG, only solves half the problem. RAG is the technique of pulling in relevant documents so a model can ground its answer in real context, and it is very good at that. However, planning is not just about finding information. It is about deciding what to do with it.</p><h4>Why RAG alone hits a ceiling</h4><p>When a question is simple, retrieval is often enough. Planning questions are rarely simple. A good system has to judge whether a request is straightforward or messy, whether it needs external tools, whether it should dig deeper across several rounds, or whether a full strategic workflow is warranted.</p><p>It is less about a model finding the right paragraph and more about the wider system choosing the right path. Put plainly, RAG helps a model read, while a thinking layer helps a system choose.</p><h4>From information retrieval to decision support</h4><p>The difference is easier to see side by side.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jpTXKDhgDJDB8vgORaMWeA.png" /><figcaption><em>Table 1: A simple comparison of how traditional RAG differs from an agentic thinking layer in planning workflows.</em></figcaption></figure><p>Media planning is rarely a one-shot lookup. It is usually a chain of smaller decisions tucked inside one bigger question: what matters, which tools to use, how deep to go, and what the final output should look like.</p><h4>What a “thinking layer” actually does</h4><p>Think of a thinking layer as the coordinator between a question and its answer. It reads the request, picks the right path, pulls in whatever tools are needed, and turns raw outputs into something usable.</p><p>The key idea is that not every prompt deserves the same treatment.</p><p>The agent first checks the request’s intent, specificity, and required evidence: a clear one-step question is treated as Simple, a strategic brief as Complex, and a request that depends on a tool as data/tool lookup. For example, “What is RAG?” stays simple, “Build a media plan for Freshpet” is complex, while “Compare Freshpet buyers using purchase data” routes to the relevant data tool.</p><p>A simple ask stays light. A strategic ask triggers a richer reasoning flow.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1005/1*rHY0G0l1A-lwxrZ8ICRKIQ.png" /><figcaption><em>Figure 1: A thinking layer picks the right path before producing an answer.</em></figcaption></figure><p>In the deeper flow, a supervisor coordinates the reasoning. It takes the brief, breaks it into smaller research tasks, and spins up helper agents on the fly to work through them in parallel. The number of helpers is not fixed; it depends on how complex the question is. A narrow question should not fire up the whole machine, while a broad planning brief usually should. This pattern is not just theory either. Each sub-agent works from a shared brief that carries the goal, key evidence, decisions, and unresolved questions forward. The supervisor compares disagreements against the available evidence and confidence levels with citations and human approval provides a final safety net.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/797/1*muFNTxrmycvcmC8VfAp94g.png" /><figcaption><em>Figure 2: In the deeper flow, a supervisor spins up helper agents and combines their findings into a single recommendation.</em></figcaption></figure><h4>Why this matters for the business</h4><p>This is more than a prettier diagram. It cuts wasted effort. When the system picks the right path early, people stop reformulating prompts, rerunning workflows, and gluing outputs together by hand. The payoff is concrete: a planning brief that takes a lot of time and involves plenty of back-and-forth, turns into a clear opportunity for real time savings and measurable business impact.</p><p>It also makes the output more useful. A retrieved answer is fine, but a guided recommendation is better, and speed only counts when the result is clear enough to act on. On top of that, it sets a stronger base for scale, because systems built on memory, delegation, and structured coordination hold up far better as workflows get longer and messier.</p><h4>The hard part isn’t the model</h4><p>A lesson that keeps coming back is that the model is only one piece. The harder work lives around it: coordination, keeping track of state, staying reliable, and being able to explain itself. That is the gap between a slick demo and something people actually trust when the task is ambiguous, context-heavy, and operationally complex.</p><h4>Summary for sellers</h4><p>The example below shows the final response the solution produces: a seller-ready summary generated at the end of the planning flow.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ADYac485WuKoR45QxWCV2Q.png" /><figcaption><em>Figure 3: The final, seller-facing summary produced at the end of the planning flow.</em></figcaption></figure><h4>Closing thought</h4><p>For complex programmatic media planning, the real leap beyond RAG is not about pulling in more context. It is about building systems that can read a planning problem, judge how deep to go, and hand back something closer to strategic guidance than raw output.</p><p>That is what an agentic thinking layer is here for. It turns AI from a smarter search box into a more dependable planning partner, and when teams are asked to do more with less, that is worth far more than incremental gains in retrieval alone.</p><h4>References</h4><ul><li><a href="https://blog.langchain.com/open-deep-research/">LangChain: Open Deep Research</a></li><li><a href="https://blog.langchain.com/deep-agents/">LangChain: Deep Agents</a></li><li><a href="https://docs.langchain.com/oss/python/deepagents/subagents">LangChain Docs: Subagents</a></li></ul><blockquote>Bala Saatvik is a Data Scientist at MiQ interested in AI and Agentic AI. He enjoys exploring how intelligent systems can solve real-world challenges. Outside work, he loves travelling, spending time with his pets, and reading about technology and new ideas. <br>Prakhar Yadav is a Lead Data Scientist at MiQ, focusing on data science, AI, and scalable product solutions. Outside work, he enjoys gaming, riding, building DIY projects with microcontrollers, and exploring new technologies.</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=112ee8e79e3b" width="1" height="1" alt=""><hr><p><a href="https://medium.com/miq-tech-and-analytics/beyond-rag-engineering-an-agentic-thinking-layer-for-complex-programmatic-media-planning-112ee8e79e3b">Beyond RAG: Engineering an Agentic Thinking Layer for Complex Programmatic Media Planning</a> was originally published in <a href="https://medium.com/miq-tech-and-analytics">MiQ Tech and Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Building applications that scale: an engineering mindset]]></title>
            <link>https://medium.com/miq-tech-and-analytics/building-applications-that-scale-an-engineering-mindset-91f912d9b01e?source=rss----3ad124eebfe5---4</link>
            <guid isPermaLink="false">https://medium.com/p/91f912d9b01e</guid>
            <category><![CDATA[design-thinking]]></category>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[scalable-design]]></category>
            <category><![CDATA[software-architecture]]></category>
            <category><![CDATA[software-design]]></category>
            <dc:creator><![CDATA[Chandan Prakash]]></dc:creator>
            <pubDate>Tue, 29 Sep 2026 03:31:02 GMT</pubDate>
            <atom:updated>2026-09-29T03:46:00.522Z</atom:updated>
            <content:encoded><![CDATA[<blockquote><a href="https://medium.com/u/df6b2dde50ab"><strong>Chandan Prakash</strong></a><strong>, Associate Engineering Manager, MiQ</strong></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FWqPmh6cyl_zGiyfVdJf1Q.png" /></figure><p>In most of the design discussions, the moment someone says, “We need to build this for scale,” the conversation quickly shifts to technology. Should we use Kafka or microservices? Do we need Redis? What about Kubernetes?</p><p>While those are valid discussions, systems rarely fail because teams pick the wrong technology. More often, the real problem lies in the initial assumptions: the system will only handle a few thousand records, APIs will always respond quickly, reports will generate in seconds, or a single database will be enough.</p><p>Those assumptions are usually reasonable at the time. But as products evolve and new requirements emerge, they begin to break down. That’s when systems start showing their limits.</p><p>Over time, we realise that building for scale is less about choosing the right technology and more about developing the right engineering mindset.</p><p>Here are a few thought processes that are good to consider when starting architecture design:</p><h4><strong>1. Think about what is actually growing</strong></h4><p>When we talk about building for scale, we often use the word growth without stopping to ask what is actually growing. The answer varies from one system to another. For a consumer application, it might be millions of users. For a data platform, it could be terabytes or even petabytes of data.</p><p>We ran into this while building the report scheduling module. Initially, all our attention was on the APIs serving the UI. As adoption grew, however, the real bottleneck wasn’t user traffic. It was the increasing volume of reports being generated and scheduled every hour. What started at <strong>roughly 100’s of scheduled reports per hour grew to ~1000</strong>, putting sustained pressure on the reporting pipeline.</p><p>That shift changed how we approached scalability, leading us to introduce back-pressure mechanisms to regulate asynchronous processing and maintain system stability.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HegE0PenvbMKap_i5foG5Q.png" /></figure><h4><strong>2. Every design has an expiry date</strong></h4><p>“What happens if the usage becomes ten times bigger?” Not because we expect 10x growth anytime soon, but because it forces us to question the assumptions we’ve made. A database query that completes in 100 milliseconds today with 10 million rows may take several seconds once that table grows to hundreds of millions of rows.</p><p>The same applies to service dependencies. Calling a notification service synchronously may work at 100 requests/second, but at 1,000 requests/second, even a temporary slowdown can create backlogs and increase application latency. We moved our notification service to an <strong>asynchronous queue with dedicated scalable workers</strong>, which led the application to absorb spikes and process events at a controlled rate.</p><p>The goal isn’t to solve tomorrow’s problems today. It’s to understand where the design is likely to break so we’re ready to evolve it when the time comes.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*498XnxN4nj6pxDrMzYWMhQ.png" /></figure><h4><strong>3. The bottleneck is usually somewhere else</strong></h4><p>One of the most common mistakes is optimizing the wrong thing. It’s easy to look at a slow system and conclude that we need more servers, but the application itself often isn’t the problem. The real bottleneck could be a missing database index, a slow third-party dependency, network latency, or a queue that’s backed up.</p><p>A system’s performance is usually determined by its weakest component.</p><p>While optimising our APIs, we initially focused on the application layer. However, after measuring each stage of the request, it showed that <strong>query execution accounted for ~80% of the response time</strong>. Optimising table partitioning and indexes therefore delivered a much larger performance improvement than application-level optimisations.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TDHTi2iQbjLdW1A_CoAraw.png" /></figure><h4><strong>4. Assume things will fail</strong></h4><p>When designing a system, it’s easy to assume everything will work as expected, that the database will always be available, APIs will respond on time, and the network will behave. Production environments have a way of proving those assumptions wrong.</p><p>Today, I almost automatically think about failure scenarios:</p><ul><li>What happens if the API times out?</li><li>What happens if the queue is unavailable?</li><li>What happens if the job fails halfway through?</li></ul><p>Good systems aren’t the ones that never fail. They’re the ones that fail gracefully and recover quickly.</p><p>We learned this while re-architecting our campaign event-processing pipeline. Rather than assuming every event would succeed, we designed for failure from the start, that is adding <strong>retries</strong>, prioritising <strong>user-triggered events</strong>, ensuring <strong>ordered processing</strong>, and automatically <strong>cleaning up</strong> stale data. This made the system far more resilient and predictable under load.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uXtvPZnryDVluEGm63ymZQ.png" /></figure><h4><strong>5. Scaling isn’t just about traffic</strong></h4><p>Most of the scalability challenges don’t come from traffic, they come from changing business requirements. A new customer needs a custom workflow, another integration gets added, and the once-clean architecture starts carrying the weight of those decisions.</p><p>Designing configuration-driven systems, using feature flags, or defining integration extension points makes it much easier to accommodate new requirements without changing the core business logic.</p><p>In the reporting module, new data sources and insight types were being introduced regularly. Instead of building custom code for each one, we moved to a <strong>configuration-driven architecture</strong>. This reduced the effort required to onboard new report/insight types while keeping the core reporting engine largely unchanged.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0YDm4SR81Q_LavYSpjZo3Q.png" /></figure><h4><strong>6. Observability before optimization</strong></h4><p>We often try to optimize systems before understanding how they’re actually behaving. Before improving performance, we need visibility into latency, throughput, error rates, queue depth, and resource utilization. Without that, we’re mostly guessing.</p><p>Observability isn’t just an operational concern; it’s a scalability concern.</p><p>As part of an internal re-architecture initiative, we built a real-time observability dashboard for our event-processing pipeline. Previously, identifying where failures or backlogs were occurring could take <strong>hours of investigation</strong>. With visibility into <strong>incoming, in-progress, completed, and failed tasks</strong>, we could quickly identify bottlenecks and focus optimization efforts where they had the most impact.</p><p><strong>You can’t effectively scale a system you can’t see.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rQoxMlr0wf2lddo8Nj6l3Q.png" /></figure><p>In summary, the technologies will change. The frameworks will change. The architectural trends will change. But the habit of questioning assumptions is timeless, and that’s the real foundation of building applications that not only scale but continue to evolve as the business grows.</p><blockquote>Chandan is an Associate Engineering Manager based in MiQ’s Bengaluru office. Outside of work, Chandan enjoys traveling, going on long drives, and is an avid photographer. He loves exploring new places and capturing those experiences through photography.</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=91f912d9b01e" width="1" height="1" alt=""><hr><p><a href="https://medium.com/miq-tech-and-analytics/building-applications-that-scale-an-engineering-mindset-91f912d9b01e">Building applications that scale: an engineering mindset</a> was originally published in <a href="https://medium.com/miq-tech-and-analytics">MiQ Tech and Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Bid Optimization with Adaptive Tuning (BOAT)]]></title>
            <link>https://medium.com/miq-tech-and-analytics/bid-optimization-with-adaptive-tuning-boat-67128880bba3?source=rss----3ad124eebfe5---4</link>
            <guid isPermaLink="false">https://medium.com/p/67128880bba3</guid>
            <category><![CDATA[real-time-bidding]]></category>
            <category><![CDATA[bid-optimisation-tool]]></category>
            <category><![CDATA[programmatic-advertising]]></category>
            <category><![CDATA[campaign-optimization]]></category>
            <category><![CDATA[data-science]]></category>
            <dc:creator><![CDATA[Bhushan Dhamankar]]></dc:creator>
            <pubDate>Thu, 10 Sep 2026 03:49:59 GMT</pubDate>
            <atom:updated>2026-09-10T04:21:46.426Z</atom:updated>
            <content:encoded><![CDATA[<blockquote><a href="https://medium.com/u/a46cb26c0a99"><strong>Bhushan Dhamankar</strong></a>, Data Scientist II, MiQ</blockquote><p>In Programmatic Advertising, Bidding is one of the most important levers when it comes to optimizing the campaign. As campaigns scale across the market even a small inefficiency in setting bids can lead to huge cost leakage and can directly impact media cost and return on investment.</p><p>One of the world’s largest independent Demand-Side Platform — The Trade Desk (TTD)offers Value-Based Bidding (VBB) which transitions campaigns from volume-based to value-based metrics, and Predictive Clearing (PC), a bidding feature designed to win ad impressions at the lowest possible cost. The fee incurred to reduce the gap between what you would have paid and what actually cleared in the auction is known as Predictive Clearing fees. If this PC fee is not managed correctly, this leakage can scale across campaigns and markets.</p><p>In Kokai, TTD’s AI-driven media buying and programmatic advertising platform, VBB can lift the effective bid closer to max bid. Max bid (ceiling bid) is one of the levers that is set by the trader with base bid (floor bid). The inflated effective bid is then reduced by PC. The difference between the elevated bid and clearing bid is called savings, and the platform charges a small portion as PC fees.</p><p>Built on MiQ’s analysis of thousands of TTD campaigns spanning multiple verticals and campaign types, we built BOAT, an adaptive bid optimization solution that recommends bid changes to reduce PC fees while protecting delivery.</p><p>The model operates on a fixed cadence, a learning loop and not a one time application system.</p><p><strong>Pipeline stages:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*K-FSVj9s2Y_Ms0cS2Vofag.png" /></figure><ul><li><strong>Stage A </strong>— <strong>Ingest Data:</strong> With delivery reports and bid settings we focus on those entities where PC fees have a decent share in media cost associated with that specific ad group.</li><li><strong>Stage B</strong> — <strong>Feedback:</strong> Feedback reverts the action if a loss in delivery is detected, otherwise the measured steps are continued in the next iterations. The learning/history is used to auto tune coefficients to make optimization engines adaptable to market behavior.</li><li><strong>Stage C </strong>— <strong>Optimization:</strong> Optimization engine takes into account current bid setup, minimum floors, bid cut caps per iteration, and relation with observed media cost per mille of impressions (mCPM) to recommend smart bids.</li><li><strong>Stage D </strong>— <strong>Activation:</strong> Recommended bids from optimization and feedback decisioning stage is taken in account and activated via TTD’s DSP api.</li></ul><p><strong>Technical backbone:</strong></p><p>Derived Metrics: Spread (max bid — base bid), Headroom (max bid — mCPM), PC fee is approximately 15% of PC savings, PC impact ratio = PC fees / Media cost.</p><h4><strong>Optimization engine</strong></h4><p>The two branch recommendations are based on the relationship between base bid and clearing CPM:</p><p><strong>Clearing CPM is below base bid (Overbidding):</strong></p><p>Action: Trim base bid towards clearing CPM maintaining some buffer, and scale down the spread by trimming max bid keeping PC fee severity in consideration.</p><p>Algorithm:</p><p>New base bid = clearing CPM × (1 − α)</p><p>New max bid = min (clearing CPM + β × spread × (1 − pc impact ratio) , old max bid)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*020cKYL1PJnNbrGeQQhnVA.png" /></figure><p><strong>Clearing CPM is at or above base bid (VBB Inflation):</strong></p><p>Action: Instead of cutting both bids, shrinking max bid according to headroom and PC impact ratio while keeping the base bid unchanged to reduce PC savings.</p><p>Algorithm:</p><p>New base bid = old base bid (unchanged)</p><p>New max bid = old max bid − (γ × headroom × pc_ratio)</p><p><strong>Feedback and guardrails</strong></p><p>Feedback: The internal coefficients (α<em>, </em>β<em> and </em>γ) in Cases 1 and 2 control the aggressive and conservative nature of the engine and these are auto-tuned against each iteration. Feedback decisions include revert (impression drop versus threshold), reduce further (next iteration) or hold (hold bids as impact is minimized).</p><p>Guardrails: These include policies to protect ad groups by considering bid cut caps, a base bid floor, rate limits, partial data and valid ad group setup.</p><h4><strong>Machine Learning based extension to BOAT</strong></h4><p>As BOAT is built on pure heuristics which doesn’t take into account the actual relationship of PC fees with campaign setup. To overcome this we have this extension whose primary goal is to learn how PC impact relates to bid settings.</p><p><strong>Pipeline Stages:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1ULYPajugEaka3GDS0B-TA.png" /></figure><p>Feature engineering is the crucial part of this approach. Derived features like win rate (impressions/bids), deal type, headroom (max bid- mCPM), spread share of base bid ([max bid-base bid]/base bid) and so on help the model to understand the PC fee relation better. The data is used as training data for model keeping supervised targets as PC impact ratio.</p><p><em>y</em>ᵢ = <em>f</em>(<em>x</em>₁ᵢ, <em>x</em>₂ᵢ, <em>x</em>₃ᵢ, …, <em>x</em>ₙᵢ)</p><p>Where,</p><p><em>x</em>₁ᵢ, <em>x</em>₂ᵢ, <em>x</em>₃ᵢ, …, <em>x</em>ₙᵢ = win rate, deal type, headroom, spread share, and so on</p><p><em>y</em>ᵢ = PC impact ratio</p><p><strong>Optimize/Inference:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kSuRm8_oTdLBnkUYyeVZRw.png" /></figure><p>After the extra trees regressor model is trained, using predictions the optimization stage evaluates candidate bids defined by intelligent sampling. The bid pair with least predicted PC fee is chosen while other features like clearing CPM and spend are fixed or held constant. Like in the figure above we can see the bid pair of $2.83 and $5.3 is the most optimal as predicted PC fee is the least.</p><p>Success for both approaches was defined practically by lowering PC impact ratio and sustaining delivery.</p><h4><strong>Observations based on live testing</strong></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bPOurWc4lVnALBv5GSrLag.png" /></figure><p>To conclude, while the current approach can be refined, the results have shown that smarter bid tuning can significantly help reduce PC fees while protecting delivery. Since this solution is designed for all campaign types, after thoroughly analyzing the performance, we can extend the solution to handle each campaign type separately, thereby achieving better performance.</p><blockquote>Bhushan is a Data Scientist working in MiQ’s Bengaluru office. Outside of work, he enjoys bike rides and gaming.</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=67128880bba3" width="1" height="1" alt=""><hr><p><a href="https://medium.com/miq-tech-and-analytics/bid-optimization-with-adaptive-tuning-boat-67128880bba3">Bid Optimization with Adaptive Tuning (BOAT)</a> was originally published in <a href="https://medium.com/miq-tech-and-analytics">MiQ Tech and Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How MiQ uses AI to cut storage costs at petabyte scale]]></title>
            <link>https://medium.com/miq-tech-and-analytics/how-miq-uses-ai-to-cut-storage-costs-at-petabyte-scale-2c904ef74101?source=rss----3ad124eebfe5---4</link>
            <guid isPermaLink="false">https://medium.com/p/2c904ef74101</guid>
            <category><![CDATA[data-lake]]></category>
            <category><![CDATA[cloud-infrastructure]]></category>
            <category><![CDATA[storage-cost-optimization]]></category>
            <category><![CDATA[zstandard]]></category>
            <category><![CDATA[databricks-genie]]></category>
            <dc:creator><![CDATA[Milan Bins Mathew]]></dc:creator>
            <pubDate>Tue, 14 Jul 2026 04:28:51 GMT</pubDate>
            <atom:updated>2026-07-14T04:31:42.803Z</atom:updated>
            <content:encoded><![CDATA[<blockquote><a href="https://medium.com/u/e0dabb8b9389"><strong>Milan Bins Mathew</strong></a><strong>, Software Engineer II, Data and AI Platforms, MiQ</strong></blockquote><p>Our data lake had crossed the <strong>multi-petabyte threshold</strong> and the <strong>cloud bill was scaling rapidly</strong>. Legacy compression was padding every file with redundant bytes, and hand-tuned clustering strategies were quietly forcing full table-scans on queries that should have returned in seconds.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KC1qtkNKBWbAY3JJjr_R8w.png" /><figcaption><em>Moving beyond legacy heuristics to build a self-optimizing, AI-driven data lake</em></figcaption></figure><p>At MiQ, data is the fundamental currency of programmatic media. For years, standard lakehouse patterns carried us through rapid growth. But as any engineer knows, the architecture that gets you to the first petabyte is rarely the one that gets you to the tenth.</p><p>We had hit what we call the <strong>Scalability Ceiling</strong>. Our legacy configuration, Snappy compression and human-led data layout strategies, was imposing two invisible taxes: a <strong>storage tax </strong>and a <strong>compute tax</strong> i.e., paying to scan irrelevant data. Hence, we set out to eliminate both.</p><h4>The problem: high cost of speed</h4><p>Years ago, when the Lakehouse paradigm was young, CPU was the bottleneck. Engineers everywhere defaulted to <strong>Snappy</strong> compression because it was fast to write. It prioritized ingestion speed over storage density.</p><p>Today, that equation has inverted. Modern cloud compute is abundant and efficient. But high-performance object storage is a compounding cost that never stops growing. By sticking with Snappy, we were paying premium rates to store redundant bit sequences that <strong>ZSTD</strong> would have eliminated during writes.</p><h4>Optimization drift</h4><p>The compute side was equally problematic. Traditionally, data engineers would manually configure Z-Order clustering based on intuition: “Analysts usually filter by region, so let’s cluster by that.” But business questions change.</p><p>A table optimized for the queries of 2022 forces the queries of 2026 into brute-force full-table scans. We called this the “Compute Tax”. This results in us burning money on I/O operations that deliver zero value.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jSBtNguK_HLPi0z6So0LyQ.png" /><figcaption><em>Figure 1: How legacy defaults compound into hidden storage and compute taxes</em></figcaption></figure><h4>The solution: better math, smarter AI</h4><p>To dismantle these taxes, we engineered a migration strategy built on two pillars: Data Physics and Intelligence.</p><h4>The physics: switching to Zstandard (ZSTD)</h4><p>We moved from Snappy (LZ77-based) to Zstandard. ZSTD represents a genuine mathematical breakthrough, going far beyond a simple version upgrade. Where Snappy focuses on byte-oriented speed, ZSTD uses a method called Finite State Entropy (FSE — it looks at which pieces of data appear most often and gives them the smallest representations, while less common pieces get larger ones.) to statistically find patterns in data and compress it very efficiently, approaching the maximum compression that’s theoretically possible.</p><p>The impact is immediate and measurable. ZSTD compresses files significantly tighter than Snappy while maintaining the read speed required for interactive analytics. We are no longer paying to store air.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5r4iu1_xDbdayS0LtyGIRQ.png" /><figcaption><em>Figure 2: ZSTD delivers ~37% additional compression while maintaining competitive read throughput</em></figcaption></figure><blockquote><strong>Note: </strong>ZSTD’s compression level is tunable. At level 3, write speed is within 15% of Snappy while compression density improves by 37%. At higher levels, density improves further at the cost of write latency.</blockquote><h4>The intelligence: “Genie-in-the-loop”</h4><p>Changing compression handles the size of the files, but it does not solve read efficiency. For that, we needed better Z-Ordering.</p><p>We integrated Databricks Genie Research as an automated analyst. Genie connects directly to our Unity Catalog and system tables to perform semantic reasoning. It does not just inspect schema, it analyzes the intent behind thousands of production queries.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XyzRHPWLdWOD3K1ckTGg_Q.png" /><figcaption><em>Figure 3: How Genie Deep Research automates Z-Order optimization via query lineage analysis</em></figcaption></figure><p>Genie reviews query lineage, identifies slow full-table scans, and correlates them with filter predicates. It then synthesizes this data to recommend the mathematically optimal Z-Order columns based on actual usage patterns, not anecdotal evidence.</p><p>This moves us from a static architecture to a dynamic governance model that adapts to shifting query patterns automatically.</p><h4>The migration: surgical precision at petabyte scale</h4><p>Migrating a live, petabyte-scale data lake is not something you do on a Friday afternoon. We employed a “Shadow Partition” backfill methodology. A Write-Audit-Publish pattern that ensured zero downtime for downstream consumers.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-jxRR_bLU35dj-NSlGKHdg.png" /><figcaption>Figure 4: Our five-phase migration pattern for zero-downtime backfill</figcaption></figure><h4>The impact: efficiency at scale</h4><p>The results of this modernization have been immediate and profound.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MBAwAt9yzywq1GxY_CdNuQ.png" /><figcaption><em>Figure 5: Key performance metrics after the storage modernization</em></figcaption></figure><ul><li><strong>50% storage savings:</strong> By combining ZSTD with aggressive small-file compaction, we halved the footprint of our heaviest tables.</li><li><strong>25% compute efficiency:</strong> By letting Genie dictate layout, we maximize data skipping. Our engines now ignore 90% of files for high-selectivity queries, shifting workloads from I/O-bound (slow) to CPU-bound (fast).</li><li><strong>Elimination of drift: </strong>The platform now adapts. If query patterns shift next month, Genie detects it and the layout strategy evolves automatically. This will power our Liquid Clustering system in the next phase.</li></ul><h4>Key takeaways</h4><ol><li>Snappy served its era, but ZSTD’s Finite State Entropy delivers 37% tighter compression with negligible speed trade-off. Stop paying to store air.</li><li>Human-led Z-Order decisions drift within months. AI-driven layout optimization (Genie + query lineage) turns static tables into self-tuning data structures.</li><li>Use the Write-Audit-Publish (shadow partition) pattern for zero-downtime migrations. Never bet your SLA on a big-bang cutover.</li><li>Combine compression and clustering improvements together. The compounding effect (50% storage + 25% compute savings) is greater than either alone.</li></ol><h4>Conclusion</h4><p>Modern data engineering means designing systems intelligent enough to manage themselves. These gains allow us to process data faster, operate more reliably at scale, and ultimately deliver quicker, more actionable insights to our clients.</p><p>That matters more at MiQ than almost anywhere else, because data is the fundamental currency of programmatic media. Every audience we build, every campaign we optimize, and every outcome we measure is powered by our ability to turn massive, fragmented datasets into clarity at speed.</p><p><em>Interested in solving complex data challenges at the petabyte scale? Follow the MiQ Tech Blog for more insights into our architecture and engineering practices.</em></p><blockquote>Milan is a Software Engineer II in MiQ’s Data and AI Platforms team. Outside of work, he enjoys reading, writing, and exploring ideas at the intersection of life and engineering.</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2c904ef74101" width="1" height="1" alt=""><hr><p><a href="https://medium.com/miq-tech-and-analytics/how-miq-uses-ai-to-cut-storage-costs-at-petabyte-scale-2c904ef74101">How MiQ uses AI to cut storage costs at petabyte scale</a> was originally published in <a href="https://medium.com/miq-tech-and-analytics">MiQ Tech and Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why campaign pacing is one of digital advertising’s biggest hidden challenges]]></title>
            <link>https://medium.com/miq-tech-and-analytics/why-campaign-pacing-is-one-of-digital-advertisings-biggest-hidden-challenges-745fabcb1990?source=rss----3ad124eebfe5---4</link>
            <guid isPermaLink="false">https://medium.com/p/745fabcb1990</guid>
            <category><![CDATA[programmatic-advertising]]></category>
            <category><![CDATA[campaign-optimization]]></category>
            <category><![CDATA[budget-optimization]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[digital-advertising]]></category>
            <dc:creator><![CDATA[Bhushan Dhamankar]]></dc:creator>
            <pubDate>Tue, 30 Jun 2026 03:31:01 GMT</pubDate>
            <atom:updated>2026-06-30T03:31:00.955Z</atom:updated>
            <content:encoded><![CDATA[<blockquote><a href="https://medium.com/u/a46cb26c0a99">Bhushan Dhamankar</a>, Data Scientist II, MiQ and <a href="https://medium.com/u/b07c51fbae6a">Adnan Aliakbar</a>, Data Scientist II, MiQ</blockquote><p>Every campaign starts with a plan. The challenge is that markets, audiences and inventory rarely behave according to plan. As campaigns evolve, advertisers often find themselves underdelivering, overspending or manually adjusting budgets across dozens of line items just to stay on track. At scale, pacing is no longer an execution challenge — it becomes a decision challenge.</p><p>Campaign performance and delivery are highly volatile. Without active management , even a well structured initial setup will fall short of its targets.</p><p>Today, campaign pacing is largely solved through manual, rule-based approaches. This creates significant operational overload 30–50 hours per month per trader, while still producing under delivery and inconsistent performance across campaigns.</p><p>Built on MiQ’s analysis of thousands of campaigns spanning multiple DSPs, verticals and campaign types, we built the Pacing recommendation tool: a scalable, data-driven system that replaces manual pacing decisions with intelligent, ongoing recommendations.</p><p>For trading teams and advertisers alike, the tool delivers impact across three dimensions. First, it cuts operational overhead: decisions that currently consume 30–50 hours per trader every month are automated. Second, it reduces both under delivery and over delivery, keeping campaigns in the optimal zone, typically 100–110% of target — which maximizes both performance and profitability. Third, it protects media spend: proactive, data-driven budget reallocation has already demonstrated approximately $840 in media wastage savings during a single week of testing.</p><h4><strong>What is pacing, and why does it matter ?</strong></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*od7h7Zu-HaG4kxS0czWgdQ.png" /></figure><p>Pacing describes how evenly a campaign delivers impressions or spend relative to its target timeline. Think of it like fuel on a road trip, spend too fast and you run out before the destination. Spend too slowly and you arrive with a budget unspent and goals unmet. MiQ tracks four states.</p><p>Even pacing means the campaign is on track for example, 50% delivered by day 15 of a 30- day flight. Under-pacing means the campaign is falling behind target. Optimal pacing is the sweet spot: slightly ahead at around 100–110% of target. And over-pacing means the campaign is burning through budget too quickly and risks exhausting spend before the flight ends.</p><h4><strong>How the pacing recommendation tool works</strong></h4><p><strong>Step 1:</strong> <strong>Assess pacing effectiveness<br></strong>The tool begins by pulling campaign data from all active DSPs (Demand-Side Platforms — the technology advertisers use to buy digital ad inventory) into a single system. It evaluates delivered impressions, revenue, client impressions from the ad server, and days remaining in the flight.</p><p><strong>Step 2:</strong> <strong>Projecting costs and impressions<br></strong>Next, the tool forecasts how impressions and costs will develop for the remainder of the campaign. It accounts for media spend, CPM (cost per thousand impressions — the standard unit for measuring ad buying efficiency), data fees, ad serving charges and vendor fees. A key nuance is reconciling the difference between impressions recorded by the client’s ad server and those recorded by the DSP, these rarely match exactly. The tool adjusts projections to account for this discrepancy, ensuring budget recommendations are grounded in accurate numbers.</p><p><strong>Step 3: Budget recommendation</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NBk5Ryg-HSI_Qrx1v63jxQ.png" /></figure><p><strong>The goal here is simple:</strong> Allocate funds to areas where they are most needed. If certain line items are performing well, we allocate more budget there. For underperforming items, we recommend reducing the budget allocation.</p><p><strong>For under-pacing campaigns:</strong> We use a technique called Multi-Armed Bandit (MAB) with Upper Confidence Bound (UCB) to shift budget to where it’s most likely to improve performance. Each line item is treated as an arm with rewards derived from normalized performance signals such as delivery velocity and cost effectiveness.</p><p>The budget is then incrementally reallocated toward line items with higher reward scores, maximizing the expected marginal improvement in pacing while still allowing controlled exploration of less-sampled items. This approach supports convergence towards optimal spend allocation.</p><p>At each decision interval, the system computes a UCB score for every line item:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/943/1*zI06PC7Uk0NongZWfXdWMA.png" /></figure><p><strong>For over-pacing campaigns:</strong> We look at the overall performance and adjust the budget to avoid overspending. The system redistributes excess funds from high-performing areas to underfunded ones until everything balances out.</p><h4><strong>Observations based on live campaigns</strong></h4><p>MiQ tested the tool across 24 campaigns within a week, covering Display, Online Video (OLV) and Audio formats across multiple DSPs. Success was defined practically: for under-pacing campaigns, it meant an increase in delivery, for over-pacing ones, a reduction in over-delivery, in both cases with CPM held approximately constant.</p><p><strong>The results were clear: </strong>an 83.3% success rate across those 24 campaigns, with an average pacing uplift of 8% and approximately $800+ in media wastage savings over a single week. The tool consistently moved campaigns in the right direction without inflating costs to get there.</p><p><strong>Pacing at scale, without the manual grid<br></strong>What makes this tool different from a simple automation script is that it never stops learning. As market conditions shift and audience behavior changes, recommendations adapt in real time. Trading teams no longer need to spend 30–50 hours a month firefighting pacing issues manually. Instead, MiQ’s system does the heavy lifting. For advertisers, that translates directly into campaigns that deliver on their promise: the right impressions, at the right pace, with every dollar working harder.</p><blockquote>Bhushan is a Data Scientist working in MiQ’s Bengaluru office. Outside of work, he enjoys bike rides and gaming.<br>Adnan is a Data Scientist at MiQ who loves turning complex data into clear insights and meaningful impact.</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=745fabcb1990" width="1" height="1" alt=""><hr><p><a href="https://medium.com/miq-tech-and-analytics/why-campaign-pacing-is-one-of-digital-advertisings-biggest-hidden-challenges-745fabcb1990">Why campaign pacing is one of digital advertising’s biggest hidden challenges</a> was originally published in <a href="https://medium.com/miq-tech-and-analytics">MiQ Tech and Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[From Proxies to Behavior: Building Scalable Look-Alike Audiences with IP-Level Intelligence]]></title>
            <link>https://medium.com/miq-tech-and-analytics/from-proxies-to-behavior-building-scalable-look-alike-audiences-with-ip-level-intelligence-bd68ebeaaef2?source=rss----3ad124eebfe5---4</link>
            <guid isPermaLink="false">https://medium.com/p/bd68ebeaaef2</guid>
            <category><![CDATA[dimensionality-reduction]]></category>
            <category><![CDATA[autoencoder]]></category>
            <category><![CDATA[llm]]></category>
            <category><![CDATA[deep-learning]]></category>
            <category><![CDATA[data-science]]></category>
            <dc:creator><![CDATA[Kuntal Mudi]]></dc:creator>
            <pubDate>Tue, 10 Mar 2026 08:48:13 GMT</pubDate>
            <atom:updated>2026-03-10T09:50:11.228Z</atom:updated>
            <content:encoded><![CDATA[<blockquote><a href="https://medium.com/u/492f33081c4c">Kuntal Mudi</a>, Data scientist, MiQ, <a href="https://medium.com/u/ae4da859a358">Bala Saatvik</a>, Data scientist, MiQ</blockquote><h4>Introduction</h4><p>Expanding audience reach without losing relevance is a tricky balance. Brands desire scale, precision, and speed, but traditional look-alike modeling generally compromises one for the other.</p><p>What if we could model similarity directly using network-level signals, based on real online behavior?</p><p>Our machine learning-based system designed for scale does just that, creating audiences that actually mirror a seed group without relying on invasive PII (Personally Identifiable Information).</p><h4>The Objective &amp; Landscape</h4><p>Our goal was to create and deploy a look-alike modeling system that works natively with anonymized, network-level behavioral data. In order to improve accuracy and velocity, this bypasses traditional proxies.</p><p>The traditional modeling method is proxy-driven, based on broad interest groups, ZIPs, or demographics. But this method has terminal weaknesses:</p><ul><li><strong>Proxy Dependence: </strong>The nuances of behavior are not considered in demographics.</li><li><strong>Assumption-Based Targeting: </strong>ZIPs, age ranges, or interests as a proxy for behavior are inherently flawed.</li><li><strong>Lack of Granularity: </strong>The most important behavioral signals of relevant audiences are abandoned when granular activity indicators are abandoned.</li></ul><h4>Look-Alike Workflow: From Noise to Insights</h4><p>Our approach provides readable audience insights in real-time at scale, from noise to insights, as shown in Figure 1.</p><ul><li><strong>Clean and Organize Data:</strong> We take messy, unstructured data and turn it into tidy, structured user profiles.</li><li><strong>Richer Audience Insights:</strong> We increased reach by processing 3x more unique website domains. Using LLM-based categorization, we reduced data “blind spots” (uncategorized traffic) from 75% to just 25%</li><li><strong>High-Density Profile Generation:</strong> We transform thousands of behavioral signals into compact, high-value embeddings (the “essence” mentioned earlier).</li><li><strong>Effortless scaling:</strong> Fine-grained, precise information can be taken advantage of at a large scale with gigantic simplicity.</li><li><strong>Instant matching:</strong> Our rapid search finds exact fit lookalikes in a few seconds, even through billions of records.</li><li><strong>Intelligent targeting:</strong> Teams can pinpoint exact audiences to refine campaigns and enhance ROI.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/740/1*PuKxcP-8tLkptO3ZXOwIDg.png" /><figcaption><em>Fig 1: Architecture for audience lookalike modeling</em></figcaption></figure><h4><strong>Step by step with a closer look at how our approach systematically solves the problem.</strong></h4><ul><li><strong>Data Ingestion and Categorization</strong> — We started with a massive DSP feed of site-level browsing linked to anonymized network identifiers. Raw data was biased and difficult to process. Using LLMs, we automated categorization across 75,000+ websites tripling usable coverage, cutting ~98% of manual work, and converting messy data into structured, privacy-safe profiles.</li><li><strong>Feature Engineering using Autoencoders</strong> — Having rich, categorized data, we constructed user profiles that extracted thousands of behavioral traits. The challenge, however, is that a profile with thousands of features is computationally slow and expensive to compare against billions of other users in real-time. <br>To solve this, we needed to compress these rich profiles into a smaller, manageable format while preserving their behavioral essence. This is the primary motivation for using an <strong>autoencoder</strong>. An autoencoder is a neural network designed for efficient dimensionality reduction. We trained an autoencoder in an incremental manner on various partitions of the data. This procedure reduced the profiles into concise 30-point embeddings, capturing user behavior “essence” while sustaining 99% information integrity.</li><li><strong>High-Speed Retrieval using FAISS</strong> — The last one was to facilitate real-time seed audience matching. We utilized FAISS (Facebook AI Similarity Search), the high-speed retrieval-optimized vector database, to conduct the nearest-neighbor search on our user embeddings. With this, we can determine the most suitable lookalike audiences in an instant, making high-scale analysis possible and effective.</li></ul><p>Our solution transforms high-volume complex data into actionable and meaningful audience profiles, facilitating quick lookalike discovery and driving accurate personalization straightforwardly increasing campaign ROI.</p><h4>Impact and Takeaways</h4><p>This new approach offers immense technical benefits and immediate business effects for Engineering leaders and Product owners alike.</p><ul><li><strong>Unlock Scale with Intelligence (LLMs):</strong> LLMs automatically sort and process unstructured datasets with ease, eliminating thousands of man-hours of work, lowering the cost of processing, and building richer user profiles — leading to more intelligent targeting and higher ROI.</li><li><strong>Speed and Scale (Autoencoders + FAISS): </strong>Scaling with vector searches in neural embeddings, scaling hundreds of millions of users with zero decrease in speed. Enabling quicker campaign deployment or finding lookalike audiences, making it more agile.</li><li><strong>Simplify and Succeed (Centroid Querying): </strong>Instead of querying for every single identifier in a seed audience, which could amount to thousands of queries, we precalculate what we call the “centroid,” a single vector representing the mathematical average of all users. We then conduct a single search for the identifiers closest to this average profile. This cuts computational costs exponentially and simplifies the query protocol, making it easy for teams to test, iterate, and refine campaigns quickly.</li></ul><p><strong>Why This Matters Now</strong></p><p>In a world where third-party cookies are falling apart and privacy laws are becoming increasingly stringent, the ad industry is finding itself losing its traditional sources of signals. The ad industry is in dire need of a privacy-aware and scalable solution that can replace user-level tracking. This solution acts as that bridge.</p><h4>Conclusion</h4><p>Look-alike modeling is evolving beyond blunt geographic or demographic proxies into behavior-driven intelligence. Our IP-to-IP pipeline shows that advertisers can reach not just more people but the right people.</p><p>This system fundamentally changes the trade-off between reach and relevance, providing advertisers with a clear path to enhanced ROI, greater campaign agility, and the behavioral precision needed to win in a competitive landscape.</p><h3>References</h3><ul><li><a href="https://github.com/facebookresearch/faiss">Facebook AI Similarity Search (FAISS)</a></li><li><a href="https://science.sciencemag.org/content/313/5786/504">Autoencoders for Dimensionality Reduction</a></li><li><a href="https://arxiv.org/abs/2005.14165">LLMs in Feature Engineering</a></li><li><a href="https://dl.acm.org/doi/abs/10.1145/3357384.3357807">Adversarial Factorization Autoencoder for Look-alike Modeling</a></li></ul><blockquote>I am Kuntal Mudi, I work as a Senior Data Scientist(PDS) in MIQ. Outside of work, I enjoys playing computer games and cricket and likes up-skilling regularly on the technology space. I also love listening to music and playing chess.</blockquote><blockquote>I’m Bala Saatvik. I’m really interested in AI and intelligent systems, particularly Agentic AI, and I enjoy exploring how these technologies can be used to build smarter, more autonomous solutions for real-world challenges.Outside of work, I love traveling, spending time with my pets, and reading Medium blogs in my free time to learn about new ideas, technology trends, and different perspectives.</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=bd68ebeaaef2" width="1" height="1" alt=""><hr><p><a href="https://medium.com/miq-tech-and-analytics/from-proxies-to-behavior-building-scalable-look-alike-audiences-with-ip-level-intelligence-bd68ebeaaef2">From Proxies to Behavior: Building Scalable Look-Alike Audiences with IP-Level Intelligence</a> was originally published in <a href="https://medium.com/miq-tech-and-analytics">MiQ Tech and Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How Geofence Targeting Unlocks Precision for Modern Ad Campaigns]]></title>
            <link>https://medium.com/miq-tech-and-analytics/how-geofence-targeting-unlocks-precision-for-modern-ad-campaigns-1df3b95f4662?source=rss----3ad124eebfe5---4</link>
            <guid isPermaLink="false">https://medium.com/p/1df3b95f4662</guid>
            <category><![CDATA[ad-targeting]]></category>
            <category><![CDATA[adtech]]></category>
            <category><![CDATA[analytics]]></category>
            <category><![CDATA[ad-campaign]]></category>
            <category><![CDATA[geofence]]></category>
            <dc:creator><![CDATA[Rhushikesh Chavan]]></dc:creator>
            <pubDate>Wed, 10 Dec 2025 08:14:17 GMT</pubDate>
            <atom:updated>2025-12-10T08:14:16.015Z</atom:updated>
            <content:encoded><![CDATA[<blockquote><a href="https://medium.com/u/5a101d4eced1">Rhushikesh Chavan</a>, Product analyst, MiQ</blockquote><p><strong><em>What if your ads knew where your customers were and how to address them at the right time?</em></strong><br><strong>The Power of Being in the Right Place at the Right Time</strong></p><p>In today’s hyper-digital age, attention is money. Brands are constantly battling for a few seconds of focus, and traditional targeting strategies like demographics or interests simply aren’t enough.</p><p>To cut through the noise, marketers require an emerging superpower: <strong>location intelligence</strong>. That’s where <strong>geofence targeting</strong> comes in. It blends physical presence with digital behavior and allows brands to appear not only online but offline too, exactly where their audience is.</p><h4>What is Geofence Targeting?</h4><p>It’s a location-based targeting that places a virtual fence, <strong>“geofence”</strong>, around a physical space. When a person enters or is present within that space with their phone or other device, it triggers an action, such as showing them an ad, placing them in an audience segment, or sending them a notification.</p><p><strong>Example</strong><em>: Geofencing a block near a popular café in Surry Hills at 9 AM on a workday.</em></p><h4>How It Works</h4><ul><li>You target a specific location, eg, a stadium, a shop, or even a hand-drawn polygon.</li><li>The user enters this place with location services enabled, and the system identifies them (through GPS or Wi-Fi).</li><li>Your ad is served in the moment, or the user is put into a pool to be retargeted later.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/512/1*znX6BrylFwDfCCRfhLMx0A.png" /></figure><p>The best part? It’s invisible, automatic, and very powerful.</p><h4>Why Geofencing Works: Marketing, But Smarter</h4><p>Let’s be real, attention spans are decreasing. If you can’t reach someone at the right moment, you’ve lost them.</p><p><strong>Geofencing delivers:</strong></p><ul><li><strong>Hyper-Relevance<br></strong>Individuals are more likely to engage with a message that reflects their perspective. A lunch offer when they’re 100m from your store? Perfect timing.</li><li><strong>Real-World Outcomes<br></strong>It connects the dots between digital impressions and physical footfall. Geofencing influences store visits, reservations, and conversions.</li><li><strong>Competitive Edge<br></strong>You can target people near <em>competitor</em> locations, target footfall, or build brand visibility.</li></ul><p><strong>Why now?</strong></p><p>With third-party cookies disappearing and advertisers shifting toward more context-driven strategies, geofencing has become increasingly important. Precise location intelligence is now one of the most dependable ways to reach the right audience in today’s privacy-focused advertising landscape.</p><h4>Real-World Use Cases: From Retail to Politics</h4><p>The potential for uses is limitless. Here’s how brands are applying geofencing today:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/724/1*HZteGVs5hSXQ3BnjHtle0A.png" /></figure><h4>How MiQ is Using Geofence Targeting in Real Life?</h4><p>Standard DSP targeting has a ceiling. When restricted to basic postcodes, brands often bleed budget on irrelevant audiences. We refused to accept those limits.</p><p>In our recent campaigns in Australia, we worked around the usual DSP geo limits by building our own setup that feeds detailed polygon files straight into the platforms. This lets us create precise geofence rail segments that standard tools don’t normally allow. This didn’t just tweak our targeting; it revolutionized it.</p><p>From high-stakes Federal Elections to granular regional campaigns, we unlocked the ability to target down to the electorate level.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/512/1*eMjVAU45ZjccTIns5Exujw.png" /></figure><h4>Result of the Geo-Fence Campaigns</h4><ol><li><strong>Electorate Level Campaign Performance</strong><br>The setup made it really easy for the client to check their main KPIs, for both the candidate and the electorate. We instantly tell which areas were performing well and which need a bit more push or support. Using these insights, we fine-tuned our strategy and focused resources and budget where they would make the biggest difference.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/512/1*UGZwX0LSk5IcmfRjY_nKaQ.png" /></figure><p><strong>2. Precise Targeting</strong></p><ul><li><strong>Hyper-local Precision:</strong> Instead of using wide targeting zones, we narrowed things down to particular local areas so the ads reached the exact people we wanted.</li><li><strong>Smarter Efficiency:</strong> This approach helped us deliver almost <strong>90%</strong> of our impressions inside the exact polygons we set up.</li><li><strong>Cutting the Waste:</strong> Using our own custom polygons (geofence) targeting helped us trim more than 30% of ad spend that would’ve otherwise been wasted.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/512/1*oT7Yigxu17W0Aa8fFT2bag.png" /></figure><p><strong>Best Practices for Geofence Campaigns</strong></p><p>Want to win with geofencing? Here’s what you need to get right:</p><p><strong>1. Be Specific, But Not Too Narrow<br></strong>A 200m radius around your store may be too narrow. A 3km radius may be too wide. Experiment with different shapes and sizes of geofences — custom polygons will usually outperform circles.</p><p><strong>2. Time It Right<br></strong>Serve breakfast offers in the morning. Push promos when competitors are busiest. Align your ad timing in sync with user behavior.</p><p><strong>3. Measure What Matters<br></strong>Monitor outcomes not only by impressions and clicks, but by visits to the store, conversions, and footfall lift.</p><h4>A Word on Privacy (Because It Matters)</h4><p>Privacy isn’t a checklist for us; it’s a priority. Every tool that MiQ creates is designed with privacy in mind. To ensure everyone’s safety, we use only anonymised, opt-in location data for our geofencing and adhere strictly to key international laws such as the CCPA and GDPR.</p><h4>Final Thoughts</h4><p>Geofence targeting is a tactical layer that enhances your audience targeting, bidding strategy, and creative planning; it is not an extra line in your media plan.</p><p><strong>“On a map, location is more than just a point. It’s a moment, and marketing magic happens in moments.”</strong></p><blockquote>I’m Rhushikesh Chavan, work as a Product Analyst at MiQ, where I build and optimize ad-tech products that solve real business challenges. Outside of work, you’ll usually find me traveling, exploring new places, or enjoying outdoor games. I love anything that gets me moving and discovering something new.</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1df3b95f4662" width="1" height="1" alt=""><hr><p><a href="https://medium.com/miq-tech-and-analytics/how-geofence-targeting-unlocks-precision-for-modern-ad-campaigns-1df3b95f4662">How Geofence Targeting Unlocks Precision for Modern Ad Campaigns</a> was originally published in <a href="https://medium.com/miq-tech-and-analytics">MiQ Tech and Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Balancing Tech Debt and Product Delivery]]></title>
            <link>https://medium.com/miq-tech-and-analytics/balancing-tech-debt-and-product-delivery-cefab266fceb?source=rss----3ad124eebfe5---4</link>
            <guid isPermaLink="false">https://medium.com/p/cefab266fceb</guid>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[product-management]]></category>
            <category><![CDATA[product-development]]></category>
            <category><![CDATA[management]]></category>
            <category><![CDATA[software-engineering]]></category>
            <dc:creator><![CDATA[Chandan Prakash]]></dc:creator>
            <pubDate>Mon, 17 Nov 2025 08:47:47 GMT</pubDate>
            <atom:updated>2025-11-17T08:47:46.494Z</atom:updated>
            <content:encoded><![CDATA[<blockquote><a href="https://medium.com/u/df6b2dde50ab">Chandan Prakash</a>, <em>Associate Engineering Manager, MiQ</em></blockquote><p>There’s an old saying: <em>“If you don’t schedule time for maintenance, your systems will schedule it for you and usually at the worst possible time.”</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/512/1*WFffE1xCxHL5hfNgG7pt7w.png" /><figcaption>Fig 1: Features vs. Tech Debt — striking equilibrium.</figcaption></figure><p>As engineering teams scale rapidly and AI accelerates product cycles, the tug-of-war between shipping fast and staying stable has never been sharper. Every release brings a choice — deliver now or invest in tomorrow’s reliability.</p><p>Too much focus on delivery, without correct design architecture, may end up with a brittle codebase that’s painful to work with. And, too much refactoring makes our product roadmaps stall while the business waits.</p><h4>Tech Debt Isn’t Always Bad</h4><p>We used to think of tech debt as a huge task and heavy on resources. But in reality, it’s often a <strong>deliberate choice</strong>, a trade-off to move fast. Like financial debt, where you pay interest. The more you delay paying the interest, the interest compounds.</p><ul><li>Features take longer to ship.</li><li>Bugs multiply and get harder to debug.</li><li>Developers start dreading the codebase.</li><li>Stability takes a hit.</li></ul><p>On the flip side, we obviously can’t let product delivery come to a halt while we clean every corner of the system. So the question becomes: <strong>how do we make this work to achieve both?</strong></p><p>At <strong>MiQ</strong>, our engineering teams have faced this exact tension across products like TV Intelligence. TV Intelligence is a <strong>comprehensive TV planner tool</strong> for Sellers, where clients can get detailed insights about top ads, reach of their brands across various channels, and compare with competitors.</p><p>What follows are the habits and frameworks that helped us stay balanced:</p><h4>1. Create a Shared Language</h4><p>We started by aligning the entire team on what “tech debt” means. Vague complaints like <em>“this code is messy or complex”</em> don’t help. What did work better was documenting specific, actionable issues like:</p><ul><li>The <strong>impact</strong> (slower velocity, onboarding friction, more bugs)</li><li>The <strong>risks or bottlenecks</strong> to future roadmap items and classifying them into <strong>foundational, localized, or blocking </strong>categories.</li></ul><p>We built a simple <strong>debt registry</strong> with a clear flag on what and how it could affect other features every quarter.</p><h4>2. Considering Tech Debt in Every Sprint</h4><p>We’ve stopped treating tech debt as a major separate epic and instead made it part of our regular sprint planning. Here’s how:</p><ul><li>Each sprint can have <strong>tech debt bandwidth </strong>(for example, 15–20% of story points)</li><li>A few of them can be <strong>coupled with the new feature tickets</strong> when feasible</li></ul><p>This ensured that progress is continuous without requiring long “debt-only” cycles or quarters.</p><h4>3. Use Feature Development as a Refactoring Trigger</h4><p>Every new feature we build is a chance to <strong>“leave the codebase better than we found it”</strong>.</p><p>For example:</p><ul><li>Refactor a service module if you’re touching it for a new feature</li><li>Improve test coverage when adding new business logic</li><li>Move towards a shared design pattern when extending components</li><li>Anything that could lead to the rewriting of the code later due to other features needs to be refactored now.</li></ul><p>This strategy reduced resistance to cleanup and allowed small wins to accumulate.</p><h4>4. Connect Tech Debt Outcomes to Business Outcomes</h4><p>The fastest way to get the Product team on board with tech debt cleanup is to link it directly to business value.</p><p>For example:</p><ul><li>Fixing the code that helps cut dashboard load time by 80%.</li><li>Restructuring a module that will unblock new features to be implemented faster.</li><li>Removing duplicate logic will speed up new data onboarding by 30%.</li><li>Failing to decouple a module would result in data inconsistency and a complex implementation.</li></ul><p>When framed this way, tech debt stops sounding like an engineering-only problem and becomes a shared priority across teams.</p><h4>5. Create Space for Larger Refactor Projects</h4><p>Some types of debt can’t be incremental, such as moving to a new architecture, consolidating APIs, or switching libraries. For these, the approach is to:</p><ul><li>Break the entire effort into smaller and testable chunks that can be deployed safely, without affecting the whole.</li><li>Use feature flags to roll out changes gradually.</li><li>Plan these projects in buffer periods after major releases.</li></ul><p>This ensures even large refactors can be delivered without putting timelines at risk.</p><h4>6. Celebrate the Invisible Wins</h4><p>Refactoring, cleanup, and architecture improvements often go unnoticed — unless you highlight them.</p><p>In our case:</p><ul><li>We highlight them as <strong>“Tech Wins” </strong>for every quarter.</li><li>Demo important refactorings in sprint reviews (just like features).</li><li>Calling out developers who improved shared infra/tools in monthly shoutouts.</li></ul><p>Over the past few quarters, we at the TV Intelligence team of MiQ have tackled some long-standing tech debts, which improved our stability and performance:</p><ol><li><strong>Domain-Driven Design for TV Intelligence:<br></strong>We refactored the backend into modular domains, making it more scalable, easier to manage, and faster to onboard new geographies.</li><li><strong>TV Intelligence UI Migration to TanStack Query:</strong><br>We moved UI state management from Redux to TanStack Query, cutting dashboard load time from 10 to 2 seconds for a faster, smoother experience.</li><li><strong>Unified Brand Registry Integration:</strong><br>TV Intelligence now connects to a central brand registry, removing duplicate data and streamlining workflows.</li><li><strong>Unified Custom Ads Manage Service:</strong><br>We unified political and non-political ad uploads into one service, eliminating extra pipelines and simplifying maintenance.</li></ol><p><strong>Conclusion:</strong><br>Balancing tech debt and delivery isn’t a one-time act; it’s a cultural muscle. For us at <strong>MiQ</strong>, the goal isn’t to have zero debt, but to make every line of code a little stronger than the one before.</p><blockquote>Chandan is an Associate Engineering Manager at MiQ, working from the Bangalore office. Delivery manager for Advanced TV capability. Super adventurous, he loves challenging himself through trekking, sports, and bike rides. Skilled photographer.</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=cefab266fceb" width="1" height="1" alt=""><hr><p><a href="https://medium.com/miq-tech-and-analytics/balancing-tech-debt-and-product-delivery-cefab266fceb">Balancing Tech Debt and Product Delivery</a> was originally published in <a href="https://medium.com/miq-tech-and-analytics">MiQ Tech and Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Building a Natural Language Interface for Apache Pinot with LLM Agents]]></title>
            <link>https://medium.com/miq-tech-and-analytics/building-a-natural-language-interface-for-apache-pinot-with-llm-agents-6cb2fa96cb66?source=rss----3ad124eebfe5---4</link>
            <guid isPermaLink="false">https://medium.com/p/6cb2fa96cb66</guid>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[genai]]></category>
            <category><![CDATA[ai-agents-in-action]]></category>
            <category><![CDATA[llm-agent]]></category>
            <category><![CDATA[apache-pinot]]></category>
            <dc:creator><![CDATA[Abhay Kumar]]></dc:creator>
            <pubDate>Thu, 21 Aug 2025 09:33:50 GMT</pubDate>
            <atom:updated>2025-08-21T09:33:50.500Z</atom:updated>
            <content:encoded><![CDATA[<blockquote><a href="https://medium.com/u/51036c717659">Abhay Kumar</a>, Manager, Data Science, <a href="https://medium.com/u/9f3cfac17c01">Ajay Anil Kumar</a>, Data Scientist I</blockquote><p><strong>How MiQ leverages Agentic AI for natural language conversations with SQL Databases</strong></p><p>In the high-speed world of digital advertising, an account manager needs answers, now. Why isn’t a campaign working? What’s underperforming and where? The clock’s ticking, and delays cost impact. Traditionally, getting to the root of campaign performance meant asking an engineer for a deep dive into complex databases, from traditional SQL servers to real-time systems like Apache Pinot. That process — and the waiting — is no longer good enough. At MiQ, we’re building a new way for our teams to get insights, driven by a specific use-case: a conversational chat agent to derive insights from our data.</p><p>With Agentic AI, we’re putting intelligent, conversational assistants in the hands of our stakeholders, no code, no SQL, and no waiting. These AI agents don’t just answer, they understand.</p><p><strong>The Challenge: From Natural Language to Pinot</strong></p><p>The fundamental hurdle is translating language used by our teams into precise SQL queries that Pinot can execute. While LLMs excel at understanding human language, directly asking them to generate SQL can be unreliable. For instance, if a user asks for “active campaigns,” a generic LLM might not know whether “active” refers to campaigns with recent ad spend or those simply marked as “live” in the database, leading to an incorrect query.</p><p>We need a system that not only grasps the intent behind the question but also understands the intricacies of our Pinot database — its structure, the type of data in each column, and how different pieces of information relate to each other. Furthermore, the system needs to handle follow-up questions, refine queries based on initial results, and gracefully recover from any errors that might occur.</p><p><strong>From Language to Action</strong></p><p>To solve this, we employ an LLM agent framework. An LLM agent is a system that combines a Large Language Model (LLM) with tools it can use to find answers and take action. Think of it as an intelligent assistant that can understand a request, decide which tool to use (like a query generator), execute that tool, and determine the next step.</p><p>To build this, we utilize Google’s Agent Development Kit (ADK). The ADK is a set of tools and libraries that helps developers build and customize these agents more efficiently, providing powerful orchestration capabilities to manage the conversation and tool use.</p><p><strong>What is an LLM Agent?</strong></p><p>An LLM agent is a system that combines an LLM with orchestration and tool-calling capabilities. In practice, this means the agent can:</p><ul><li>Understand your requests.</li><li>Decide which tools to use to fulfill your request.</li><li>Execute those tools with the correct arguments.</li><li>Process the output from the tools.</li><li>Determine the next steps, which might involve calling another tool, refining the query, or providing a final answer.</li></ul><p><strong>Here’s a diagram illustrating the basic concept (Fig 1):</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*tT3UpgysP2uPyieK" /></figure><p><strong>Workflow</strong></p><p>The following diagram illustrates the overall flow of the system (Fig 2):</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Wn6LrrHkFJOP2MtZ" /></figure><p>Here’s how our chat agent solves the problem, step-by-step. The entire process is managed by the brain of the operation: an <strong>LLM Agent</strong> built using Google’s ADK. This agent orchestrates the entire workflow, manages conversational memory, and decides which tools to use and when.</p><ol><li><strong>User Query:</strong> An account manager asks in plain English: “Show me the top 10 performing campaigns in the last week.”</li><li><strong>Agent Calls the NL2SQL Tool:</strong> The LLM Agent receives the question and determines it needs a SQL query. It calls the first tool in its arsenal: the <strong>NL2SQL Tool</strong>. This tool takes the user’s natural language and our Pinot database metadata as input and, using Gemini, generates the precise SQL query needed.</li><li><strong>Agent Calls the Verification Tool:</strong> With the SQL query now in hand, the agent knows it must be executed. It calls the next tool: the <strong>Verification Tool</strong>. This tool first validates the query’s parameters using the <strong>sql-rail</strong> python package. If the parameters are invalid, it provides feedback so the agent can orchestrate a correction. If valid, the tool executes the query against our Apache Pinot database.</li><li><strong>Agent Delivers the Answer:</strong> The Verification Tool sends the data from Pinot back to the LLM Agent. The agent processes these results and formulates a clear, concise answer that directly addresses the account manager’s original question.</li></ol><p>This cycle of understanding the user, figuring out the right tools, using those tools, and then responding continues until the agent has provided a satisfactory answer.</p><p><strong>Key Observations and Benefits</strong></p><ul><li><strong>Automated Error Resolution:</strong> The LLM agent can automatically detect and correct errors in the generated SQL, leading to more robust query execution.</li><li><strong>Follow-up Query Handling:</strong> The agent’s conversational memory allows it to understand and correctly interpret follow-up questions, providing a more natural and interactive experience.</li><li><strong>Complex Query Breakdown:</strong> The agent can break down complex user requests into multiple, simpler SQL queries, improving accuracy and efficiency.</li></ul><p><strong>Conclusion</strong></p><p>By combining LLM agents with Apache Pinot, we’re enabling faster, more natural data exploration across our business. This capability is a key step towards our broader Agentic AI vision at MiQ.</p><p><strong>References:</strong></p><p><a href="https://google.github.io/adk-docs/">https://google.github.io/adk-docs/</a></p><p><a href="https://pypi.org/project/sql-rail/">https://pypi.org/project/sql-rail/</a></p><blockquote>Abhay leads the Data Science team at MiQ’s Centre of Excellence in Bangalore. When he’s not building AI-driven solutions, you’ll find him pursuing his social entrepreneurial ventures or exploring the cosmos from his terrace on any given night. <br>Ajay is a Data Scientist at MiQ’s Centre of Excellence in Bangalore, where he focuses on developing generative AI solutions. In his free time, he loves to travel and explore new places.</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6cb2fa96cb66" width="1" height="1" alt=""><hr><p><a href="https://medium.com/miq-tech-and-analytics/building-a-natural-language-interface-for-apache-pinot-with-llm-agents-6cb2fa96cb66">Building a Natural Language Interface for Apache Pinot with LLM Agents</a> was originally published in <a href="https://medium.com/miq-tech-and-analytics">MiQ Tech and Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>